Php Loginseite verwirklichen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
beispiel
benutzername
bescheid
code
datenbank
finger
funktion
http
login
neusten stand
ordner
paar
parameter
sagen
session
sinn
url
verwendung
zeigen
-
Hallo,
Ich habe eine Login-Seite erstellt, aber sie funktioniert nicht...
Hat wer eien Idee, wie ich das machen kann?
Der Benutzername ist ein Ordner im Ordner user und das Passwort ist in einer Textdatei im Benutzerordner.
Ich habe schon probiert, kann aber trotzdem jemand einen Codeschnippsel als Beispiel zeigen?
Danke im Vorraus
Max -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo dataserver,
es wäre hilfreich, wenn du uns mal den Code zeigen würdest, den du bisher hast, sonst ist es schwer zu sagen, wo es bei dir hakt
Wieso ist der Benutzername ein Ordner? Das kannst du entweder (für den Anfang) direkt in den Code schreiben oder später dann in einer Datenbank speichern.
MfG biberiusmero
Beitrag zuletzt geändert: 27.8.2015 22:45:46 von biberiusmero -
Hallo Dataserver,
hier findest Du ein komlettes Beispiel für eine Login-Seite mit allem Drum und Dran:
http://www.mywebsolution.de/workshops/2/show_PHP-Loginsystem.html
Gruss
Dunkeltuten -
Allerdings auch recht veraltet. Die mysql_*-Funktionen werden eh bald aus PHP raus fliegen. Dafür gibt's seit Jahren PDO oder mysqli.
Der Sinn mit den Ordnern ergibt sich mir auch nicht. Zumal diese wahrscheinlich offen innerhalb des Docroots liegen.
Speichere die Daten entweder direkt in einer .php-Konfig, Datenbank oder benutze einen .htaccess-Schutz.
Ohne konkrete Frage kann man da wenig zu sagen. -
OK, ihr habt mich über zeugt...
Das ganze System muss nicht das sicherste sein.
Ich leider gerade unterwegs und wenn ich wieder zuhause bin, werde ich mal den Code Posten, vielleicht findet irgendwer den Fehler...
Ansonsten vielen Dank bisher!
PS.: Weiß irgendwie, ob man hier bei Lima City den Benutzernamen andern kann? -
dataserver schrieb:
PS.: Weiß irgendwie, ob man hier bei Lima City den Benutzernamen andern kann?
Nein, geht nicht. Du kannst aber einfach einen anderen Benutzer registrieren. -
Das ist mein login.php (rufe ich immer mit include auf jeder Seite auf):
<?php @$sessiontime = 600; if(isset($_COOKIE["user"])){ // -x- } else { if(isset($_COOKIE["pass"])){ } else { @setcookie("user",'00000000',time()+($sessiontime)); @setcookie("pass",'00000000000000000000000000000000',time()+($sessiontime)); } } @$cookieuser = $_COOKIE["user"]; @$cookiepass = $_COOKIE["pass"]; $realuser = 0; $filepass = 'FILE_NOT_FOUND'; $myfile = @fopen("user/" .$cookieuser. "/pass.txt", "r"); $filepass = @fread($myfile,filesize("user/" .$cookieuser. "/pass.txt")); @fclose($myfile); if (isset($cookieuser)) { $realuser = $cookieuser; } if($cookiepass == $filepass){ // Login erfolgreich @setcookie("user",$realuser,time()+($sessiontime)); @setcookie("pass",$filepass,time()+($sessiontime)); } else { include_once 'postlogin.php'; echo 'err<br>'; } ?> login erfolgreich (cookie)
Die Datei Postlogin.php wird mit include verbunden, wenn kein cookie mit den richtigen Zugangsdaten verfügbar ist (theoretisch, aber es funktioniert nicht):
<?php @$sessiontime = 600; @$postuser = $_POST['user']; @$postpass = $_POST['pass']; $myfile = @fopen("user/" .$postuser. "/pass.txt", "r"); $filepass = @fread($myfile,filesize("user/" .$postuser. "/pass.txt")); @fclose($myfile); $realuser = $postuser; if(isset($_POST['submit'])){ if($postpass != $filepass){ ?> <title>Geschützter Bereich</title> <meta charset="UTF-8"> <link rel="stylesheet" href="css/style.css"> <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script> <script src="js/index.js"></script> <div id="login"><div id="triangle"></div> <form method="POST" action=""> <input type="text" name="user" placeholder="Benutzername"></input> <input type="password" name="pass" placeholder="Passwort"></input> <input type="submit" name="submit" value="Login"></input> </form> </div> <?php exit; } else { @setcookie("user",$realuser,time()+($sessiontime)); @setcookie("pass",md5($postpass),time()+($sessiontime)); }/* --- */ } ?> <br>logged in-post<br>
Ich weiß,dass ich so etwas wie session verwenden könnte, aber so gut kenne ich mich nicht aus....
Vielen Dank im Vorraus!
Max -
Einfach am Anfang jeder Seiten abfragen ob eine Session gestartet wurde
// if (! isset($_SESSION["session_started"]))
// {
// session_start();
// $_SESSION["session_started"] = true;
// }
Ansonsten ist das ganze genau so wie variablen zu betrachten.
zb : $variable ist das $_SESSION['variable'] allerdings müssen die dann auch gesetzt werden.
// $_SESSION['variable'] = $variable;
-
Was hast du denn genau vor? U.U. reicht dir hier auch einfach eine .htaccess-Lösung. Die ist fix gemacht und für einen Ordnerschutz auf jeden Fall ausreichend.
Falls du doch PHP willst:
Session ist hier auf jeden Fall die bessere und sicherere Lösung.
Bei jeder geschützten Seite sowas wie.if (empty($_SESSION['username'])) { header('Location: login.php'); exit; }
login.php
$arrUsers = array(); $arrUsers['bla'] = 'blub'; if (isset($_POST['username']) && isset($_POST['password'])) { if (isset($arrUsers[$_POST['username']]) && $arrUsers[$_POST['username']] == $_POST['password'])) { $_SESSION['username'] = $_POST['username']; // OK else { // NOK } } } // HTML-Zeug
-
Hallo,
bin zwar nicht mehr ganz auf dem neusten Stand was php und sql angeht und muss mich da erstmal wieder neu informieren allerdings denke ich, dass es diese Lösung möglicherweise auch tun könnte:
http://php-einfach.de/tuts_mysql_login.php
Das hatte ich damals mit ein paar sicherheitstechnischen Änderungen in Verwendung gehabt. Falls ich hier etwas falsches empfehle bitte Bescheid geben! -
fridolino schrieb:
Das hatte ich damals mit ein paar sicherheitstechnischen Änderungen in Verwendung gehabt. Falls ich hier etwas falsches empfehle bitte Bescheid geben!
Absolut. mysql_* ist veraltet und fliegt bald.
Davon abgesehen: FINGER WEG!
Absolute Anfängerfehler drin. Sogar User-Parameter werden ungefiltert einfach übernommen.
Das ist ein absolutes NoGo und wirklich die erste Sache, die man lernen sollte. Das reißt dir die größten Sicherheitslücken überhaupt rein. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage