Ich finde den Fehler nicht!

tobbimann

Mitglied
Hallo!

Ich sitze hier gerade an meinem "Passwort_vergessen-Script" und es will einfach nicht klappen. Kann vielleicht mal jemand einen kurzen Blick drüber werfen?

PHP:
<? if ((isset($submit)) && ($submit == "zusenden")) { 
				$sql = "SELECT * FROM `i_benutzer` WHERE `email = '".$_POST['email']."'"; 
				$result = mysql_query($sql) OR die(mysql_error());
				
				function pw_generate($length = 8) { 
					$chars_for_pw  = "ABCDEFGHJKLMNPQRSTUVWX";
					$chars_for_pw .= "123456789";
					$chars_for_pw .= "abcdefghijkmnpqrstuvwx";
					$char_control  = "";
					srand((double) microtime() * 1000000);
					for($i=0;$i<$length;$i++) {
						$number = rand(0, strlen($chars_for_pw));
						$char_control .= $chars_for_pw[$number]; }
					return $char_control;  }

				if(mysql_num_rows($result) != 0) { 
					while($row = mysql_fetch_assoc($result)) {  
						$passwort_neu = pw_generate(8);
						$text = "Hallo ".$row['name']."\n
								Du hast ein neues Passwort angefordert, da du dein altes vergessen hast.\n\n
								Dein neues Passwort lautet: ".$passwort_neu."\n\n
								Du kannst dich nun wieder in den internen Bereich einloggen.\n\n
								Viel Spaß\n";
						mail($_POST['email'],"KohlrABI 2005 - dein neues Passwort",$text);
						$sql = "UPDATE `i_benutzer`	SET `pass` = '".md5($passwort_neu)."' WHERE `email = '".$_POST['email']."'"; 
						mysql_query($sql) OR die(mysql_error()); ?>
			  			<td width="430" valign="top" bgcolor="#ACACAC">
						<h1 align="center">&nbsp;</h1>
						<h1 align="center">&nbsp;</h1>
						<h1 align="center">Passwort zugeschickt</h1>
						<p align="center">Dir wurde soeben ein neues Passwort zugeschickt, bitte melde dich mit diesem an und ändere es wieder!</p></td> <? } }
				 else { ?> 	<td width="430" valign="top" bgcolor="#ACACAC">
								<h1 align="center">&nbsp;</h1>
								<h1 align="center">&nbsp;</h1>
								<h1 align="center">Adresse nicht vorhanden</h1>
								<p align="center">Es ist kein Benutzer mit dieser Emailadresse regestriert!</p></td><? } }
			else { ?> <td width="430" valign="top" bgcolor="#ACACAC"><h1 align="center">&nbsp;</h1>
				<h1 align="center">&nbsp;</h1>
				<h1 align="center">Passwort vergessen?</h1>
				<p align="center">Solltest du dein Passwort vergessen haben kannst du hier ein neues anfordern!</p>
				  <div align="center">
				<form action="passwort_vergessen.php" method="post"> 
					<input name="email" type="text" id="email" value="deine@email-adresse.de" size="25" />
					<br />
					<br />
					<input name="zusenden" type="submit" id="zusenden" value="zusenden" />
					<br />            
			  </form></div></td> <? } ?>


besten Dank
 
Ah, sorry. Bin etwas verwirrt gerade.

Also der Fehler ist folgender: Wenn ich die email-Adresse eingebe und den button betätige komme ich wieder auf das Formular zur Eingabe.
 
Code:
if ((isset($submit)) && ($submit == "zusenden"))
der Submitbutton trägt den Namen "zusenden" und nicht "submit".... und die POST-Variablen solltest du auch richtig ansprechen:
Code:
if ((isset($_POST['zusenden'])) && ($_POST['zusenden'] == "zusenden"))
 
OK, ich habe das ganze jetzt den Nachmittag über ruhen lassen und mir jetzt nochmal Zeit genommen. Bei dem Namen des Submit-Button hast du Recht. Das hab ich mal geändert, da ich lieber die obere if-Abfrage benutze.

Nun kommt allerdings noch folgender Fehler, den ich mir nicht erklären kann:

"Unknown column 'email = 'tbn@gmx.de'' in 'where clause'"

wobei tbn@gmx.de die Adresse aus dem Formular ist.

Meine Tabelle sieht so aus:

Code:
CREATE TABLE `i_benutzer` (
  `ID` int(11) NOT NULL auto_increment,
  `nick` varchar(50) NOT NULL default '',
  `pass` varchar(50) NOT NULL default '',
  `level` char(1) NOT NULL default '',
  `name` varchar(50) NOT NULL default '',
  `email` varchar(50) NOT NULL default '',
  `icq` varchar(10) NOT NULL default '',
  `strasse` varchar(50) NOT NULL default '',
  `plzort` varchar(50) NOT NULL default '',
  `telefon` varchar(20) NOT NULL default '',
  `situation` text NOT NULL,
  PRIMARY KEY  (`ID`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;
 
Hallo,

is zwar nun schon 'ne Weile her, aber:
meines Erachtens musst du
`email`=
anstelle von
`email =
schreiben, also SQL sagen, dass der Namen des Datenbankfeldes zu Ende ist. In deinem Falle heißt das Datenbankfeld "email = adr[at]domain.irgendwas"

Schöne Grüße
27apricot
 
Zurück