Trying to get property of non-object

Status
Niet open voor verdere reacties.

TheJjokerR

Gebruiker
Lid geworden
25 apr 2008
Berichten
104
Ik probeer PHP te leren en het gaat me tot nu toe niet echt goed af, ik blijf fouten krijgen die ik niet begrijp omdat het de ene keer wel werkt en de andere keer niet.

Ik krijg nu deze fouten:
Code:
Notice: Trying to get property of non-object in /www/rack111.com/t/h/e/thejjokerr/htdocs/brainless/page_register.php on line 40

Notice: Trying to get property of non-object in /www/rack111.com/t/h/e/thejjokerr/htdocs/brainless/page_register.php on line 53

Notice: Trying to get property of non-object in /www/rack111.com/t/h/e/thejjokerr/htdocs/brainless/page_register.php on line 80
Registration Successful, Welcome new member! You can now login to your new account.

Hij werkt bijna helemaal, hij checked of de naam al bestaat, waneer die bestaat is er geen foutmelding, wat gek is want het word op dezelfde regel(40) gedaan als bij de foutmelding.
Als hij kijkt of het email adres al bestaat werkt het niet, hij negeert het gewoon.

Hier is het deel van de code dat relevant is:
(De regelnummers van de foutmeldingen staan erachter in comment)
PHP:
//Check if username already exists... 

 $q2 = mysql_query("SELECT * FROM `members` WHERE `username` = '".$_POST['username']."'");
	$q3 = mysql_fetch_object($q2);
   
    if(strtolower($q3->username) == strtolower($_POST['username'])) {  //Regel 40
		die('<div id="post">Sorry, but the username "'.$q3->username.'" is taken, please choose another.</div>');
	}
	
//Check if email is in already in use
	 //First check if it's a valid email:
	if( !strpos($_POST['email'], "@") !== false ) {
		die("<div id='post'>Error: Invalid Email.</div>");
		}
	if( !strpos($_POST['email'], ".") !== false ) {
		die("<div id='post'>Error: Invalid Email.</div>");
		}
	//Now see if it's already in the database:
    if($q3->user_email == $_POST['email']) {                //regel 53
		die('div id="post">The E-Mail adres "'.$q3->user_email.'" is already being used by another user.</div>');
	}


//PASSWORD

if(!$_POST['password']) {
  	 die("<div id='post'>Error: Password field was blank</div>");
	 }
  if(!$_POST['verify_password']) {
     die("<div id='post'>Error: Verify Password field was blank.</div>");
	 }
  if($_POST['password'] != $_POST['verify_password']) { 
  	 die("<div id='post'>Error: The passwords do not match.</div>");
	 }
  if(strlen($_POST['password']) < 6 ) {
     die("<div id='post'>Error: Your password is too short. Must be 6 or more characters in length.</div>");
	 } 

//ADD NEW MEMBER

$insert ="INSERT INTO `members` (username, user_password, user_email, user_regdate) VALUES ('".$_POST['username']."', '".md5($_POST['password'])."', '".$_POST['email']."', '".date('d/m/Y-H:i:s')."')";
 
 $insert2 = mysql_query($insert);
   if(!$insert2) die(mysql_error());
 
echo("<div id='post'>Registration Successful, Welcome new member! You can now login to your new account. $q3->username </div>");    //Regel 80

Ik denk dat ik er iets mis is met de 3e en 4e regels die je hierboven ziet.

Alvast bedankt.

PS: Hij schrijft wel gewoon naar de database..
 
Laatst bewerkt:
Foutafhandeling ontbreekt in je code, wellicht zit het daarin.

http://wiki.phpfreakz.nl/MySQL_Foutafhandeling_In_PHP

Verder: dit is niet de juiste manier om te checken of een username al bestaat. zet een UNIQUE-constraint op de username-column en kijk bij de INSERT of je een 1064 Duplicate Entry-melding krijgt.
 
Thanks, maar ik ben echt een noob wat betreft PHP, zou je mischien in mijn script aanwijzingen kunnen geven dat ik op weg kan?


EDIT: Laat maar, ik snap het nu, heel erg bedankt voor je hulp.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan