Hallo!
Ich möchte in ein HTML-Dokument einen Login einbauen. Wer kann mir dafür passenden Quellcode liefern? Meinen alten Freund Google fragt ich bereits, doch dieser lieferte mir nichts, was mir wirklich helfen kann.
Danke im Voraus
electrofreak
Hallo!
Ich möchte in ein HTML-Dokument einen Login einbauen. Wer kann mir dafür passenden Quellcode liefern? Meinen alten Freund Google fragt ich bereits, doch dieser lieferte mir nichts, was mir wirklich helfen kann.
Danke im Voraus
electrofreak
Hier findest du alles Nötige dazu:
SELFHTML: Webserver/CGI / Webserver / .htaccess - Server-Reaktionen kontrollieren
Zum Einloggen siehst du dann einen entsprechenden Login-Dialog deines Browsers beim Aufrufen der Webseite.
Das ist ganz normales HTML. Hier mal die Dokumentation von SelfHTML dazu:Zitat von electrofreak
SELFHTML: HTML / Formulare
Schwieriger ist dabei die sichere Verarbeitung des Logins auf dem Server.
Wie schon zwei mal gesagt: Du brauchst auch noch ein Serverprogramm, was den Login verarbeitet.
Wo befindet sich diese Webseite denn momentan - auf deinem Rechner oder im Internet? Wenn sie im Internet liegt: Hast du einen Webspace, auf dem du auch PHP oder andere Sprachen nutzen kannst?
Hallo
Ich habe es jetzt mal mit PHP und HTML versucht. Das Problem ist, dass ich es in 2 Dateien hinkriege, aber nicht in einer.
Hier der Code:
HTML-Code:<html> <p>Dein Benutzername: <input type="text" name="user" /></p> <p>Dein Passwort: <input type="text" name="passcode" /></p> <p><input type="submit" /></p> </html>PHP-Code:
<?php
echo $_POST['user'];
echo $_POST['passcode'];
?>
Hier mal ein einfaches Beispiel. Die Datei heißt login.php:
PHP-Code:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login-Beispiel</title>
</head>
<body>
<h1>Login-Beispiel</h1>
<?php
$username = '';
$output_login_form = FALSE;
// Will sich jemand einloggen?
if (isset($_GET['login']) && $_GET['login']=='true') {
// Stimmt Benutzername und Passwort überein?
if(isset($_POST['username']) && $_POST['username']=='electrofreak' && isset($_POST['password']) && $_POST['password']=='123456') {
echo '<h2>Herzlich Willkommen electrofreak!</h2>';
echo '<p>Der Login hat funktioniert und nun kannst auf deine passwortgeschützen Daten zugreifen.</p>';
} else {
echo '<h2>Login Error!</h2>';
echo '<p>Der Benutzername oder das Passwort ist falsch. Bitte überprüfe deine Eingaben.</p>';
$output_login_form = TRUE;
// Eingegebene Daten standardmäßig wieder in die Eingabefelder schreiben, damit der Benutzer nicht alles doppelt tippen muss.
$username = htmlspecialchars($_POST['username']);
}
} else {
$output_login_form = TRUE;
}
if ($output_login_form) {
echo '<form action="./login.php?login=true" method="post">
Benutzername: <input type="text" name="username" value="'.$username.'" /><br />
Passwort: <input type="password" name="password" /><br />
<input type="submit" value="Login">
</form>';
}
?>
</body>
</html>
Auf XAMPP kommt dabei das raus:
Login-Beispiel
Herzlich Willkommen electrofreak!
Der Login hat funktioniert und nun kannst auf deine passwortgeschützen Daten zugreifen.
Notice: Undefined variable: output_login_form in C:\xampp\htdocs\chat\login.php on line 30
Hallo
Ich hab's mir noch ein Stückchen einfacher gemacht und meinen Fehler gefunden.
Hier jetzt der ganze Code:
Der Fehler war, dass der <form>-Tag gefehlt hatte. Mein Problem ist jetzt aber immernoch, dass ich folgendes stehen habe:PHP-Code:
<?php
$user = 'nichts';
$pass = 'garnichts';
echo 'Kleines Beispiel für einen Login';
?><html>
<form action="" method="post">
<form action="action.php" method="post">
<p>Dein Passwort: <input type="text" name="user" /></p>
<p>Dein Passwort: <input type="text" name="pass" /></p>
<p><input type="submit" /></p>
</form>
</html>
<?php
echo $_POST['user'] . "<br />" . $_POST['pass'];
?>
Ich weiß, dass es ein dummer Fehler ist, aber irgendwie komme ich nicht drauf, was falsch ist.Zitat von Fehlermeldung
Wenn du keine POST-Daten überträgst, dann sind $_POST['user'] und $_POST['pass'] nicht definiert. Das solltest du vorher noch mit isset prüfen. Außerdem solltest du Eingaben vom Benutzer nicht direkt wieder ausgeben. Darin kann nämlich Schadcode enthalten sein. Um diesen zu entschärfen gibt es htmlspecialchars.
Das ist auch nur für das Beispiel, eigentlich soll's ja nicht so sein, bei mir kommt nämlich eigentlich danach folgendes:
PHP-Code:
<?phpif (($user == 'spyx') and ($passcode == $passspyx)):
$iam = 'Spyx';
echo "Angemeldet als: $iam";
?><html><form action="chat.php"> <input type="submit" value="Zum Chat"></form> </html><?php
endif;?>
OK, Ich habe jetzt folgendes gemacht:
Am Anfang die Variablen $user & $pass mit ''; deklariert.
Die 'isset's-Schleifen für die Variablen geschrieben, es soll die Ausgabe HI! erscheinen.
Nun kommt folgendes dabei raus:
HiHi
Notice: Undefined index: user in C:\xampp\htdocs\chat\ on line 74
Notice: Undefined index: pass in C:\xampp\htdocs\chat\ on line 75
Jetzt die Frage: Wie behebe ich es denn?
PHP-Code:
<?php
$user='';
$pass='';
?>HTML-Code:<html> <head> <title>Login</title> </head> <form method="post"> <form action="action.php" method="post"> <p>Dein Benutzername: <input type="text" name="user" /> Dein Passwort: <input type="password" name="pass" /> <input type="submit" /></p> </form> </html>PHP-Code:
//issets
if (isset($user))
{
echo'Hi';
}
if (isset($pass))
{
echo'Hi';
}
Zitat von XAMPP
Du hast noch mehr Quelltext, denn die Fehlermeldung bezieht sich auf Zeile 75 und 76. Und diese Zeilennummer kann ich mit 28 Zeilen Quelltext nicht erreichen.
Laut deiner Signatur beherrscht du (wenigstens ein bisschen) Python und Java. Dabei solltest du eigentlich selbst gelernt haben deine eigenen Programme zu debuggen. Das ist bei PHP nichts anderes.
Sorry, ich stehe bei PHP ziemlich am Anfang. Die anderen Zeilen sind Passwörter und Namen, daher will ich die lieber nicht posten. Zeile 75 & 76 ist folgendes:
PHP-Code:
<?php
$user = $_POST['user'];
$passcode = $_POST['pass'];
?>
Passwörter niemals im Klartext speichern. Schaue dir mal kryptografische Hashes mit Salt an.Zitat von electrofreak
Außerdem wäre es sinnvoll, diese Daten in einer eigenen (passend abgesicherten) Datei zu speichern und deinen Algorithmus so zu schreiben, dass er mit einer beliebigen Anzahl von Benutzername-Passwort-Paaren klar kommt.
Wenn PHP jetzt versucht auf $_POST['user'] zuzugreifen, aber diese Variable vom Browser nicht gesendet wurde, dann kommt die Fehlermeldung. Denn dann ist sie ja nicht definiert. Schaue dir noch einmal genau an, was isset macht und wo man es sinnvollerweise einsetzen sollte. Denn so, wie du es momentan verwendest, ist es total sinnlos.Zitat von electrofreak