Variablen werden nicht übergeben - bleiben leer

than

Mitglied
Hi Leute,
habe wirklich ein einfaches Problem aber ich finde keinen Fehler und das ist mir gar schon beinahe (peinlich) weil's doch so einfach ist.

ich habe http://www.tutorials.de/forum/showthread.php?t=9684 tutorial genutzt und umgebaut so das ich statt ner mysql ne txt DB benutzen kann.

das problem macht das öffnen und auslesen der pass.txt ($passw & $open), also 4 und 5 zeile im code.
PHP:
// Session starten 
session_start (); 
 
$passw = "pass.txt"; 
$open = file($passw);
 
if ($_REQUEST["name"] != $open[1]) 
{ 
$error .= 1; 
} 
 
if ($_REQUEST["pwd"] != $open[2]) 
{ 
$error .= 1; 
} 
 
if ($error == 0) 
{ 
// Sessionvariablen erstellen und registrieren 
$_SESSION["user_id"] = $open[0]; 
$_SESSION["user_name"] = $open[1]; 
$_SESSION["user_passwort"] = $open[2]; 
# $_SESSION["user_vorname"] = $data["Vorname"]; 
header ("Location: intern.php"); 
} 
else 
{ 
header ("Location: formular.php?fehler=1"); 
}
der Fehler der erscheint ist das immer der "header ("Location: formular.php?fehler=1");" zweig greift.

wenn ich nun meinen Code oben umändere in:
PHP:
// Session starten 
session_start (); 
 
$passw = "pass.txt"; 
$open = file($passw);
 
if ($_REQUEST["name"] != "andreas") 
{ 
$error .= 1; 
} 
 
if ($_REQUEST["pwd"] != "abcde123") 
{ 
$error .= 1; 
} 
 
usw.
funktioniert alles wie es soll.
Die pass.txt sieht so aus:
1
andreas
abcde123

Warum wird die Variable $open[1] & $open[2] in der if Abfrage nicht übernommen :confused:
 
$open war schon richtig

das Problem ist das $error nicht 0 ist :)

$open = file($passw);
$error = 0;

if ($_REQUEST["name"] != $open[1])
{
$error = 1;
}
... usw
 
Also ich lese Textdateien so aus (kenne deine Variante nicht, was aber nicht heissen soll, dass es nicht funktioniert):

PHP:
$fp = fopen("test.txt", "r");
while(!feof($fp)) {
   $line = fgets($fp, 4096);
   echo $line;
}
 
Oliver Gringel hat gesagt.:
In Zukunft bitte genauer lesen, bevor du unnötige Fragen stellst.
Meinst Du damit mich? Der 'Zeilenumbruch' (?¿) hat damit nichts zu tun. Ich habe vorher die 3 Werte des file() arrays mal ausgeben lassen, sie stehen alle 3 nebeneinander in einer Zeile.

Obwohl die werte mit trim() zuerst in die txt Datei geschrieben wurden, also ohne Leerzeichen davor oder dahinter, funktioniert das Script jetzt wenn ich die Ausgabe auch mit trim() umschweife, also so:
PHP:
// Session starten 
session_start (); 
 
$passw = "pass.txt"; 
$open = file($passw);
 
if ($_REQUEST["name"] != trim($open[1])) 
{ 
$error .= 1; 
} 
 
if ($_REQUEST["pwd"] != trim($open[2])) 
{ 
$error .= 1; 
}

Danke allen die sich die Mühe gemacht haben das hier zu lesen.
Schönen Abend noch :)
 
Der Zeilenumbruch hat sehr wohl was damit zu tun. Mal angenommen, Username und Passwort wären 'user' bzw. 'pass'. Dann steht in den Variablen $open[1] 'user\n' und in $open[2] 'pass\n'. Und das 'user' und 'user\n' nicht das gleiche sind, sollte einleuchten.
trim() entfernt dir die Zeilenumbrüche, die in $open[1] und $open[2] enthalten waren.

Die Tatsache, das die 3 Einträge des Arrays nebeneinanderstehen, wenn du die Ausgabe im Browser betrachtest, kommt schlicht und ergreifend daher, dass Zeilenumbrüche in HTML ignoriert werden, und damit vom Browser auch nicht angezeigt werden. Schau mal in den HTML-Quelltext, da wirst du die Zeilenumbrüche wiederfinden.
 
Zurück