Wert übergeben bzw lesen?
DiamondDog
- php
Hallo Leute,
ich hab mir da ne Art Captcha gebastelt, wo ich gut mit zurecht komme.
Mein Problem ist nur, ich weiß nicht wi, ich den Wert der aus der Captcha.php in meine index.php bekomme um ihn zu vergleichen.
Hier mal der Code der captcha.php:
<?
srand ((double) microtime() * 1000000);
$zufallszahl = rand(1000,9999);
$pic=ImageCreate(38,30); //(breite, höhe)
$col1=ImageColorAllocate($pic,0,0,0);
$col2=ImageColorAllocate($pic,255,255,255);
ImageFilledRectangle($pic, 0, 0, 500, 30, $col2);
ImageString($pic, 3, 5, 8, $zufallszahl, $col1);
Header("Content-type: image/jpeg");
ImageJPEG($pic);
ImageDestroy($pic);
?>
in der index.php hab ich dann noch das hier:
<img src="kontakt/captcha.php" border="0" title="Sicherheitscode">
Kann mir vll jemand Helfen das ich den Wert $zufallszahl, in die index.php bekomme?
Danke schon mal fürs Helfen.
Mfg Dog
PS:
Ich weiß ich weiß, es gibt 100000 Tutorials aber irgend wie funktiniert das bei mir nicht so und das is bis jetzt das erste was ich hinbekommen habe was funktioniert. Nur halt weiß ich nciht wie ich den Wert in die index.php bekomme.
Hi, wenn du die "captcha.php" in der "index.php" einbindest, dann müsstest du auf die Werte der "captcha.php" zugreifen können, weil sie dann global bekannt sind. Oder arbeite mit Session.
Hi, wenn du die "captcha.php" in der "index.php" einbindest, dann müsstest du auf die Werte der "captcha.php" zugreifen können, weil sie dann global bekannt sind. Oder arbeite mit Session.
Ok hab ich jetzt versucht, leider stimmen das Bild und die Zahl dann nicht überein.
Hier mal die cpatcha.php:
<?
srand ((double) microtime() * 1000000);
$zufallszahl = rand(1000,9999);
session_start();
$_SESSION['zufallszahl'] = $zufallszahl;
$pic=ImageCreate(38,30); //(breite, höhe)
$col1=ImageColorAllocate($pic,0,0,0);
$col2=ImageColorAllocate($pic,255,255,255);
ImageFilledRectangle($pic, 0, 0, 500, 30, $col2);
ImageString($pic, 3, 5, 8, $zufallszahl, $col1);
Header("Content-type: image/jpeg");
ImageJPEG($pic);
ImageDestroy($pic);
?>
und die index.php
<?php
session_start();
// Wurde Abschicken geklickt
if(isset($_POST["Submit"]))
{
// Wir legen eine Variable mit deiner E-Mail
$ihremail = "EMail@gmx.de";
// Lege nun eine leere Variable für Fehler an (wird später benötigt)
$error = "";
// IP-Adresse übertragen
$ip = $_SERVER["REMOTE_ADDR"];
// Host übertragen
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
// Datum und Uhrzeit übertragen
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
// Inhalt aus den Formularen übertragen "Name"
$name = $_POST['name'];
// Inhalt aus den Formularen übertragen "Email"
$email = $_POST['email'];
// Inhalt aus den Formularen übertragen "Betreff"
$betreff = $_POST['betreff'];
// Inhalt aus den Formularen übertragen "ICQ Nummer"
$icq = $_POST['icq'];
// Inhalt aus den Formularen übertragen "Homepage"
$homepage = $_POST['homepage'];
// Inhalt aus den Formularen übertragen "Nachricht"
$text = $_POST['text'];
// Wir bauen eine Funktion die soll die Absender E-Mail überprüfen, ob die gültig ist
// das machen wir mit eregi() wir prüfen nicht nur ob "@" und "." vorhanden ist sondern auch
// 2 bustaben vor "@" und nach dem "@" da sind.
function mailcheck($mail) {
$mail = eregi("^[a-z0-9]+([-_.]?[a-z0-9])
+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $mail); // Hier läuft das ab
return $mail; // wir geben die E-Mail zurück
}
// Jetzt prüfen wir ob die Felder ausgefüllt wurden mit if(empty)
//wenn das feld "Name" nicht ausgefüllt wurde geben wir der leeren $error Inhalt
// Also die Ausgabe "Sie haben keinen Namen angegeben."
if(empty($name)) $error .= "<li>Sie haben keinen Namen angegeben.</li>";
// das gleiche mit "Email"
if(empty($email)) $error .= "<li>Sie haben keine E-Mail angegeben.</li>";
// hier setzen wir unsere oben gebaute Funktion ein wenn E-Mail nicht stimmt dann fehlerausgabe
if(mailcheck($email)) $error .= "<li>Ihre E-Mail Adresse ist ungültig.</li>";
// Betreffwerte in array speichern
$werte_betreff = array("Fehler","Download","Homepage Link","Urheberrecht","sonstiges");
// für das Feld "Betreff"
if(empty($betreff)){ $error .= "<li>Sie haben keinen Betreff ausgewählt.</li>";}else{
if (in_array($betreff, $werte_betreff)){}else{ $error .= "<li>Sie haben einen falschen Betreff angegeben. [$betreff]</li>";}}
// für Nachricht
if(empty($text)) $error .= "<li>Sie haben kein Text angegeben.</li>";
// if(empty($error)) d.h wenn $error leer ist also alles normal ausgefüllt wurde und der Button "Absenden" angeklickt wurde
// Dann springt das runter und wir holen uns die übertragene Daten
if(empty($error)) {
// wir machen das ganze in eine Variable "$nachricht"
$nachricht = "<b>".$uhrzeit."".
"Uhr - ".$datum."</b><br><br>\n".
"<b>Ip:</b> ".$ip."<br>\n".
"<b>Host:</b> ".$host."<br>\n".
"<b>Name:</b> ".$name."<br>\n".
"<b>Email:</b> ".$email."<br>\n".
"<b>ICQ Nummer:</b> ".$icq."<br>\n".
"<b>Homepage:</b> ".$homepage."<br><br>\n".
"<b>Betreff:</b> ".$betreff."<br>\n".
"<b>Nachricht:</b><br> \n".$text;
$subject = "Homepage Kontakt - $betreff";
$header = "From: $email\n";
$header .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";
// hier setzen wir unsere mail() funktion ein das muss genau so ausehen
// mail($anwem,$subject,$den den ganzen inhalt, unbedingt "From:" also von wem)
mail($ihremail,$subject,$nachricht,$header);
}
// hier fragen wir wieder ein Error ein:
if(empty($error)) {
// wir geben dann hier ein dass alles ok ist
echo "<b> Die Nachricht wurde erfolgreich verschickt!</b><br>
<div align=\"left\"><ul>
<li>Name: $name</li>
<li>Email: $email</li>
<li>ICQ Nummer: $icq</li>
<li>Homepage: $homepage</li>
<li>Betreff: $betreff</li>
<li>Nachricht: $text</li>
</ul></div>";
// Wenn es nicht stimmt
} else {
echo "<b>Ihre Nachricht konnte \"nicht\" gesendet werden!</b>
<br><div align=\"left\"><p> Folgende(r) Fehler ist aufgetreten:<ul>$error</ul></p></div>";
}
};// Ende wurde Abschicken geklickt
?>
<head>
<title>Kontakt</title>
<link rel="stylesheet" href="../style/style.css" type="text/css">
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" scroll="yes">
<div align="center">Kontakt</div><br>
<div align="left">
<form action="<?php echo 'index.php?site=kontakt/index'; ?>" method="post">
<table width="100%" border="0" cellpadding="0" cellspacing="2">
<tr>
<td width="10%" align="left"><b>Name:</b></td>
<td width="89%" align="left"><input name="name" type="text" id="name" style="width:200px;" value="<?php echo $name; ?>" /></td>
</tr>
<tr>
<td align="left"><b>E-Mail:</b></td>
<td align="left"><input name="email" type="text" id="email" style="width:200px;" value="<?php echo $email; ?>"/></td>
</tr>
<tr>
<td align="left"><b>ICQ Nummer:</b></td>
<td align="left"><input name="icq" type="text" id="icq" style="width:200px;" value="<?php echo $icq; ?>"/></td>
</tr>
<tr>
<td align="left"><b>Homepage:</b></td>
<td align="left"><input name="homepage" type="text" id="homepage" style="width:200px;" value="<?php echo $homepage; ?>"/></td>
</tr>
<tr>
<td align="left"><b>Betreff:</b></td>
<td align="left">
<select name="betreff" id="betreff" style="width:200px;">
<option value=""></option>
<option <?php if($_POST['betreff'] == 'Fehler' ) { echo 'selected'; } ?> value="Fehler">Fehler</option>
<option <?php if($_POST['betreff'] == 'Download' ) { echo 'selected'; } ?> value="Download">Download</option>
<option <?php if($_POST['betreff'] == 'Homepage Link' ) { echo 'selected'; } ?> value="Homepage Link">Homepage Link</option>
<option <?php if($_POST['betreff'] == 'Urheberrecht' ) { echo 'selected'; } ?> value="Urheberrecht">Urheberrecht</option>
<option <?php if($_POST['betreff'] == 'sonstiges' ) { echo 'selected'; } ?> value="sonstiges">sonstiges</option>
</select></td>
</tr>
<tr>
<td align="left" valign="top">
<b>Nachricht:</b><br>
<img src="../style/bilder/Abstandhalter.gif" width="100" height="10" /></td>
<td align="left"><textarea name="text" cols="50" rows="7" id="name4"><?php echo $text; ?></textarea></td>
</tr>
<tr>
<td align="center" valign="middle">
<img src="kontakt/captcha.php" border="0" title="Sicherheitscode">
<?php echo $_SESSION['zufallszahl']; ?>
</td>
<td align="left"><input type="text" name="sicherheitscode" size="5"></td>
</tr>
<tr>
<td> </td>
<td align="left"><input type="Submit" name="Submit" value="Absenden" />
<input name="reset" type="reset" id="reset" value="löschen" /></td>
</tr>
</table>
</form>
</div>
</body>
Hello,
Hi, wenn du die "captcha.php" in der "index.php" einbindest, dann müsstest du auf die Werte der "captcha.php" zugreifen können, weil sie dann global bekannt sind. Oder arbeite mit Session.
Wieso? Sendest Du jedes Mal dasselbe Captcha?
Von der Generierung zur Nutzung des Vergleichswertes liegt ein Requestzyklus dazwischen!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Kann mir vll jemand Helfen das ich den Wert $zufallszahl, in die index.php bekomme?
auf Deinem Wege: Gar nicht. Aber Du koenntest die Zufallszahl einfach in der index.php genrieren. Sie von dort in das Captcha-Skript zu bekommen, ist naemlich ungleich einfacher :-)
Ggf. sollte die Zufallszahl dann im Captcha-Skript noch modifiziert werden, damit der Inhalt des Captchas nicht im Quelltext der von index.php zurueckgegebenen Ressource lesbar ist - je nachdem, fuer wie schlau Du die Bots haeltst...
Viele Gruesse,
der Bademeister
Hello,
Ggf. sollte die Zufallszahl dann im Captcha-Skript noch modifiziert werden, damit der Inhalt des Captchas nicht im Quelltext der von index.php zurueckgegebenen Ressource lesbar ist - je nachdem, fuer wie schlau Du die Bots haeltst...
Das wär doch 'nen Gag. Du schreibst einfach rein in den Quelltext
<input type="hidden" name="hid[captcha]" value="12345">
<input type="text" name="data[captcha]" size="5">
und pappst ein Bild daneben, auf dem ein Zahl abgebildet ist...
Und dann wartest Du mal drauf, wann der erste Post mit '12345' kommt.
Ich würde ja grölen.
Für den OP wäre es sicherlich besser, er würde eine Session dafür benutzten oder zumindest den Captche-Vergleichswert irgendwie billig verschlüsseln, natürlich so, dass er ihn wieder entschlüsseln kann.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi Tom,
Das wär doch 'nen Gag. Du schreibst einfach rein in den Quelltext
<input type="hidden" name="hid[captcha]" value="12345">
<input type="text" name="data[captcha]" size="5">und pappst ein Bild daneben, auf dem ein Zahl abgebildet ist...
sollte kein Problem sein. Dann noch so einen ausgekluegelten Verschluesselungsalgorithmus wie etwa "addiere 7", und das Ding sollte ganz gut funktionieren :-)
Für den OP wäre es sicherlich besser, er würde eine Session dafür benutzten
Ja sicher. Das war aber gar nicht die Frage hier. Es ging darum, wie sich captcha.php und index.php auf eine Zahl einigen koennen.
Viele Gruesse,
der Bademeister
Hi,
»» Kann mir vll jemand Helfen das ich den Wert $zufallszahl, in die index.php bekomme?
auf Deinem Wege: Gar nicht. Aber Du koenntest die Zufallszahl einfach in der index.php genrieren. Sie von dort in das Captcha-Skript zu bekommen, ist naemlich ungleich einfacher :-)
Ggf. sollte die Zufallszahl dann im Captcha-Skript noch modifiziert werden, damit der Inhalt des Captchas nicht im Quelltext der von index.php zurueckgegebenen Ressource lesbar ist - je nachdem, fuer wie schlau Du die Bots haeltst...
Ok da bin ich auch schon drauf gekommen das ich sie in der index erzeuge, nur dann hab ich das Problem beim prüfen, weil wenn ich auf abschicken klicke wird ja dann eine neue zahl erzeugt und somit is das Ergebniss immer falsch.
captcha.php
<?
session_start();
$zufallszahl = $_SESSION['zufallszahl'];
$pic=ImageCreate(38,30); //(breite, höhe)
$col1=ImageColorAllocate($pic,0,0,0);
$col2=ImageColorAllocate($pic,255,255,255);
ImageFilledRectangle($pic, 0, 0, 500, 30, $col2);
ImageString($pic, 3, 5, 8, $zufallszahl, $col1);
Header("Content-type: image/jpeg");
ImageJPEG($pic);
ImageDestroy($pic);
?>
index.php
<?php
session_start();
srand ((double) microtime() * 1000000);
$zufallszahl = rand(1000,9999);
$_SESSION['zufallszahl'] = $zufallszahl;
// Wurde Abschicken geklickt
if(isset($_POST["Submit"]))
{
// Wir legen eine Variable mit deiner E-Mail
$ihremail = "DiamondDog84@gmx.de";
// Lege nun eine leere Variable für Fehler an (wird später benötigt)
$error = "";
// IP-Adresse übertragen
$ip = $_SERVER["REMOTE_ADDR"];
// Host übertragen
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
// Datum und Uhrzeit übertragen
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
// Inhalt aus den Formularen übertragen "Name"
$name = $_POST['name'];
// Inhalt aus den Formularen übertragen "Email"
$email = $_POST['email'];
// Inhalt aus den Formularen übertragen "Betreff"
$betreff = $_POST['betreff'];
// Inhalt aus den Formularen übertragen "ICQ Nummer"
$icq = $_POST['icq'];
// Inhalt aus den Formularen übertragen "Homepage"
$homepage = $_POST['homepage'];
// Inhalt aus den Formularen übertragen "Nachricht"
$text = $_POST['text'];
// Wir bauen eine Funktion die soll die Absender E-Mail überprüfen, ob die gültig ist
// das machen wir mit eregi() wir prüfen nicht nur ob "@" und "." vorhanden ist sondern auch
// 2 bustaben vor "@" und nach dem "@" da sind.
function mailcheck($mail) {
$mail = eregi("^[a-z0-9]+([-_.]?[a-z0-9])
+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $mail); // Hier läuft das ab
return $mail; // wir geben die E-Mail zurück
}
// Jetzt prüfen wir ob die Felder ausgefüllt wurden mit if(empty)
//wenn das feld "Name" nicht ausgefüllt wurde geben wir der leeren $error Inhalt
// Also die Ausgabe "Sie haben keinen Namen angegeben."
if(empty($name)) $error .= "<li>Sie haben keinen Namen angegeben.</li>";
// das gleiche mit "Email"
if(empty($email)) $error .= "<li>Sie haben keine E-Mail angegeben.</li>";
// hier setzen wir unsere oben gebaute Funktion ein wenn E-Mail nicht stimmt dann fehlerausgabe
if(mailcheck($email)) $error .= "<li>Ihre E-Mail Adresse ist ungültig.</li>";
// Betreffwerte in array speichern
$werte_betreff = array("Fehler","Download","Homepage Link","Urheberrecht","sonstiges");
// für das Feld "Betreff"
if(empty($betreff)){ $error .= "<li>Sie haben keinen Betreff ausgewählt.</li>";}else{
if (in_array($betreff, $werte_betreff)){}else{ $error .= "<li>Sie haben einen falschen Betreff angegeben. [$betreff]</li>";}}
// für Nachricht
if(empty($text)) $error .= "<li>Sie haben kein Text angegeben.</li>";
// für sicherheitscode
if(empty($_POST["code"])) {$error .= "<li>Sie haben kein Sicherheitscode angegeben.</li>";}else{
if($_POST["code"] != $zufallszahl ) $error .= "<li>Sie haben einen falschen Sicherheitscode angegeben. [$zufallszahl]</li>";}
// if(empty($error)) d.h wenn $error leer ist also alles normal ausgefüllt wurde und der Button "Absenden" angeklickt wurde
// Dann springt das runter und wir holen uns die übertragene Daten
if(empty($error)) {
// wir machen das ganze in eine Variable "$nachricht"
$nachricht = "<b>".$uhrzeit."".
"Uhr - ".$datum."</b><br><br>\n".
"<b>Ip:</b> ".$ip."<br>\n".
"<b>Host:</b> ".$host."<br>\n".
"<b>Name:</b> ".$name."<br>\n".
"<b>Email:</b> ".$email."<br>\n".
"<b>ICQ Nummer:</b> ".$icq."<br>\n".
"<b>Homepage:</b> ".$homepage."<br><br>\n".
"<b>Betreff:</b> ".$betreff."<br>\n".
"<b>Nachricht:</b><br> \n".$text;
$subject = "Homepage Kontakt - $betreff";
$header = "From: $email\n";
$header .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";
// hier setzen wir unsere mail() funktion ein das muss genau so ausehen
// mail($anwem,$subject,$den den ganzen inhalt, unbedingt "From:" also von wem)
mail($ihremail,$subject,$nachricht,$header);
}
// hier fragen wir wieder ein Error ein:
if(empty($error)) {
// wir geben dann hier ein dass alles ok ist
echo "<b> Die Nachricht wurde erfolgreich verschickt!</b><br>
<div align=\"left\"><ul>
<li>Name: $name</li>
<li>Email: $email</li>
<li>ICQ Nummer: $icq</li>
<li>Homepage: $homepage</li>
<li>Betreff: $betreff</li>
<li>Nachricht: $text</li>
</ul></div>";
// Wenn es nicht stimmt
} else {
echo "<b>Ihre Nachricht konnte \"nicht\" gesendet werden!</b>
<br><div align=\"left\"><p> Folgende(r) Fehler ist aufgetreten:<ul>$error</ul></p></div>";
}
};// Ende wurde Abschicken geklickt
?>
<head>
<title>Kontakt</title>
<link rel="stylesheet" href="../style/style.css" type="text/css">
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" scroll="yes">
<div align="center">Kontakt</div><br>
<div align="left">
<form action="<?php echo 'index.php?site=kontakt/index'; ?>" method="post">
<table width="100%" border="0" cellpadding="0" cellspacing="2">
<tr>
<td width="10%" align="left"><b>Name:</b></td>
<td width="89%" align="left"><input name="name" type="text" id="name" style="width:200px;" value="<?php echo $name; ?>" /></td>
</tr>
<tr>
<td align="left"><b>E-Mail:</b></td>
<td align="left"><input name="email" type="text" id="email" style="width:200px;" value="<?php echo $email; ?>"/></td>
</tr>
<tr>
<td align="left"><b>ICQ Nummer:</b></td>
<td align="left"><input name="icq" type="text" id="icq" style="width:200px;" value="<?php echo $icq; ?>"/></td>
</tr>
<tr>
<td align="left"><b>Homepage:</b></td>
<td align="left"><input name="homepage" type="text" id="homepage" style="width:200px;" value="<?php echo $homepage; ?>"/></td>
</tr>
<tr>
<td align="left"><b>Betreff:</b></td>
<td align="left">
<select name="betreff" id="betreff" style="width:200px;">
<option value=""></option>
<option <?php if($_POST['betreff'] == 'Fehler' ) { echo 'selected'; } ?> value="Fehler">Fehler</option>
<option <?php if($_POST['betreff'] == 'Download' ) { echo 'selected'; } ?> value="Download">Download</option>
<option <?php if($_POST['betreff'] == 'Homepage Link' ) { echo 'selected'; } ?> value="Homepage Link">Homepage Link</option>
<option <?php if($_POST['betreff'] == 'Urheberrecht' ) { echo 'selected'; } ?> value="Urheberrecht">Urheberrecht</option>
<option <?php if($_POST['betreff'] == 'sonstiges' ) { echo 'selected'; } ?> value="sonstiges">sonstiges</option>
</select></td>
</tr>
<tr>
<td align="left" valign="top">
<b>Nachricht:</b><br>
<img src="../style/bilder/Abstandhalter.gif" width="100" height="10" /></td>
<td align="left"><textarea name="text" cols="50" rows="7" id="name4"><?php echo $text; ?></textarea></td>
</tr>
<tr>
<td align="center" valign="middle">
<img src="kontakt/captcha.php" border="0" title="Sicherheitscode">
<?php echo $zufallszahl; ?>
</td>
<td align="left">
<input name="code" type="text" id="code" size="5" maxlength="4">
</td>
</tr>
<tr>
<td> </td>
<td align="left"><input type="Submit" name="Submit" value="Absenden" />
<input name="reset" type="reset" id="reset" value="löschen" /></td>
</tr>
</table>
</form>
</div>
</body>
Hi,
Ok da bin ich auch schon drauf gekommen das ich sie in der index erzeuge, nur dann hab ich das Problem beim prüfen, weil wenn ich auf abschicken klicke wird ja dann eine neue zahl erzeugt und somit is das Ergebniss immer falsch.
Dann erzeuge halt in dem Falle keine neue Zahl.
MfG ChrisB
Hi,
»» Ok da bin ich auch schon drauf gekommen das ich sie in der index erzeuge, nur dann hab ich das Problem beim prüfen, weil wenn ich auf abschicken klicke wird ja dann eine neue zahl erzeugt und somit is das Ergebniss immer falsch.
Dann erzeuge halt in dem Falle keine neue Zahl.
MfG ChrisB
Hab ich versucht (index.php):
<?php
// Wurde Abschicken geklickt
if(isset($_POST["Submit"]))
{
// Wir legen eine Variable mit deiner E-Mail
$ihremail = "DiamondDog84@gmx.de";
// Lege nun eine leere Variable für Fehler an (wird später benötigt)
$error = "";
// IP-Adresse übertragen
$ip = $_SERVER["REMOTE_ADDR"];
// Host übertragen
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
// Datum und Uhrzeit übertragen
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
// Inhalt aus den Formularen übertragen "Name"
$name = $_POST['name'];
// Inhalt aus den Formularen übertragen "Email"
$email = $_POST['email'];
// Inhalt aus den Formularen übertragen "Betreff"
$betreff = $_POST['betreff'];
// Inhalt aus den Formularen übertragen "ICQ Nummer"
$icq = $_POST['icq'];
// Inhalt aus den Formularen übertragen "Homepage"
$homepage = $_POST['homepage'];
// Inhalt aus den Formularen übertragen "Nachricht"
$text = $_POST['text'];
// Wir bauen eine Funktion die soll die Absender E-Mail überprüfen, ob die gültig ist
// das machen wir mit eregi() wir prüfen nicht nur ob "@" und "." vorhanden ist sondern auch
// 2 bustaben vor "@" und nach dem "@" da sind.
function mailcheck($mail) {
$mail = eregi("^[a-z0-9]+([-_.]?[a-z0-9])
+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $mail); // Hier läuft das ab
return $mail; // wir geben die E-Mail zurück
}
// Jetzt prüfen wir ob die Felder ausgefüllt wurden mit if(empty)
//wenn das feld "Name" nicht ausgefüllt wurde geben wir der leeren $error Inhalt
// Also die Ausgabe "Sie haben keinen Namen angegeben."
if(empty($name)) $error .= "<li>Sie haben keinen Namen angegeben.</li>";
// das gleiche mit "Email"
if(empty($email)) $error .= "<li>Sie haben keine E-Mail angegeben.</li>";
// hier setzen wir unsere oben gebaute Funktion ein wenn E-Mail nicht stimmt dann fehlerausgabe
if(mailcheck($email)) $error .= "<li>Ihre E-Mail Adresse ist ungültig.</li>";
// Betreffwerte in array speichern
$werte_betreff = array("Fehler","Download","Homepage Link","Urheberrecht","sonstiges");
// für das Feld "Betreff"
if(empty($betreff)){ $error .= "<li>Sie haben keinen Betreff ausgewählt.</li>";}else{
if (in_array($betreff, $werte_betreff)){}else{ $error .= "<li>Sie haben einen falschen Betreff angegeben. [$betreff]</li>";}}
// für Nachricht
if(empty($text)) $error .= "<li>Sie haben kein Text angegeben.</li>";
// für sicherheitscode
$zufallszahlX = $_SESSION['zufallszahl'];
if(empty($_POST["code"])) {$error .= "<li>Sie haben kein Sicherheitscode angegeben.</li>";}else{
if($_POST["code"] != $zufallszahlX ) $error .= "<li>Sie haben einen falschen Sicherheitscode angegeben. [$zufallszahl]</li>";}
// if(empty($error)) d.h wenn $error leer ist also alles normal ausgefüllt wurde und der Button "Absenden" angeklickt wurde
// Dann springt das runter und wir holen uns die übertragene Daten
if(empty($error)) {
// wir machen das ganze in eine Variable "$nachricht"
$nachricht = "<b>".$uhrzeit."".
"Uhr - ".$datum."</b><br><br>\n".
"<b>Ip:</b> ".$ip."<br>\n".
"<b>Host:</b> ".$host."<br>\n".
"<b>Name:</b> ".$name."<br>\n".
"<b>Email:</b> ".$email."<br>\n".
"<b>ICQ Nummer:</b> ".$icq."<br>\n".
"<b>Homepage:</b> ".$homepage."<br><br>\n".
"<b>Betreff:</b> ".$betreff."<br>\n".
"<b>Nachricht:</b><br> \n".$text;
$subject = "Homepage Kontakt - $betreff";
$header = "From: $email\n";
$header .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";
// hier setzen wir unsere mail() funktion ein das muss genau so ausehen
// mail($anwem,$subject,$den den ganzen inhalt, unbedingt "From:" also von wem)
mail($ihremail,$subject,$nachricht,$header);
}
// hier fragen wir wieder ein Error ein:
if(empty($error)) {
// wir geben dann hier ein dass alles ok ist
echo "<b> Die Nachricht wurde erfolgreich verschickt!</b><br>
<div align=\"left\"><ul>
<li>Name: $name</li>
<li>Email: $email</li>
<li>ICQ Nummer: $icq</li>
<li>Homepage: $homepage</li>
<li>Betreff: $betreff</li>
<li>Nachricht: $text</li>
</ul></div>";
// Wenn es nicht stimmt
} else {
echo "<b>Ihre Nachricht konnte \"nicht\" gesendet werden!</b>
<br><div align=\"left\"><p> Folgende(r) Fehler ist aufgetreten:<ul>$error</ul></p></div>";
}
}else{
session_start();
srand ((double) microtime() * 1000000);
$zufallszahl = rand(1000,9999);
$_SESSION['zufallszahl'] = $zufallszahl;
};// Ende wurde Abschicken geklickt
?>
<head>
<title>Kontakt</title>
<link rel="stylesheet" href="../style/style.css" type="text/css">
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" scroll="yes">
<div align="center">Kontakt</div><br>
<div align="left">
<form action="<?php echo 'index.php?site=kontakt/index'; ?>" method="post">
<table width="100%" border="0" cellpadding="0" cellspacing="2">
<tr>
<td width="10%" align="left"><b>Name:</b></td>
<td width="89%" align="left"><input name="name" type="text" id="name" style="width:200px;" value="<?php echo $name; ?>" /></td>
</tr>
<tr>
<td align="left"><b>E-Mail:</b></td>
<td align="left"><input name="email" type="text" id="email" style="width:200px;" value="<?php echo $email; ?>"/></td>
</tr>
<tr>
<td align="left"><b>ICQ Nummer:</b></td>
<td align="left"><input name="icq" type="text" id="icq" style="width:200px;" value="<?php echo $icq; ?>"/></td>
</tr>
<tr>
<td align="left"><b>Homepage:</b></td>
<td align="left"><input name="homepage" type="text" id="homepage" style="width:200px;" value="<?php echo $homepage; ?>"/></td>
</tr>
<tr>
<td align="left"><b>Betreff:</b></td>
<td align="left">
<select name="betreff" id="betreff" style="width:200px;">
<option value=""></option>
<option <?php if($_POST['betreff'] == 'Fehler' ) { echo 'selected'; } ?> value="Fehler">Fehler</option>
<option <?php if($_POST['betreff'] == 'Download' ) { echo 'selected'; } ?> value="Download">Download</option>
<option <?php if($_POST['betreff'] == 'Homepage Link' ) { echo 'selected'; } ?> value="Homepage Link">Homepage Link</option>
<option <?php if($_POST['betreff'] == 'Urheberrecht' ) { echo 'selected'; } ?> value="Urheberrecht">Urheberrecht</option>
<option <?php if($_POST['betreff'] == 'sonstiges' ) { echo 'selected'; } ?> value="sonstiges">sonstiges</option>
</select></td>
</tr>
<tr>
<td align="left" valign="top">
<b>Nachricht:</b><br>
<img src="../style/bilder/Abstandhalter.gif" width="100" height="10" /></td>
<td align="left"><textarea name="text" cols="50" rows="7" id="name4"><?php echo $text; ?></textarea></td>
</tr>
<tr>
<td align="center" valign="middle">
<img src="kontakt/captcha.php" border="0" title="Sicherheitscode">
<?php echo $zufallszahl; ?>
</td>
<td align="left">
<input name="code" type="text" id="code" size="5" maxlength="4">
</td>
</tr>
<tr>
<td> </td>
<td align="left"><input type="Submit" name="Submit" value="Absenden" />
<input name="reset" type="reset" id="reset" value="löschen" /></td>
</tr>
</table>
</form>
</div>
</body>
~~~dann erhalte ich immer als Antwort:
Sie haben einen falschen Sicherheitscode angegeben. []
[] heist das dort keine Zahlen drin sind, aber wieso versteh ich nit ganz.
Ok da bin ich auch schon drauf gekommen das ich sie in der index erzeuge, nur dann hab ich das Problem beim prüfen, weil wenn ich auf abschicken klicke wird ja dann eine neue zahl erzeugt und somit is das Ergebniss immer falsch.
Diese Diskussion haben Tom und ich freundlicherweise schon mal vorbereitet :-) Die index.php muss sich die Zahl natuerlich irgendwie merken. Vorzugsweise ohne Umweg ueber den Client, das Stichwort lautet Sessions.
Viele Gruesse,
der Bademeister