IF bedigung wird nicht erfüllt aber trotzdem ausgeführt ;( bitte script ansehn

thevibe

Grünschnabel
hi,
also ich hab ein Problem mit der IF-Bedingung in folgendem Code:

PHP:
<?php

$exitpage = "http://galileo.spaceports.com/~thevibe2/htmlseiten/pw-anfrage.html";
$datei = strtolower("$Name$Vorname");

if (is_readable("$datei"))
    {
    $daten = fopen("$datei", "r");
    while (!feof($daten))
        {
    $zeile = fgets($daten,2500);
    $data = explode("|", $zeile);
        if ($Vorname == $data[0] && $Name == $data[1] && $pw == $data[12]);
       // var_dump($data);

        header("Location: $exitpage");

     }
        }
    else
    {
        echo "login fürn *****";
    }
    


echo "</form>";
?>

denn aus irgendeinem Grund wird die IF-Bedingung auch ausgeführt, wenn das pw falsch ist. Wenn der Name und/oder der Vorname falsch ist wird sie nicht ausgeführt - aber wenn das pw falsch ist. Das kann nicht wahr sein. Ich find den Fehler einfach nicht. helft mir mal bitte




--------------
.: tHeViBe :.
 
Weil die Syntax etwas verkehrt ist:
PHP:
if ($Vorname == $data[0] && $Name == $data[1] && $pw == $data[12]) {
   // var_dump($data);

   header("Location: $exitpage");
}
 
Das Semikolon nach der IF-Bedingung und das, was geschehen soll ist ein geschweiften Klammern.
 
hmm

gut stimmt, jetzt wo du es sagst...nur das jetzt die ELSE schleife nichtmehr ausgeführt wird, wenn sie ausgeführt werden sollte ;(
der code sieht jetzt so aus:
PHP:
<?php

$exitpage = "http://galileo.spaceports.com/~thevibe2/htmlseiten/pw-anfrage.html";
$datei = strtolower("$Name$Vorname");

if (is_readable("$datei"))
    {
    $daten = fopen("$datei", "r");
    while (!feof($daten))
        {
    $zeile = fgets($daten,2500);
    $data = explode("|", $zeile);

    if ($Vorname == $data[0] && $Name == $data[1] && $pw == $data[12])
    {
   header("Location: $exitpage");
    }

    }
        }
    else
    {
        echo "<B> FEHLER!!!!</B><br>";
        echo "Name oder Passwort falsch! Bist du denn überhupt schon registriert?";
        echo "Wenn nicht, kannst du das <a href=http://www.anmelden.de>hier</a> tun.";
    }
    


echo "</form>";
?>
 
Re: hmm

Die Klammerung stimmt nicht.

PHP:
<?php

$exitpage = "http://galileo.spaceports.com/~thevibe2/htmlseiten/pw-anfrage.html";
$datei = strtolower("$Name$Vorname");

if (is_readable("$datei"))
    {
    $daten = fopen("$datei", "r");
    while (!feof($daten))
        {
    $zeile = fgets($daten,2500);
    $data = explode("|", $zeile);

    if ($Vorname == $data[0] && $Name == $data[1] && $pw == $data[12])
    {
   header("Location: $exitpage");
    } // if-pw-close

    } // <- while-close
        } // <- if-readable-close
    else
    {
        echo "<B> FEHLER!!!!</B><br>";
        echo "Name oder Passwort falsch! Bist du denn überhupt schon registriert?";
        echo "Wenn nicht, kannst du das <a href=http://www.anmelden.de>hier</a> tun.";
    }
    


echo "</form>";
?>

Und in der Fehlermeldung fehlt ein "a" bei "überhupt".

Gruß
Falk
 
ähm...und wie müsste die Klammerung dann sein? Hab jetzt schon 20 mal rumprobiert, komme aber zu keinem (vernünftigen) Ergebnis.
 
Du solltest das if-Userdaten dahin gehend erweitern, dass eine boolsche Variable aussagt, ob die Daten des Users gefunden wurden. Diese Variable solltest du dann außerhalb der while-Schleife abfragen.

Idealerweise solltest du außerdem die while-Schleife gleich mit an diese Variable koppeln, sodass die Schleife vor eof beendet wird, falls der User gültig ist.

PHP:
    $user_exists = false;
    while ( !( feof($daten) || $user_exists ) )
    {
        if( <Userdaten stimmen> )
        {
            $user_exists = true;
            .
            .
            .
        }
    }
    if( !$user_exists )
    {
        <Fehlermeldung>
    }

Ungefähr so müsste es funktionieren.

Gruß
Falk
 
Zuletzt bearbeitet:
Zurück