• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Login mit php

artemis

New member
Hallo allerseitz!

Ich habe folgendes Problem. Für eine private website von mir wollte ich ein login(Benutzername/passwort) erstellen. Dies alles mit php, Dh. ein erstes html dokument wo man die daten eingibt, dann das php-dokument, an das die daten gesendet werden und dann noch ein drittes dokument, in welchem das php document guckt ob die eingegebenen daten korrekt sind.

Hier meine 3 Dateien:
1.html Datei:

<html><head></head><body>

<form action="loginlesen.php" methode=post>
Benutzername:
<input type="text" name="Benutzer"><br><br>
Benutzerpasswort;
<input type="text" name="Benutzerpasswort"><br><br>
<input type="submit" value=Login>

</form></body></html>

2.php datei:

<?

$blub = array();

$file = fopen ('login.txt', 'r');

$korrekt = fgets($file,4000);
$blub = explode ("|",$korrekt);

$ende = implode("", $blub);

if($ende==$Benutzer+$Benutzerpasswort){
echo "Ok";
}else{
echo "Nope";
}


fclose($file);

?>

3.das txt dokument:

Artemis|Website|


sofern so gut. es funktioniert auch eigentlich alles prima, wenn ich die benutzernamen eingebe wird erstmal ok ausgegeben. Jedoch wenn ich etwas anderes eingebe, wird auch ok ausgegeben. Woran liegt das?

ps: wenn wer fragen sollte wieso ich das mit inplode/explode und dem array mache, mein informatik lehrer hat gesagt das dies so funtionieren sollte..

Bin aber auch gerne für neue alternative Vorschläge offen! Vielen Dank
 
1. falsches Forum - das ist ein PHP Problem
2. Dein Informatiklehrer erzählt Blödsinn: Wenn der Benutzername = "h" und Passwort = "allo" würde diese Abfrage auch ein OK liefern, wenn man Benutzername = "hal" und Passwort = "lo" eingibt.
3. Du musst eine $_POST Variablen schon auslesen
4. In deinem Formular ist ein Fehler: es heißt method="POST"
5. Der Stringoperator zum Verknüpfen ist "."
Code:
<?
$file = fopen ('login.txt', 'r');
$korrekt = fgets($file,4000);
fclose($file);

if($korrekt == $_POST['Benutzer'] . "|" . $_POST['Benutzerpasswort']){
	echo "Ok";
}
else{
	echo "Nope";
}
?>
 
Erstmal Danke!
Zum Falschen Forum: stimmt wohl.. Doch ich war zu blind den link/button fürs php zu finden..

Was den Strinoperator betrifft hat das bei javascript bei mir mit zeichenketten auch mit + funktioniert, doch anscheinend war das wohl eher glücklich als richtig..

Und wenn cih mir den Quellcode anschaue gehe ich davon aus das $_POST einfach die input felder aus der vorrigen Datei in variablen umwandelt die man dann benutzen kann ,denn acuh das hat bei mir vorher stets mit $name des inputfeldes funktioniert. Aber man lernt ja immer dazu vielen Dank für die schnelle Hilfe und den code!!
 
Ich habe jetzt mal deinen code übernommen,jedoch funktioniert es immernoch nicht, es wird weiterhin nur nope ausgegeben und das acuh wenn cih bei der txt datei den letzen | weglasse...
 
Artemis|Website
das ist weiterhin meine login.txt
Habe jetzt den Strich am ende weggelassen,da er falsch ist wenn ich den von dir geschickten Quelltext richtig verstanden habe.
 
Also bei mir geht's:1.:
Code:
<html><head></head><body>

<form action="loginlesen.php" method="post">
Benutzername:
<input type="text" name="Benutzer"><br><br>
Benutzerpasswort;
<input type="password" name="Benutzerpasswort"><br><br>
<input type="submit" value=Login>

</form></body></html>
2.
Code:
<?php
$file = fopen ('login.txt', 'r');
$korrekt = fgets($file,4000);
fclose($file);

if($korrekt == $_POST['Benutzer'] . "|" . $_POST['Benutzerpasswort']){
	echo "Ok";
}
else{
	echo "Nope";
}
?>
3.
Code:
Artemis|Website
 
Ahh jetzt klappt es bei mir auch.. Hat es etwas damit zu tun das der 2te input type nun kein text sonder "password" ist?

Vielen Dank nochmals !!
 
Das glaub' ich weniger, das hat einfach nur Sicherheitsaspekte - das eingegebene ist auch dem Bildschirm nicht sichtbar und die Eingabe wird auch nicht gespeichert wie bei manchen Browsern bei normalen inputs üblich.

Vergleich einfach deine Dateien mit meinen zeilenweise - dann wird schon irgendwo ein Fehler auftauchen.

PS: Für php sollte man eigentlich immer <?php schreiben und nicht nur <?, da das von manchen Servern nicht verarbeitet wrid.
 
Zurück
Oben