Ingo: Variablen vergleichen

Beitrag lesen

-- Morgen auch. danke für deine weiteren Denkanstöße, werde Sie beherzigen nach der Lösung dieses Problem?s.
--

n'abend,

dann nehme ich an Du bist ein Feiner!

ein feiner Pinkel?

-- ne, das kommt von Mario Barth

Die Variable die übernommen(aus Formularfeld) kommt richtig an und die aus der DB ebenfalls.

Gibt es zu einer Domain mehrere Datensätze?

-- nein, jeweils nur einen.

Formular 123 , BD 512 aber irgend warum werden beide nicht miteinander verglichen warum? Das war meine Frage.

Siehe vorherige Frage. Wenn es mehrere Datensätze gibt, musst du das entsprechend behandeln.

$result = mysql_query("SELECT pass,domain FROM kunden WHERE domain = '$domain' ");
   while($row = mysql_fetch_array($result))
    {

Stimmt das »==« an dieser Stelle? Also willst du den Fehler gefunden haben, wenn pass (aus der Datenbank) und ticket (aus der Benutzereingabe) übereinstimmen?

--           /***\ Ergebnis pass aus db 512 und ticket aus formuler 123

if($row['pass'] == $ticket) { $ok = 0;
     $error = "Sorry, Ihre Eingabe stimmt leider nicht!";
     }
        print "Alles OK";
    }

füge doch bitte überall echo-statements (var_dump()) ein, um die jeweiligen Variablen Inhalte auszugeben, damit man überhaupt mal sieht, was da ganz konkret funktioniert.

Warum fragst du das Ticket eigentlich nicht direkt in der SQL-Query mit ab?

-- weil es eine spalte namens Ticket gibt, die nicht überschrieben werden darf! Diese spalte ist mit pass identisch pass wird nach erfolgreichem login geändert.

Ich sehe hier keinen Grund, der es nötig machen würde alle Daten zu einer Domain zu laden.
-- ich lade doch nur $domein und dann gezielt $pass aus der DB.

Hierdurch würde auch die Datenbank den Vergleich (und die Optimierung) übernehmen:

$res = mysql_query( 'SELECT 1

FROM kunden
   WHERE domain = "'. mysql_real_escape_string( $domain ) .'"
     AND pass = "'. mysql_real_escape_string( $ticket ) .'"' );

if( !$res || !mysql_num_rows($res) )
{
  // es konnte kein Datensatz gefunden werden
}
else
{
  // wir haben einen Datensatz
}


>   
> `mysql_real_escape_string()`{:.language-php} dient dazu, besondere zeichen zu maskieren, um z.b. »SQL-injection« zu verhindern.  `!$res`{:.language-php} ist die Anwendung des Wissens, dass eine `mysql_query()`{:.language-php} im Fehlerfall und im Falle keiner gefundenen Datensätze  `false`{:.language-php} zurück liefert.  
  
\-- nicht soviel auf einmal, immer langsam mit den unwissenden Pferden, mach das auch noch nicht lange genug! Habe mir einfach mal die Daten an folgender Stelle /\*\*\*\ anzeigen lassen und geneu die Daten sind die , die vorhanden sind!  
  
Danke Gruß Ingo  
  

>   
> weiterhin schönen abend...