Problem mit INSERT-Script

Kalma

Erfahrenes Mitglied
Hallo,

das ist wohl so ziemlich das verzwickteste Problem, das ich bisher hatte :(

Ich habe ein Registrierungsformular geschrieben, mit überprüfungen auf richtigkeit, dann der query, dann der upload des Avaters.

Nur, wenn man alles korrekt eingegeben hat, es nicht, die seite bleibt einfach leer, statt weiterzuleiten, oder ne Meldung auszugeben...
Wenn ich jedoch die Überprüfungen weglasse, es....

Ich habe schon Stundenlang gesucht, aber nux gefunden...


Vielleicht findet ihr ja was :suchen:

Hier mein Code:
PHP:
<?php
	//posten
	$rang						= "user";
	$nickname				= $_POST['nickname'];
	$passwort1			= $_POST['passwort1'];
	$passwort2			= $_POST['passwort2'];
	$vorname				= $_POST['vorname'];
	$nachname				= $_POST['nachname'];
	$geschlecht			= $_POST['geschlecht'];
	$herkunft				= $_POST['herkunft'];
	$email					= $_POST['email'];
	$homepage				= $_POST['homepage'];
	$icq						= $_POST['icq'];
	$registriert 		= date("d.m.Y");
	$freetitel			= $_POST['freetitel'];
	
	//gebdatum
	$tag						= $_POST['tag'];
	$monat					= $_POST['monat'];
	$jahr						= $_POST['jahr'];
	$geburtstag			= $tag .".". $monat .".". $jahr;


	//überpfrüfen
	$Query  = "SELECT * FROM user WHERE `nickname`='$nickname'"; //user auslesen
	$Result = mysql_query($Query); //resulten
	$u		= mysql_fetch_array($Result); //variable festlegen - ins bett gehen^^


	if ($u['nickname'] == $nickname)
		{
			header ("location: index.php?section=registrieren&userx=1");
		}
	if (!isset($nickname, $passwort1, $passwort2, $vorname, $nachname, $tag, $monat, $jahr, $email))
		{
			header ("location: index.php?section=registrieren&fehler=1");
		}
	//auf leerstellen prüfen
	elseif (ereg(" ", $nickname))
		{
			header ("location: index.php?section=registrieren&nickleer=1");
		}
	elseif (ereg(" ", $passwort1))
		{
			header ("location: index.php?section=registrieren&passleer=1");
		}
	elseif (ereg(" ", $email))
		{
			header ("location: index.php?section=registrieren&emailleer=1");
		}
	elseif (ereg(" ", $icq))
		{
			header ("location: index.php?section=registrieren&icqleer=1");
		}
	elseif (ereg(" ", $tag))
		{
			header ("location: index.php?section=registrieren&tagleer=1");
		}
	elseif (ereg(" ", $monat))
		{
			header ("location: index.php?section=registrieren&monatleer=1");
		}
	elseif (ereg(" ", $jahr))
		{
			header ("location: index.php?section=registrieren&jahrleer=1");
		}
	//passwörter
	elseif ($passwort1 != $passwort2)
		{
			header ("location: index.php?section=registrieren&pw=1");
		}
	//nickname
	elseif ($nickname == "")
		{
			header ("location: index.php?section=registrieren&nick=1");
		}
	//email
	elseif ($email == "")
		{
			header ("location: index.php?section=registrieren&mail=1");
		}
	//vorname
	elseif ($vorname == "")
		{
			header ("location: index.php?section=registrieren&vor=1");
		}
	//geschlecht
	elseif ($geschlecht == "")
		{
			header ("location: index.php?section=registrieren&geschlecht=1");
		}
	//gebdatum
	elseif (($tag == "") XOR ($monat == "") XOR ($jahr == ""))
		{
			header ("location: index.php?section=registrieren&gebdatum=1");
		}
	//gebdatum (auf zahlen prüfen)
	elseif ($_POST['tag'] != (int)$_POST['tag'])
		{
			header ("location: index.php?section=registrieren&gebdatum2=1");
		}
	elseif ($_POST['monat'] != (int)$_POST['monat'])
		{
			header ("location: index.php?section=registrieren&gebdatum2=1");
		}
	elseif ($_POST['jahr'] != (int)$_POST['jahr'])
		{
			header ("location: index.php?section=registrieren&gebdatum2=1");
		}
	elseif ($jahr < 4)
		{
			header ("location: index.php?section=registrieren&gebdatum3=1");
		}
	//icq überprfüfen
	elseif ($icq == "")
		{
			echo "";
		} 
	elseif ($_POST['icq'] != (int)$_POST['icq']) 
		{
			header ("location: index.php?section=registrieren&icq=1");
		} 
	elseif (!ereg("-", $icq)) 
		{
			header ("location: index.php?section=registrieren&icqf=1");
		}
	//email überprüfen
	elseif (!ereg("!$%&'*+-/{|}~-_", $email)) 
		{
			header ("location: index.php?section=registrieren&email=1");
		}
	//nachname
	elseif ($nachname == "")
		{
			header ("location: index.php?section=registrieren&nach=1");
		} 
	else 
		{
	//wenn alle dateien korrekt eingegeben wurden, kann der User registriert werden :)
	//email anzeigen?
	if (isset($_REQUEST['mail'])) //prüfen, ob die mail-adresse angezeigt werden soll
		{
 			foreach($_REQUEST['mail'] as $mail)
  			{
   				$mail = 1;
  			} //for beenden
		} //if beenden

	//geburtsdatum anzeigen?
	if (isset($_REQUEST['geb'])) //prüfen, ob das gebdatum angezeigt werden soll
		{
 			foreach($_REQUEST['geb'] as $geb)
  			{
  		 		$geb = 1;
  			} //for beenden
		} //if beenden


	//passwort verschlüsseln
	$md5pw			= md5($passwort1); //zur sicherheit, das passwort mit md5 verschlüsseln

	//der query: eintrag in die db
	$User = "INSERT INTO
							user (`rang`, 
				  					`nickname`, 
				  					`passwort`, 
				  					`freetitel`, 
				  					`vorname`, 
				  					`nachname`, 
				  					`geburtstag`, 
				  					`herkunft`, 
				  					`geschlecht`, 
				  					`email`, 			                  
				  					`homepage`, 
				  					`icq`, 
				  					`avater`, 
				  					`registriert`, 
				  					`mail`, 
				  					`geb`)
						VALUES ('$rang', 
			 							'$nickname', 
			 							'$md5pw', 
			 							'$freetitel', 
			 							'$vorname', 
			 							'$nachname', 
			 							'$geburtstag', 
			 							'$herkunft', 
			 							'$geschlecht', 
			 							'$email',             
			 							'$homepage', 
			 							'$icq', 
			 							'images/user/$nickname.jpg', 
			 							'$registriert', 
			 							'$mail', 
			 							'$geb')";


	//das bild hochladen
	$tempname = $_FILES['file']['tmp_name']; 
	$name = $_FILES['file']['name']; 
	$type = $_FILES['file']['type']; 
	$size = $_FILES['file']['size'];  

	$uploadname = "images/user/$nickname.jpg"; //pfad zum bild

	if($size > "2000")  //prüfen, ob die datei größer ist, als 2b
		{ 
    	$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 2 MB!"; 
		}  
	if (empty($error)) 
		{
			move_uploaded_file ($tempname, $uploadname);
			echo "hochgeladen";
    	echo ("hochgeladen"); 
		}
	else 
		{
			foreach ($error as $err) echo ($err."<br>");
		}


	//überprüfen, ob der query richtig ausgeführt wurde, wenn ja, weiterleiten, wenn nicht, fehler
	if (mysql_db_query($DBName, $User, $Link))
		{
			header ("location: index.php?section=registrieren&reg=1"); //wenn alles ok, weiterleiten
		} 
	else 
		{
			header ("location: index.php?section=registrieren&regf=1"); //wenn fehler, zurück mit fehlermeldung
		}

		
		} //else zuende
?>



Danke im Vorraus
David :(
 
Ich würde erstmal den error_reproting auf E_ALL stellen und schauen was dir php ausgibt.
PHP:
<?php
error_reporting( E_ALL);
?>

tObee
 
Hallo,

vielleicht hilft es dir weiter.

Ich bekomme immer die Meldung:

Fehler: Die angegebene E-mail Adresse ist nicht korrekt!

Und jahr < 4 macht meiner Auffassung nach nicht viel Sinn. Du willst wahrscheinlich die Länge prüfen mit strlen()

Gruß.
 
Die Fehlermeldung für die Email kommt, wenn die Email-adresse meinem Script nach nicht korrekt ist...

Ich weiß bis jetzt leider noch nicht, welche Zeichen alle in einer Email-adresse drinne sein dürfen, aber wenn ihr's wisst, könnt ihr mir das sagen^^




Jo, das mit dem jahr < 4 sollte die länge werden...^^
aber daran kann es ja nicht liegen...


David
 
Hallo,

wenn ich es richtig sehe, überprüfst du bislang nur ob die EMail leer ist...

Und dass Feld hatte ich nicht leer gelassen.

Zur Überprüfung von EMail verwende ich:
PHP:
$regEmail = "^[a-zA-Z0-9._-]+@[a-zA-Z0-9-.]+\.[a-zA-Z.]{2,5}$";
$result = preg_match("/$regEmail/",$email);

Gruß.
 
Ich benutze zur überprüfung:

PHP:
elseif (!ereg("!$%&'*+-/{|}~-_", $email)) 
  {
    header ("location: index.php?section=registrieren&email=1");
  }


Hm... aber wie gesagt, das ist ja nicht das problem :(
 
Hallo.

Dies ist schon das Problem, denn hier knallt es. Die Email die ich beim Test eingeben ist korrekt und gültig! Aber ich bekomme die Fehlermeldung, dass die Email nicht korrekt wäre, daher würde ich die Überprüfung mal kontrollieren...

Gruß.
 
cheops hat gesagt.:
Zur Überprüfung von EMail verwende ich:
PHP:
$regEmail = "^[a-zA-Z0-9._-]+@[a-zA-Z0-9-.]+\.[a-zA-Z.]{2,5}$";
$result = preg_match("/$regEmail/",$email);


Hallo,

ma ne ganz doofe frage, wie mach ich das denn dann mit der if-abfrage?
 
Zurück