Kurt: if - Anweisungen werden einfach übersehen

Hallo Forum(er)

Dieses sehr seltsame Problem schien noch nie jemand zu haben, aber irgendeiner musste ja den Anfang machen :-(

Ich lasse meine wml-Dateien dynamisch mit PHP erstellen, funktioniert
auch alles so weit. Nur wenn ich if-Anweisungen benutze,
werden diese einfach übersehen. Als wären sie nicht da :-((

Für den Fall, dass sich jemand aufopfern will und guckt, woran das liegen könnte, hier ist das Script:

<?php header("Content-type: text/vnd.wap.wml"); ?>
<?php echo "<?xml version="1.0"?>"; ?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<?
$user = "$(user)";
$password = "$(password)";
$authenticate = fopen("user/.user","r");
$zeile = fgets($authenticate,1000);
fclose($authenticate);
$pw = $user.$password;
function check_login() {
global $zeile;
global $pw;
$pieces = explode (",", $zeile);
$coun = count($pieces);
$i = 0;
while ($i<$coun) {
if ($pieces[$i] == $pw) {
include ("a.php3");
exit;
}
$i++;
}
}
check_login();
include ("d.php3");
?>

Es wird immer d.php3 aufgerufen, aber die Variablen stimmen alle und
kommen richtig an. Die Bedingung ist erfüllt, offline funktioniert das
auch, aber online nicht.

Ich bin für jede Hilfe unendlich dankbar

ciao

  1. Hi!

    Ich kann zwar kein PHP, aber vielleicht weiss ich ja trotzdem was. *g*

    Erstmal empfehle ich Dir, Deinen Quelltext so zu formatieren, dass man die Strukturern darin leicht visuell erfassen kann. Auf deutsch heisst das "einruecken", so z.B.:

    <?php header("Content-type: text/vnd.wap.wml"); ?>
    <?php echo "<?xml version="1.0"?>"; ?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
    "http://www.wapforum.org/DTD/wml_1.1.xml">
    <?
    $user = "$(user)";
    $password = "$(password)";
    $authenticate = fopen("user/.user","r");
    $zeile = fgets($authenticate,1000);
    fclose($authenticate);
    $pw = $user.$password;

    function check_login() {
        global $zeile;
        global $pw;

    $pieces = explode (",", $zeile);
        $coun = count($pieces);
        $i = 0;
        while ($i<$coun) {
            if ($pieces[$i] == $pw) {
                include ("a.php3");
                exit;
            }
            $i++;
        }
    }

    check_login();
    include ("d.php3");

    ?>

    Es wird immer d.php3 aufgerufen,

    Ja, warum auch nicht?

    aber die Variablen stimmen alle und
    kommen richtig an. Die Bedingung ist erfüllt, offline funktioniert das
    auch, aber online nicht.

    Heisst das, a.php3 wird nicht eingebunden, obwohl es das sollte? Oder was?

    HTH && So long

    1. Hallo !!

      Erstmal Danke für die Antwort.

      Ich gebe zu, dieses Script war nicht ganz verständlich, wenn man nicht
      weiss, was ich überhaupt erreichen will.
      Also, das ganze soll ein Login-Script darstellen. In einem Formular
      werden Username und Passwort abgefragt und an eben dieses Script übergeben.
      Dann werden aus einer Datei alle User und die dazugehörigen Passwörter
      ausgelesen und einzeln mit der Eingabe verglichen. Dieser Vergleich
      geschieht natürlich mit der if-Anweisung. Aber die "behauptet" einfach,
      dass keine Übereinstimmung vorliegt. Das ist aber nicht der Fall. Ich habe
      natürlich schon alles ausprobiert und die Strings, die verglichen werden,
      stimmen 100% überein. Es funktioniert aber trotzdem nicht. Dieses Script
      habe ich auch schon offline getestet, da hat es hat funktioniert.
      Aber Online geht einfach nichts.

      ciao

  2. Hallo Kurt,

    ...werden diese einfach übersehen. Als wären sie nicht da :-((

    Da wird die Bedinigung wohl einfach nicht erfüllt sein.

    ....
    <?
    $user = "$(user)";
    $password = "$(password)";
    $authenticate = fopen("user/.user","r");
    $zeile = fgets($authenticate,1000);
    fclose($authenticate);
    $pw = $user.$password;

    $pw enthält jetzt "$(user)$(password)"; um es deutlich zu
    machen "$(user)$(password)". Oder auch: wo werden deine Eingabe
    Variablen verarbeitet?

    Wenn sie als user und passwort von einem Formular kommen, sollte
    es wohl $pw="($user).($password)" heissen, zumindest wenn in deiner
    .user Datei:
      (Erwin)(geheim),
      (Hans)(4711),
      (Willi)(qPqwzz)
    steht.

    function check_login() {
    global $zeile;
    global $pw;
    $pieces = explode (",", $zeile);
    $coun = count($pieces);
    $i = 0;

    bau hier mal Testhalber ein
      echo $pw;
    ein

    while ($i<$coun) {
    if ($pieces[$i] == $pw) {
    include ("a.php3");
    exit;
    }

    und hier ein
      else
        echo $pieces[$i]," isses nicht\n";

    $i++;
    }
    }
    check_login();
    include ("d.php3");
    ?>

    Es wird immer d.php3 aufgerufen, aber die Variablen stimmen alle und
    kommen richtig an. Die Bedingung ist erfüllt, offline funktioniert das
    auch, aber online nicht.

    Finde ich merkwürdig - oder ich hab da was überhaupt nicht verstanden.

    Gruss,
    Carsten