mal wieder pw-abfrage aus txt
andy75
- php
hab keine ahnung wo ich noch bassteln soll,
es funktioniert einfach nicht.
<?php
$handle = fopen("mitglieder.txt", "r");
while(!feof($handle))
{
$inhalt = fread($handle, 1000000);
}
fclose($handle);
$array = explode("$$$", $inhalt);
$pw1 = trim($array[1]);
$user1 = trim($array[0]);
if($user == $user1 && $pw == $pw1)
require ("abl_insider.html");
else
require ("abl_mitgliederlogin_fehl.html");
?>
HI
was funktioniert denn nicht??? Fehlermeldung?
<?php
$handle = fopen("mitglieder.txt", "r");
while(!feof($handle))
{
$inhalt = fread($handle, 1000000);
}
fclose($handle);
$array = explode("$$$", $inhalt);
meckert der hier nicht???
$inhalt ist doch bestimmt ein array... dann müsstest du für jedes
$inhalt-Element den explode-Befehl machen, oder verstehe ich da was falsch?? wie sieht denn die datei aus?
Viele Grüße
Horst
Hi!
<?php
$handle = fopen("mitglieder.txt", "r");
while(!feof($handle))
{
$inhalt = fread($handle, 1000000);
}
fclose($handle);
$array = explode("$$$", $inhalt);
was machst Du hier? Ich habe feof zwar noch nie benutzt, aber liest Du mit fread nicht jedesmal die komplette Datei in den String $inhalt, zumindest solange die Datei weniger als 1.000.000 Byte hat?
Ich würde das so ähnlich machen:
foreach (file("mitglieder.txt") as $line){
$user_array = explode("$$$", trim ($line));
if($user == trim($user_array[0] && $pw == trim($user_array[1])){
include_once ("abl_insider.html"); //bei alten PHP-Versionen wird require() immer ausgeführt!
exit;
}
}
include_once ("abl_mitgliederlogin_fehl.html");
Das doofe an der Variante, danach kann kein PHP-Code mehr kommen, wenn das nicht sein muß sollte das so funktionieren, sonst mußt Du Dir anstatt mit exit was mit break überlegen!
Grüße
Andreas
hi andreas!
habe dein script ausprobiert mir wird in der if-zeile ein error angezeigt???
hi andreas!
habe dein script ausprobiert mir wird in der if-zeile ein error angezeigt???
war auch nicht getestet, aber verstehen tue ich das nicht.
Schreib mal die Fehlermeldung auf. Hast Du auch in jeder Zeile $$$ als Trennzeichen zw. user und pass?
AH! Habe es gefunden, es fehlte in ")", versuchs nochmal:
foreach (file("mitglieder.txt") as $line){
$user_array = explode("$$$", trim ($line));
if($user == trim($user_array[0]) && $pw == trim($user_array[1])){
include_once ("abl_insider.html"); //bei alten PHP-Versionen wird require() immer ausgeführt!
exit;
}
}
include_once ("abl_mitgliederlogin_fehl.html");
Grüße
Andreas
hi andreas!
dein script zigt jetzt kein fehler mehr an aber er ruft immer noch die seite auf auf der steht, dass das login fehlgeschlagen ist als könne er das passwort und den benutzernamen nicht richtig aus der textdatei lesen,
wie soll den die textdatei dazu aussehen?
Grüße
Andreas
hi!
dein script zigt jetzt kein fehler mehr an aber er ruft immer noch die seite auf auf der steht, dass das login fehlgeschlagen ist als könne er das passwort und den benutzernamen nicht richtig aus der textdatei lesen,
Also. ich habe mir das nochmal angesehen und wüßte nicht warum das nicht funktionieren sollte!
Die Textdatei hast Du ja so vorgegeben, denn Du hast pro Zeile einen User mit Passwort getrennt durch $$$ stehen. sonst geht das nicht.
also
user1$$$passwort1
user2$$$passwort2
user3$$$passwort3
user4$$$passwort4
Hast Du die Textdatei im selben Verzeichnis wie das PHP-Script?
Mal das Script etwas erweitert:
echo "zu prüfender Username: ".$user."<br>";
echo "zu prüfendes Passwort: ".$pw."<br><br><br>";
foreach (file("mitglieder.txt") as $line){
echo "Zeile in Textdatei: ".$line."<br>";
$user_array = explode("$$$", trim ($line));
echo "User aus Textdatei: ".$user_array[0]."<br>";
echo "Passwort aus Textdatei: ".$user_array[1]."<br>";
if($user == trim($user_array[0]) && $pw == trim($user_array[1])){
#include_once ("abl_insider.html");
exit;
}
}
#include_once ("abl_mitgliederlogin_fehl.html");
und jetzt sag mal was da ausgegeben wird. Am besten postetst Du das hier mal!
Grüße
Andreas
HI HORST
---- was funktioniert denn nicht??? Fehlermeldung?------
es kommt keine direkte fehlermeldung aber er ruft selbst bei korektem benutzernamen und korektem passwort die seite auf auf der steht"ihr loggin ist fehlgeschlagen"
HI,
probiers mal hiermit... ist allerdings nicht "gut" programmiert
gruss
horst
<?php
$pruef = 0;
$fcontents = file ('mitglieder.txt');
while (list ($key, $value) = each ($fcontents)) {
$array = explode("$$$", $value);
$user1 = trim($array[0]);
$pw1 = trim($array[1]);
if($user == $user1 && $pw == $pw1)
$pruef = 1;
array_splice ($array, 0);
}
if($pruef == 1)
require ("abl_insider.html");
else
require ("abl_mitgliederlogin_fehl.html");
?>
HI,HORST
das problem bleibt.
habe leider nicht soviel ahnung um dort noch drin rumzuschreiben.
HI,HORST
das problem bleibt.
habe leider nicht soviel ahnung um dort noch drin rumzuschreiben.
dann hat das mit dem array löschen nicht so geklappt wie ich dachte....
melde mich nach her nochmal
gruss
horst
Hi nochmal
bei mir klappt das skript wunderbar:
<?php
$pruef = 0;
$user = "hugo";
$pw = "hugo";
$fcontents = file ('mitglieder.txt');
while (list ($key, $value) = each ($fcontents)) {
$array = explode("$$$", $value);
$user1 = trim($array[0]);
$pw1 = trim($array[1]);
if($user == $user1 && $pw == $pw1)
$pruef = 1;
array_splice ($array, 0);
}
if($pruef == 1)
echo "richtig";
else
echo "FAAAAAAAAAAAAAAAAAAAAAALSCH";
?>
Meine Mitglieder.txt sieht so aus:
horst$$$horst
hugo$$$hugo
emma$$$emma
Woher bekommst Du denn die Benutzernamen???
Gruss
Horst
zusatz zum vorherigen:
nimm mal lieber include:
"Anders als include() wird require() immer die angegebene Datei einlesen, auch dann, wenn die Programmzeile, in der sie steht, nicht ausgeführt wird. Wenn Sie eine Datei nur bedingt einlesen wollen, benutzen Sie include(). Die bedingte Anweisung würde require() nicht davon abhalten, die Datei zu laden. "
gruss
horst
Hallo!
nimm mal lieber include:
"Anders als include() wird require() immer die angegebene Datei einlesen, auch dann, wenn die Programmzeile, in der sie steht, nicht ausgeführt wird. Wenn Sie eine Datei nur bedingt einlesen wollen, benutzen Sie include(). Die bedingte Anweisung würde require() nicht davon abhalten, die Datei zu laden. "
Wie hier schonmal geschreiben wurde sollte man das aktuellere original englische Manual nie außer Acht lassen, denn:
"The two constructs are identical in every way except how they handle failure. include() produces a Warning while require() results in a Fatal Error. In other words, use require() if you want a missing file to halt processing of the page. include() does not behave this way, the script will continue regardless."
Grüße
Andreas
Hallo!
nimm mal lieber include:
"Anders als include() wird require() immer die angegebene Datei einlesen, auch dann, wenn die Programmzeile, in der sie steht, nicht ausgeführt wird. Wenn Sie eine Datei nur bedingt einlesen wollen, benutzen Sie include(). Die bedingte Anweisung würde require() nicht davon abhalten, die Datei zu laden. "
Wie hier schonmal geschreiben wurde sollte man das aktuellere original englische Manual nie außer Acht lassen..
ich lese halt nicht alles
habe ich (leider) keine zeit für :(
gruss
horst
Hi nochmal
Woher bekommst Du denn die Benutzernamen???
ich bekomme meine eingaben aus einem html-formular
Hi nochmal
Woher bekommst Du denn die Benutzernamen???
ich bekomme meine eingaben aus einem html-formular
wie greifst du auf die variablen zu?? das war gar nicht im skript...
über $_POST["user"] oder $_GET["user"]?
oder
$HTTP_POST_VARS???
wenn du einfach nur $user hinschreibst, weil die felder so heissen, reicht das evt nicht...
gruss
horst
HI HORST
ich habe keine ahnung und das ist mein erstes php-script
ich habe mich aber schon gewundert wie er an die daten aus dem html-formular kommen soll.
hab's ganz auf doof erst mal so gemacht.
das reicht doch aber nicht aus oder???:
<?php
$pruef = 0;
$_GET["benutzername"];
$_GET["passwort"];
$fcontents = file ('mitglieder.txt');
while (list ($key, $value) = each ($fcontents)) {
$array = explode("$$$", $value);
$user1 = trim($array[0]);
$pw1 = trim($array[1]);
if($user == $user1 && $pw == $pw1)
$pruef = 1;
array_splice ($array, 0);
}
if($pruef == 1)
include("abl_insider.html");
else
include("abl_mitgliederlogin_fehl.html");
?>
Hi!
ich habe keine ahnung und das ist mein erstes php-script
ich habe mich aber schon gewundert wie er an die daten aus dem html-formular kommen soll.
zu Recht!
hab's ganz auf doof erst mal so gemacht.
Da kommen Wir dem Problem doch mal einen ganzen Schritt näher!
das reicht doch aber nicht aus oder???:
$_GET["benutzername"];
$_GET["passwort"];
Was ist das? Hast Du die Variablen "benutzername" und "passwort" im HTML-Formular als input-Felder stehen und überträgst das Formular auch per GET?
Schön, aber so hast Du die Variablen noch nicht im Script! Du mußt ja das was in $GET... steht erst in die Variablen schreiben, woher sollen denn $user und $pw die Werte haben? Also brauchst Du
$user = $_GET["benutzername"];
$pw = $_GET["passwort"];
und schon könnte es funktionieren!
Grüße
Andreas
HI!
mein script sieht jetzt so aus:
<?php
$pruef = 0;
$user = $_GET["benutzername"];
$pw = $_GET["passwort"];
$fcontents = file ('mitglieder.txt');
while (list ($key, $value) = each ($fcontents)) {
$array = explode("$$$", $value);
$user1 = trim($array[0]);
$pw1 = trim($array[1]);
if($user == $user1 && $pw == $pw1)
$pruef = 1;
array_splice ($array, 0);
}
if($pruef == 1)
include("abl_insider.html")
else
include("abl_mitgliederlogin_fehl.html")
?>
jetzt zeigt er den fehler in der else-zeile
ps: meine nerven!
hallo
if($pruef == 1)
include("abl_insider.html")
^^^^^^^^^hier fehlt was: ;
else
include("abl_mitgliederlogin_fehl.html")
und hier auch !!!!!!!!!!!!!!!!!!!!!!!
ps: meine nerven!
gaaaaanz ruhig :)
gruss
horst
Hallo!
Also der Fehler ist nun wirklich offensichtlich! Kannst Du überheupt kein PHP? Dann würde ich doch mal dringend anraten das Manual zu lesen, wenigstens einige grundlegende Kapitel, wie http://www.php.net/manual/de/language.basic-syntax.instruction-separation.php
<?php
$pruef = 0;
$user = $_GET["benutzername"];
$pw = $_GET["passwort"];
$fcontents = file ('mitglieder.txt');
while (list ($key, $value) = each ($fcontents)) {
$array = explode("$$$", $value);
$user1 = trim($array[0]);
$pw1 = trim($array[1]);
if($user == $user1 && $pw == $pw1)
$pruef = 1;
array_splice ($array, 0);
}
if($pruef == 1)
include("abl_insider.html")
^^^^^^^^^^^^^^^^^^^^^^^^^^^
das ist eien Anweisung, was könnte da fehlen? Woher weiß PHP das die Anweisung hier endet?
else
include("abl_mitgliederlogin_fehl.html")
?>
jetzt zeigt er den fehler in der else-zeile
PHP gibt doch normalerweise klare Fehlermeldungen aus, daher wäre es sehr nett wenn man zum Code auch die genaue Fehlermeldung bekäme!
In diesem Fall tritt ein Fehler beim Parsen auf, genauer bei else, da die verhergehende Anweisung nicht korrekt abgetrennt wurde, so weiß PHP nicht das diese schon zu ende ist und erwartet irgendwas, aber nicht else.
Grüße
Andreas