[PHP] wenn Sicherheitscode richtig, dann Eintrag in die DB speichern?

digiTALE

Lt. Junior Grade
Registriert
Juli 2004
Beiträge
270
Hey,

ich wollte mein Gästebuch vor Spambots schützen indem ich beim Eintragsformular ein Sicherheitscode in das Formular per Bild integriere.

Soweit funktioniert der Sicherheitscode auch und er gibt mir eine Fehlermeldung aus wenn dieser nicht stimmt.

Nur wie bekomme ich das hin das er mir die Daten wie z.B Name, Homepage usw. aus dem Formular in die MySQL Datenbank speichert?

formular.php
PHP:
<html><head>
</head><body>
<?php
$Buchstaben=array "A", "B", "C", "D", "E", "F", "G", "H", "K", "M", "N", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y");
$Zahlen=array("2", "3", "4", "5", "6", "7", "8", "9");

for($i=0, $Code=""; strlen($Code)<6; $i++) {
	if(rand(0, 1)==0 && isset($Buchstaben)) {
		$Buchstabe=$Buchstaben[rand(0, count($Buchstaben))];
		$Code.=$Buchstabe;
		$AngezeigterCode.=$Buchstabe." ";
	}
	else {
		$Zahl=$Zahlen[rand(0, count($Zahlen))];
		$Code.=$Zahl;
		$AngezeigterCode.=$Zahl." ";
	}
}
$AngezeigterCode=trim($AngezeigterCode);

?>
<form action="auswerten.php" method="post">
<input name="Code" type="hidden" value="<?php echo$Code; ?>">Code: <input
maxlength="6" name="EingegebenerCode" size="6" type="text"> <img border="0"
height="50" src="grafischer-code.php?Code=<?php echo$AngezeigterCode; ?>"
width="200"><br><br>Name : <input
type="text" name="name"><br><br>eMail : <input
type="text" name="email"><br><br>
<input type="submit" value="Absenden">
</form>

</body></html>


auswertung.php
PHP:
<html><head>
</head><body>
<?php

if(strtolower($_REQUEST['Code']) == strtolower($_REQUEST['EingegebenerCode'])) {
	
	$MysqlServer = mysql_connect("localhost", "...", "..."); 
	mysql_select_db("test", $MysqlServer);

	$SQL = "INSERT INTO sicherheit (name, email) VALUES (NOW(''),
'".$_REQUEST['name']."', '".$_REQUEST['email']."')";

	mysql_query($SQL, $MysqlServer); 

	if(mysql_affected_rows($MysqlServer) == 1) { 
	?> 
	Dein Eintrag wurde erfolgreich in der Datenbank gespeichert.<a
href="javascript:history.go(-2)">Zurück</a> 
	<?php 
	} 
	else 
	{ 
	?> 
	Dein Eintrag wurde <b>nicht</b> erfolgreich in der Datenbank gespeichert.<a
href="javascript:history.back();">Zurück</a> 
	<?php 
	}
	echo"<br>Der Code wurde richtig eingegeben!";
} 

else
{
	echo"Der Code wurde fehlerhaft eingegeben!";
}

?>
</body>
</html>

Jedenfalls kann er mir die Daten in der auswertung.php wie "Name und eMail" nicht in der Datenbank abspeichern. Wie kann ich das umändern das er das macht !?

mfg digiTALE
 
Ich sehe den fehler auch ncith aber ich veränder mal das script einfach so das es leichter zu debugen sien sollte
Auswertung Script :
PHP:
<html><head>
</head><body>
<?php
print_r($_POST);

if(strtolower($_REQUEST['Code']) == strtolower($_REQUEST['EingegebenerCode'])) {
    
    $MysqlServer = mysql_connect("localhost", "...", "..."); 
    mysql_select_db("test", $MysqlServer);

    $SQL = "INSERT INTO sicherheit (name, email) VALUES (NOW(''),
'".$_REQUEST['name']."', '".$_REQUEST['email']."')";

    mysql_query($SQL, $MysqlServer) or die(mysql_error()); 

    if(mysql_affected_rows($MysqlServer) == 1) { 
    ?> 
    Dein Eintrag wurde erfolgreich in der Datenbank gespeichert.<a
href="javascript:history.go(-2)">Zurück</a> 
    <?php 
    } 
    else 
    { 
    ?> 
    Dein Eintrag wurde <b>nicht</b> erfolgreich in der Datenbank gespeichert.<a
href="javascript:history.back();">Zurück</a> 
    <?php 
    }
    echo"<br>Der Code wurde richtig eingegeben!";
} 

else
{
    echo"Der Code wurde fehlerhaft eingegeben!";
}

?>
</body>
</html>
 
Das kam vom "Print"

Array (
Code:
 => 9SH45S [EingegebenerCode] => 9SH45S [name] => christian [email] => test@mail.de ) Dein Eintrag wurde [b]nicht[/b] erfolgreich in der Datenbank gespeichert.
Der Code wurde richtig eingegeben! 


Also an dem senden kann das nicht liegen. Muss also am Auswertungsscript liegen. Nur weiß ich nicht wo.

mfg digiTALE
 
im mysql query fehlt bei inset die datum spalte weil du gibs als value now() an aber die spalte dafür nicht !
 
Ich danke dir, genau das wars :rolleyes:

thx AlbertLast

mfg digiTALE
 
Zurück
Oben