Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
meikschmidt
Threadersteller
Dabei seit: 29.09.2006
Ort: -
Alter: 46
Geschlecht:
|
Verfasst Mi 06.12.2006 21:56
Titel Zufallscode wird immer als falsch gewertet ? |
|
|
Grüsst euch ...
seit kurzem wird mein gästebuch mit spameinträgen zugemüllt. bisher habe ich die manuel gelöscht. heute habe ich jedoch ein zufallscode hinzugefügt. doch leider finde ich den fehler nicht, der mir immer sagt, das ich einen falschen code eingegeben habe, obwohl ich ihn richtig eintippte.
wäre um unterstützung wirklich sehr dankbar.
hier um das [url="http://www.schmidt-meik.de/gaestebuch.php"]gästebuch[/url]:
Hier das Captcha Code script:
Code: | <?php
session_start();
$chars = "qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM1234567890";
$code = "";
for ($i=1; $i<7; $i++)
{
$code = $code.$chars[mt_rand (0,strlen($chars)-1)];
}
$_SESSION['new_code2'] = $code;
Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Header("Content-type: image/jpeg");
$pic=ImageCreate(100,25); //(breite, höhe)
$col1=ImageColorAllocate($pic,255,255,255);
$col2=ImageColorAllocate($pic,138,138,138);
ImageFilledRectangle($pic, 0, 0, 100, 25, $col2);
ImageRectangle($pic, 1, 1, 98, 23, $col1);
for ($i = 0; $i < 6; $i++)
{
ImageString($pic, mt_rand(3, 5), (14*$i+10), mt_rand(3, 6), substr($code, $i, 1), $col1);
}
ImageJPEG($pic);
ImageDestroy($pic);
?> |
Das gästebuchscrip:
Code: | <form name="gastbuch" method="post" id="formular" action="<?php echo $_SERVER['PHP_SELF']?>">
<table width="520" border="0">
<tr>
<td width="110">Name:</td>
<td width="400"><input name="name" type="text" maxlength="50"></td></tr>
<tr>
<td align="left" valign="top">Eintrag:</td>
<td><textarea name="text" cols="35" rows="10" maxlength="500"></textarea></td></tr>
<tr>
<td align="left" valign="top">Code eingeben:</td>
<td>
<div align="left">
<?PHP
echo
'<img src="include/code.php?'.session_name().'='.session_id().'" height="25" width="100" style="border:0; padding:0;">
<INPUT TYPE="TEXT" NAME="new_code" SIZE="20" MAXLENGTH="6">';?>
</div></td></tr>
<tr>
<td align="left" valign="top">Absenden:</td>
<td><div align="left"><input name="submit" type="submit" value="eintragen"></div></td>
</tr>
</table>
</form>
</div>
<div class="inhalt">
<?php
if($_POST['new_code'] != $_SESSION['new_code2']) {
die("In moment funktioniert das mit dem code noch nicht - probiere es bitte ab dienstag noch einmal!");
}
// Dateipfad in der die Einträge abgespeichert werden
$datei = "gaestebuch.txt";
// sind der Name und Text eingetragen?
if (isset($_POST['name']) && $_POST['text'] != "" && $_POST['new_code'] !="") {
$name = $_POST['name'];
$text = $_POST['text'];
// Datei wird zum schreiben und lesen geöffnet
$zeiger = fopen($datei, "r+");
// alte Daten herauslesen und in $alt sichern
$alt = fread($zeiger, filesize($datei));
// HTML-Zeichen maskieren, Slashes entfernen, Zeilenumbrüche erhalten
$name = htmlspecialchars($name);
$name = stripslashes(nl2br($name));
$text = htmlspecialchars($text);
$text = stripslashes(nl2br($text));
$code = htmlspecialchars($name);
$code = stripslashes(nl2br($name));
// Eintrag "zusammensetzen"
$eintrag="<h2>$name</h2>\n$text\n";
// Cursor sringt zum Anfang
rewind($zeiger);
// neue Eintrag vor den alten Eintrag schreiben:
fputs($zeiger, "$eintrag \n $alt");
// Datei wieder schließen
fclose($zeiger);
}
// Anzeigen des Gaestebuch
readfile($datei);?> |
Zuletzt bearbeitet von meikschmidt am Do 07.12.2006 10:20, insgesamt 1-mal bearbeitet
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Do 07.12.2006 10:57
Titel
|
|
|
Hallo Meik,
gibt doch mal deine beiden captcha-Codes (ist und soll) vor dem Vergleich auf dem Screen aus.
|
|
|
|
|
Anzeige
|
|
|
meikschmidt
Threadersteller
Dabei seit: 29.09.2006
Ort: -
Alter: 46
Geschlecht:
|
Verfasst Do 07.12.2006 12:02
Titel
|
|
|
sorry, aber das ist schon wieder etwas zu hoch für mich. muss ich doch wohl jemanden hier vor ort fragen den ich kenne.
|
|
|
|
|
kaputt
Dabei seit: 08.05.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 07.12.2006 14:27
Titel
|
|
|
Was ich persönlich bei kleinen persönlichen Formularen mache, ist ein Texteingabefeld, wo ich eine Frage ala "Welchen Nachnamen hat Angela Merkel?" drüber schreibe.
Ist 100% accessible und es schnallt auch auf anhieb jeder. Ich denke dabei gerade an ältere Menschen, denen CAPTCHA o.ä. nichts sagt und die nicht wissen, dass sie Buchstaben und Zahlen (oft auch nur schwer lesbar) von der Grafik abtippen müssen.
Naja, nur mal so ein Vorschlag. Nehmt ihn auseinander
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Do 07.12.2006 19:01
Titel
|
|
|
...und, wie ist jetzt der Nachname???
Aber mal ehrlich, wie oft werden denn so selbstgetipperte Formulare angegriffen??? Das ist doch eher ein Problem weiterverbreiteter Software, oder?!
Zuletzt bearbeitet von schachbrett am Do 07.12.2006 19:12, insgesamt 1-mal bearbeitet
|
|
|
|
|
meikschmidt
Threadersteller
Dabei seit: 29.09.2006
Ort: -
Alter: 46
Geschlecht:
|
Verfasst Di 12.12.2006 00:48
Titel
|
|
|
grüsse noch mal ...
also ich habe mir mal alle tip-sammlungen zu gedanken genommen und mein gästebuch etwas umgeschrieben das ich meine lösung etwas näher komme. jetzt werden allerdings bei richtiger code-eingabe keine angaben in der datei reingeschrieben. ich meine das der fehler in der folgenden zeile ist (vielleicht kann mir da noch einer helfen?):
Code: | if (isset($_POST['name']) && $_POST['text'] != "" && $_POST['new_code'] !="") { |
das komplette gästebuch script:
Code: | <?php
session_start();
error_reporting(E_ALL);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Gästebuch von Meik Schmidt</title>
<style type="text/css">
<!--
#gaestebuch {background:#CCC;}
-->
</style>
<?php include ("include/kopfzeile.inc.php"); ?>
<?php include ("include/navigation.inc.php");?>
»
<a href="gaestebuch.php" title="Gästebuch von Meik Schmidt">gästebuch</a></div>
<div class="inhalt">
<h1>Gästebuch von Meik Schmidt</h1>
<p>Eigener Text</p>
<form name="gastbuch" method="post" id="formular" action="<?php echo $_SERVER['PHP_SELF']?>">
<table width="520" border="0">
<tr>
<td width="110">Name:</td>
<td width="400"><input name="name" type="text" maxlength="50"></td></tr>
<tr>
<td align="left" valign="top">Eintrag:</td>
<td><textarea name="eintrag" cols="35" rows="10" maxlength="500">es wird noch getüfftelt. bisschen geduld noch</textarea></td></tr>
<tr>
<td align="left" valign="top">Code:</td>
<td>
<div align="left">
<?PHP
$code = $_SESSION['new_code2'];
echo
'<img src="include/code.php?'.$code.'" height="25" width="100" style="border:0; padding:0;">
<INPUT TYPE="TEXT" NAME="new_code" SIZE="20" MAXLENGTH="6">';?>
</div></td></tr>
<tr>
<td align="left" valign="top">Absenden:</td>
<td><div align="left"><input name="absenden" type="submit" value="eintragen"></div></td>
</tr>
</table>
</form>
</div>
<div class="inhalt">
<?php
# echo " ".$_SESSION['new_code2']." <br>";
# echo " ".$_GET['new_code']." <br>";
if($_POST['new_code'] != $_SESSION['new_code2']) {
die("In moment funktioniert das mit dem code noch nicht - probiere es bitte ab dienstag noch einmal!");
}
// Dateipfad in der die Einträge abgespeichert werden
$datei = "gaestebuch.txt";
// sind der Name und Text eingetragen?
if (isset($_POST['name']) && $_POST['text'] != "" && $_POST['new_code'] !="") {
$name = $_POST['name'];
$text = $_POST['text'];
// Datei wird zum schreiben und lesen geöffnet
$zeiger = fopen($datei, "r+");
// alte Daten herauslesen und in $alt sichern
$alt = fread($zeiger, filesize($datei));
// HTML-Zeichen maskieren, Slashes entfernen, Zeilenumbrüche erhalten
$name = htmlspecialchars($name);
$name = stripslashes(nl2br($name));
$text = htmlspecialchars($text);
$text = stripslashes(nl2br($text));
$code = htmlspecialchars($name);
$code = stripslashes(nl2br($name));
// Eintrag "zusammensetzen"
$eintrag="<h2>$name</h2>\n$text\n";
// Cursor sringt zum Anfang
rewind($zeiger);
// neue Eintrag vor den alten Eintrag schreiben:
fputs($zeiger, "$eintrag \n $alt");
// Datei wieder schließen
fclose($zeiger);
}
print_r ($_POST);
// Anzeigen des Gaestebuch
readfile($datei);
?>
</div>
<?php include ("include/fusszeile.inc.php"); ?> |
das captcha-ding:
Code: | <?php
session_start();
$chars = "qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM1234567890";
$code = "";
for ($i=1; $i<7; $i++)
{
$code = $code.$chars[mt_rand (0,strlen($chars)-1)];
}
$_SESSION['new_code2'] = $code;
Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Header("Content-type: image/jpeg");
$pic=ImageCreate(100,25); //(breite, höhe)
$col1=ImageColorAllocate($pic,255,255,255);
$col2=ImageColorAllocate($pic,138,138,138);
ImageFilledRectangle($pic, 0, 0, 100, 25, $col2);
ImageRectangle($pic, 1, 1, 98, 23, $col1);
for ($i = 0; $i < 6; $i++)
{
ImageString($pic, mt_rand(3, 5), (14*$i+10), mt_rand(3, 6), substr($code, $i, 1), $col1);
}
ImageJPEG($pic);
ImageDestroy($pic);
?> |
|
|
|
|
|
Benutzer 28377
Account gelöscht
Ort: -
|
Verfasst Di 12.12.2006 09:24
Titel
|
|
|
Code: | <img src="include/code.php?'.$code.'" height="25 |
Das ist doch wohl nicht wirklich ernst gemeint oder ?
Wenn der Code von $_SESSION['new_code2'] schon so im Quelltext steht, dann brauchste überhaupt keinen Code erst benutzen !
Es ist doch schon $_SESSION['new_code2'] gesetzt.
Bau in der code.php noch ein session_start() ganz oben ein, dann musste nicht den Code im Quelltext anzeigen.
|
|
|
|
|
caZpa
Account gelöscht
Ort: -
|
Verfasst Di 12.12.2006 09:26
Titel
|
|
|
Code: | $code = htmlspecialchars($name);
$code = stripslashes(nl2br($name)) |
sicher??
@cix: loll... das ist wirklich gut
Zuletzt bearbeitet von am Di 12.12.2006 09:27, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
[PHP] Was ist da falsch?
CSS IE6 bricht Box falsch um
[PHP] verdammt was ist falsch?
zufallsscript ist falsch :-(
PDF Formular rechnet falsch
datenbank connectieren > was ist falsch ..?
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|