mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 23:43 Benutzername: Passwort: Auto-Login

Thema: Zufallscode wird immer als falsch gewertet ? vom 06.12.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Zufallscode wird immer als falsch gewertet ?
Seite: 1, 2  Weiter
Autor Nachricht
meikschmidt
Threadersteller

Dabei seit: 29.09.2006
Ort: -
Alter: 46
Geschlecht: Männlich
Verfasst Mi 06.12.2006 21:56
Titel

Zufallscode wird immer als falsch gewertet ?

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
schachbrett

Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht: Männlich
Verfasst Do 07.12.2006 10:57
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo Meik,

gibt doch mal deine beiden captcha-Codes (ist und soll) vor dem Vergleich auf dem Screen aus.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
meikschmidt
Threadersteller

Dabei seit: 29.09.2006
Ort: -
Alter: 46
Geschlecht: Männlich
Verfasst Do 07.12.2006 12:02
Titel

Antworten mit Zitat Zum Seitenanfang

sorry, aber das ist schon wieder etwas zu hoch für mich. muss ich doch wohl jemanden hier vor ort fragen den ich kenne.
  View user's profile Private Nachricht senden
kaputt

Dabei seit: 08.05.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 07.12.2006 14:27
Titel

Antworten mit Zitat Zum Seitenanfang

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 *zwinker*
  View user's profile Private Nachricht senden
schachbrett

Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht: Männlich
Verfasst Do 07.12.2006 19:01
Titel

Antworten mit Zitat Zum Seitenanfang

...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
  View user's profile Private Nachricht senden
meikschmidt
Threadersteller

Dabei seit: 29.09.2006
Ort: -
Alter: 46
Geschlecht: Männlich
Verfasst Di 12.12.2006 00:48
Titel

Antworten mit Zitat Zum Seitenanfang

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&auml;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");?>
 &raquo;
<a href="gaestebuch.php" title="G&auml;stebuch von Meik Schmidt">g&auml;stebuch</a></div>
<div class="inhalt">
  <h1>G&auml;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);
?>
  View user's profile Private Nachricht senden
Benutzer 28377
Account gelöscht


Ort: -

Verfasst Di 12.12.2006 09:24
Titel

Antworten mit Zitat Zum Seitenanfang

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

Antworten mit Zitat Zum Seitenanfang

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 :-(
Hab ich die fragen falsch beantwortet?
CSS-Fehler? - Anzeige in IE falsch
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


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.