if - Anweisungen werden einfach übersehen
Kurt
- php
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
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
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
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