Probleme mit Login-Skript
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
code
dank
einloggen
header
http
index
log
login
ordner
output
paket
projekt
salz
server
setzen
spalte
springen
string
weiterleitung
-
hi ich habe folgende Porblem
ich habe Login
session_start(); if(!isset($_SESSION['UserID'])) { require_once("system/autologout.php"); if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){ $sql = "SELECT ID FROM User WHERE Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND Passwort = '".md5(trim($_POST['Passwort']))."' "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); $row = mysql_fetch_assoc($result); if (mysql_num_rows($result)==1){ doLogin($row['ID'], isset($_POST['Autologin'])); ?> <div id="fehler"> <?php echo "<h4>Willkommen ".$_SESSION['Nickname']."</h4>\n"; ?> <p> "Sie wurden erfolgreich eingeloggt.<br /> "Zur <a href="../?seite=log">Startseite</a> <?php header ("Refresh: 5; ../?seite=log"); ?> </p> </div> <?php } else{ ?> <p id="fehler"> "Sie konnten nicht eingeloggt werden.<br /> "Nickname oder Passwort fehlerhaft.<br /> "Zurück zum <a href="<?php $_SERVER['PHP_SELF']; ?>">Login-Formular</a> <?php header ("Refresh: 5; ../?seite=start"); ?> </p> <?php } } else{ ?> <form name="Login" action="<?php $_SERVER['PHP_SELF'] ?>" method="post" accept-charset="ISO-8859-1"> <table> <tr> <td> <fieldset id="dialog"> <p>Bitte geben Sie Zugangsdaten um Server anzumelden</p> </fieldset> </td> </tr> <tr> <td> <fieldset id="box"> <table> <tr> <td> <p>UserName</p> </td> <td> <input type="text" name="Nickname" maxlength="32"> </td> </tr> <tr> <td> <p>Passwort</p> </td> <td> <input type="password" name="Passwort"> </td> </tr> <tr> <td> <p>Eingeloggt bleiben</p> </td> <td> <input type="checkbox" name="Autologin" value="1"> </td> </tr> <tr> <td id="log"> <input type="submit" name="submit" value="Einloggen"> </td> </tr> </table> </fieldset> </td> </tr> </table> </form> <?php } }else { header('Location: ?seite=log'); } ?>
der Fuktionert wunderbar
nur ich will bei einloggen "admin" oder ID "1" nicht in "header('Location: ?seite=log'); sonder in Ordner "admin/index.php"
und restliche UserID soll "header('Location: ?seite=log');"
Danke vorraus
Beitrag zuletzt geändert: 17.2.2015 20:39:06 von youtvti -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hallo youtvti,
dann mach doch einfach anstatt?> <div id="fehler"> <?php echo "<h4>Willkommen ".$_SESSION['Nickname']."</h4>\n"; ?> <p> "Sie wurden erfolgreich eingeloggt.<br /> "Zur <a href="../?seite=log">Startseite</a> <?php header ("Refresh: 5; ../?seite=log"); ?> </p> </div> <?php
dieses hier:?> <div id="fehler"> <?php echo "<h4>Willkommen ".$_SESSION['Nickname']."</h4>\n"; ?> <p> "Sie wurden erfolgreich eingeloggt.<br /> <?php if($row['ID']==1) { header ("Refresh: 5; admin/index.php"); }else { ?> "Zur <a href="../?seite=log">Startseite</a> <?php header ("Refresh: 5; ../?seite=log"); ?> <?php } ?> </p> </div> <?php
lg hechma -
Bei deinem Login verwendest Du MD5 als Passworthash, das ist prinzipiell keine so gute Idee (google einfach mal nach MD5 unsicher). Je nachdem wie groß dein Projekt ist wird das dich im Moment wahrscheinlich nicht so sehr interessieren, aber ich denke bei so etwas ist es gut von Anfang an sicherere Methoden zu verwenden (z.B. http://php.net/manual/en/function.password-hash.php).
Desweiteren könnte das Setzen von Headern mittem im Quelltext zu Problemen führen ("Headers already sent"), da auf den Lima Servern soweit ich weiß kein output buffering aktiviert ist, bei XAMPP oder ähnlichen Paketen meistens aber schon (da kommen dann immer wieder Fragen warum das denn auf dem dummen Lima Server nicht funktioniere ;)).
Am besten setzt Du die header ganz am Anfang von der Datei oder verwendest HTML meta Weiterleitungen (http://de.selfhtml.org/html/kopfdaten/meta.htm#weiterleitung). -
was ist mit dieser php
if(!isset($_SESSION['UserID'])) { }else { header('Location: ?seite=log'); }
sonst kann man urladress von id in andere id springen -
statt md5
$string = 'Benutzerpasswort';
$salt = 'PasswortSalz';
hash('sha512',$string.$salt)
im Script
md5(trim($_POST['Passwort']))
zu
hash( 'sha512', trim( $_POST['Passwort'] ).$salt )
und in der Datenbank-Spalte "Passwort" auf varchar(128) setzen
$salt (Salz) dann in deinem Script ändern!!!
Beitrag zuletzt geändert: 29.4.2015 10:39:48 von mg123 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage