SQL Befehl funktioniert nicht richitg

Hallo

habe folgenden Code in meiner Homepage:

<?php include "../../php_includes/konfigurationfooulaz.php";
if(get\_magic\_quotes\_gpc()) { array\_stripslashes($\_GET["Eingabe"]);} $pruefen=$\_GET["Eingabe"]; $query = "SELECT authzahl FROM authentifizierung WHERE authzahl = '".mysql\_real\_escape\_string($pruefen)."'"; $result = mysql\_query($query) OR die("Falsch !!!".mysql\_error()); $x = mysql\_fetch\_array($result); if ($x['authzahl'] == $pruefen) { header ("Location:../FooulazGUESTBOOK.php"); } else { echo "Falsche Eingabe!! Gehe zurück um die Eingabe zu prüfen!"; } echo ""; echo "$result"; echo "$pruefen ";echo "$query ";echo "$x "; ?\> Ich wollte damit das Problem von Spam-Robotern, die mein Gästebuch zumüllen beseitigen. Funktioniert auch halbwegs: Bevor man zum Eintragformular weitergeleitet wird, bekommt man ein Bild mit Zeichen zu sehen, die man dann korrekt eingeben muss um zu Formular zu kommen. Problem: Gibt man gar nichts ein --\> kommt man auch zum Formular Gibt man was falsches ein --\> kommt man zwar nicht zum formular, jedoch wird der Text angezeigt: "Falsche Eingabe!! Gehe zurück um die Eingabe zu prüfen!" Es sollte aber "Falsch!!" angezeigt werden. kannmir jemand helfen? ich weiß nicht was ich falsch gemacht habe! Nachprüfen könnt ihr das unter: [http://www.fooulaz.de](http://www.fooulaz.de) (auf Gästebuch, dann Eintragformular) Mfg Marco F.

Wenn wenigstens jemand schreiben würde;:

  • Ich finde keinen Fehler, ich weiß nicht woran es liegt, oder
  • Falsches Forum, oder irgendwas

Aber keine Antwort ist schlimm

Hi Marco,

Aber keine Antwort ist schlimm

trag es wie ein Mann!

Im Ernst: Ich glaube mich mit SQL auszukennen, habe aber nur einen ungefähren Schimmer, was Du da treibst, weil mir MySQL ziemlich fremd ist, PHP noch mehr. Vielleicht ist die Frage wirklich im Brett PHP besser aufgehoben. Ich versuche es trotzdem:

Wenn Du bei FALSCH! landest, dann kommt doch ein SQLERROR mit, der darauf hinweist, dass die Anweisung falsch konstruiert ist.

Dass die Leereingabe zum Formulat führt, kann nur passieren, wenn $x[‚authzahl‘] == $pruefen erfüllt ist. Auch leere Ketten können einander gleich sein.

Mein Test liefert übrigens ein anderes Ergebnis: Eine falsche Eingabe führt zu „Falsche Eingabe!..“, eine richtige oder leere zum Formular.

Anmerkung zum Design: Von „!“ fühle ich mich angebrüllt, ich verstehe Meldungen auch, wenn sie leise daherkommen. Und Deine Farbgebung erzeugt auf Dauer Augenkrebs.

Gruß Ralf

Hallo,

Hallo

habe folgenden Code in meiner Homepage:

$result = mysql_query($query) OR die(„Falsch
!!!“.mysql_error());

…das kommt nur, wenn das SQL falsch war

$x = mysql_fetch_array($result);

das gibt ein „FALSE“ als $x, wenn es keine Einträge gab, sonst ist $x[„authzahl“] immer gleich $pruefen, weil das ist die SQL Bedinung…

if ($x[‚authzahl‘] == $pruefen) { header

Daher ist das bei leeren $pruefen wahr und die Umleitung erfolgt bei leerer Eingabe trotzdem.

(„Location:…/FooulazGUESTBOOK.php“); }
else { echo „Falsche Eingabe!! Gehe zurück um die Eingabe zu
prüfen!“; }

Das kommt dann, wenn die Eingabe falsch war.

<?php include "../../php_includes/konfigurationfooulaz.php";<br />
 if(get\_magic\_quotes\_gpc()) {
 array\_stripslashes($\_GET["Eingabe"]);}

 $pruefen=$\_GET["Eingabe"];

$query = "SELECT COUNT(authzahl) FROM authentifizierung WHERE authzahl = '".mysql\_real\_escape\_string($pruefen)."'";
$result = mysql\_query($query) OR die("Falsch !!!".mysql\_error());
list($x)=mysql\_fetch\_row($result);

if ($x\>0) { header ("Location:../FooulazGUESTBOOK.php"); }
else { echo "Falsch !!!"; }

?\>

Hier wird jetzt mit COUNT(…) nur nachgeschaut, wieviele Einträge es gibt, die $pruefen entsprechen. Wenn es mehr als 0 gibt, wird umgeleitet, sonst kommt „Falsch !!!“.

Alexander

Also das sieht ja mal gut aus!! Danke!!
Werd ich dann mal probieren.

Gut erklärt!

Mfg
Marco F.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Anmerkung zum Design: Von „!“ fühle ich mich angebrüllt, ich
verstehe Meldungen auch, wenn sie leise daherkommen. Und Deine
Farbgebung erzeugt auf Dauer Augenkrebs.

Gruß Ralf

Lool!!

Da hast Recht, aber habe keine zeit mich mit grafischem schnickschnack zu befassen. Die Homepage liegt zur Zeit eh brach, wie man sieht. Wollte mich nur gegen die Spam-Angriffe wehren.

Von „!“ fühle ich mich angebrüllt

Trag es wie ein Mann! HEHE

Mfg
Marco F.