• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Loginscript Fehler ratlos

Status
Für weitere Antworten geschlossen.

maverick7bm

Neues Mitglied
Hallo lieber PHPer :wink:

Ich habe vor ein paar Tagen angefangen PHP zu lernen. Hab auch alles
insoweit verstanden. Jetzt bin ich auf der Webseite php-einfach.de auf ein
Loginscript gestossen. Ich habe es mir dürchgelesen und abgeschrieben.
Beim ausprobieren sagt er mir aber,dass ich ein Fehler in der 46 Zeile
habe dort kann ich aber keinen Fehler entdecken :?: :?: Ich habe es
mir schon mehrmal angschaut und in Orginal Script steht das gleiche.

Hier das PHP-Script zum anlegen eines neuen Accounts


[php:1:daf21b648c]
<?php

$username = $HTTP_POST_VARS["username"];
$password = $HTTP_POST_VARS["passwort"];
$password2 = $HTTP_POST_VARS["passswort2"];

if ($password == $password2)
{
$user_vorhanden = array();
$passwort = md5($password);

$userdatei = fopen ("user.txt","r");
while(!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdatei = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fclose($userdatei);
}
if(in_array($username,$user_vorhanden))
{
echo"Username schon vorhanden

<a href=\"reg-formular.html\">zurück</a>";
}
else
{
$userdatei = fopen ("user.txt","a");
fwrite($userdatei, $username);
fwrite($userdatei, "|");
fwrite($userdatei, $passwort);
fwrite($userdatei, "\n");
fclose($userdatei);
echo "$username, deine Anmeldung war erfolgreich
<a href=\"login.html\">zum Login</a>";
}


else
{
echo "Die Passwörter waren nicht identisch
<a href=\"reg-formular.html\">zurück</a>";
}



?>
[/php:1:daf21b648c]

In der 46 Zeile steht das hier
[php:1:daf21b648c]<?php

else
{
echo "Die Passwörter waren nicht identisch
<a href=\"reg-formular.html\">zurück</a>";
}

?>[/php:1:daf21b648c]

else ist die 46 Zeile
 
Werbung:
[php:1:693efd047d]
if ($password == $password2)
:arrow: {//Anfang
$user_vorhanden = array();
$passwort = md5($password);

$userdatei = fopen ("user.txt","r");
while(!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdatei = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fclose($userdatei);
:arrow: }//Ende
[/php:1:693efd047d]
sollte das nicht so sein?, ich kenne mich leider nochnicht so
gut mit Php aus :oops:

Tipp: einrücken bei jedem befehl zwischen
{ und }
hilft manchmal :wink:

PS: was bedeutet
Code:
$HTTP_POST_VARS
 
das dürfte die veraltete variante vom aktuelleren $_POST sein

Ach ja zum Script: hab den fehler gefunden. es ist nicht erlaubt zwei else-blöcke an eine if-anweisung zu hängen. da fehlt irgendwo ne }
 
Werbung:
Werbung:
einrücken.
also nicht so
[php:1:f4f8dadbce]
<?php
befehl;
befehl;
if(bedingung)
{
befehl;
if(bedingung)
{
befehl;
}
}
?>
//sondern

<?php
befehl;
befehl;
if(bedingung)
{
befehl;
if(bedingung)
{
befehl;
}
}
?>
[/php:1:f4f8dadbce]
tabs= tabtaste, manchmal die taste über der dauergroßschreibtaste.
und dann hätte ich noch gerne den link zu der seite, da dort einige login-scripte rumliegen ;ugl
 
Werbung:
[php:1:22a13c9ae4]<?php
if(script==http://www.php-einfach.de/tuts_php_login.php)
{
?>
1. $username = $HTTP_POST_VARS["username"];
   $password = $HTTP_POST_VARS["passwort"];
   $password2 = $HTTP_POST_VARS["passswort2"];

steht da nirgends. steht die aktuelle version von.

2.das erste if geht bis nach dem datei-eintrag.
      echo "$username, deine Anmeldung war erfolgreich
<a href=\"login.html\">zum Login</a>";
      }
und da hört das erste if auf
und nicht nach fclose. damit dürfte der fehler dann verschwinden.
<?php
}
else
{
echo 'bitte den link auf die datei und nicht auf die hauptseite :!: :!: :!: :!: ';
}
?>
[/php:1:22a13c9ae4]
 
Zu deinem Punkt Nummer 1: In der Downloadversion des Scriptes steht
es aber so wie oben und sorry das ich dir jetzt die haupt seite verlinkt habe.
Ich werde es jetzt mal probieren so wie du es gesagt hast.
 
Danke in einer hinsicht war es hilfreich die Fehlermeldung ist weg :D :D , nur jetzt meint
er andauernd meine Passwörter waren nicht identisch. Kann es an den zwei else
Blöcken liegen wenn ja wie kann man es denn noch anders machen ?
 
Werbung:
hast du dein pw md5-verschlüsselt abgespeichert?
wenn nein, dann kannst du es so tun:
[php:1:d5a2acdda1]<?php
$pw="hierkommtdeinpasswort";
echo md5($pw);
?>[/php:1:d5a2acdda1]
jetzt hast du dein md5-verschlüsseltes pw :mrgreen:
und die zeichen ä, ö, ü, Ä, Ö & Ü solltest du nicht so schreiben sondern in dieser form: &[Zeichenohnedoppelpunkt]uml;
&Auml; ergibt dann Ä (uml steht wohl für umlaut...)
 
ja dass müsste das doch sein

$passwort = md5($password);
fwrite($userdatei, $passwort);

hier noch mal der ganze code mit dem behobenen Fehler von oben

[php:1:c6e58b7558]<?php
$username = $_POST ["username"];
$password = $_POST ["passwort"];
$password2 = $_POST ["passswort2"];

if ($password == $password2)
{
$user_vorhanden = array();
$passwort = md5($password);

$userdatei = fopen ("user.txt","r");

while(!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdatei = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}

fclose($userdatei);

if(in_array($username,$user_vorhanden))
{
echo"Username schon vorhanden

<a href=\"reg-formular.html\">zurück</a>";
}

else
{
$userdatei = fopen ("user.txt","a");
fwrite($userdatei, $username);
fwrite($userdatei, "|");
fwrite($userdatei, $passwort);
fwrite($userdatei, "\n");
fclose($userdatei);
echo "$username, deine Anmeldung war erfolgreich
<a href=\"login.html\">zum Login</a>";
}//vom else
}//vom ersem if

else
{
echo "Die Passw&ouml;rter waren nicht identisch
<a href=\"reg-formular.html\">zurück</a>";
}

?>[/php:1:c6e58b7558]
 
hier ist der fehler...
[php:1:201ca1cbbd]<?php
$password2 = $_POST ["passswort2"];
?>[/php:1:201ca1cbbd]

mfg, fätzminator
 
Werbung:
Ich glaub ich brauch ne Brille, dass es immer diese kleinen fehler seien müssen. :? ;ugl :?
kann man nicht ein programm entwickeln was den code nach solchen flüchtigkeitsfehlern einmal durchsucht.
Ohne dieses Forum hätte ich noch bis nächstes jahr weinachten gesucht und es gäbe einen php freund weniger,
thanks @all :D
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben