Hallo!
Als ich vor etwa 10 Monaten mit der Programmierung meiner Community Seite begonnen habe ich php mässig noch nicht allzuviel gemacht, nur sowas wie newsscripte, gästebuch usw aber nichts mit login , sessions etc...
also musste ich mich da erstmal einlesen und habe ein login system gebastelt das bis jetzt eigentlich gut funktioniert, da ich allerdings nie ein anderes beispiel gesehen habe wollte ich die kenner mal fragen wo die schwächen bei meinem script liegen und was ich verbessern sollte/könnte oder ob es so okay ist.
Beim Login form gibt man email und passwort ein und kann auswählen ob die logindaten gespeichert werden sollen oder nicht, das ganze sieht so aus:
nachdem alles überprüft wurde werden 2 cookies gespeichert, einmal mit der user id und einmal mit der md5 checksumme des passworts...je nachdem ob man Dauerhaft speichern aktiviert hat oder nicht werden die cookies entweder 1 Stunde oder 2 Jahre gespeichert...ich habe an dieser stelle nichts zum berechnen der sid, der server speichert die session wohl automatisch in einem cookie weil sie per URl nicht übergeben wird und ich sicherhaltshalber Trans id per htaccess unterbunden habe!
Gut das ist der erste teil, jetzt kommt noch der code der am anfang jeder Seite ausgeführt wird um zu schauen ob der benutzer eingeloggt ist oder nicht:
als erstes wird geprüft ob die cookies existieren, dann wird überprüft ob die gespeicherte pw Prüfsumme mit der in der Datenbank übereinstimmt, wenn ja werden relevante user daten in der session gespeichert, wenn nicht wird die userid auf 0 gesetzt (ich überprüfe damit ob der user eingeloggt ist oder nicht).
So das wars auch schon, würde mich freuen wenn da jemand was zu sagen könnte!
Das System funktioniert so natürlich nur mit cookies, das ist aber auch gewollt da mit Transid zuviele sicherheitsrisiken birgt und sich bis jetzt auch noch niemand beschwert hat (habe schon über 200 mitglieder).
na dann bin ich mal gespannt![Smilie](https://www.php-resource.de/forum/core/images/smilies/smile.gif)
Wünsche noch einen schönen Sonntagabend!
gruß
Arne
Als ich vor etwa 10 Monaten mit der Programmierung meiner Community Seite begonnen habe ich php mässig noch nicht allzuviel gemacht, nur sowas wie newsscripte, gästebuch usw aber nichts mit login , sessions etc...
also musste ich mich da erstmal einlesen und habe ein login system gebastelt das bis jetzt eigentlich gut funktioniert, da ich allerdings nie ein anderes beispiel gesehen habe wollte ich die kenner mal fragen wo die schwächen bei meinem script liegen und was ich verbessern sollte/könnte oder ob es so okay ist.
Beim Login form gibt man email und passwort ein und kann auswählen ob die logindaten gespeichert werden sollen oder nicht, das ganze sieht so aus:
PHP-Code:
session_start();
include ('functions.php');
include ('connect.php');
$return_login=login_right($_POST['email'],md5($_POST['pass']));
if ($return_login!=0 && $return_login!="no")
{
$query="SELECT active FROM user WHERE id='$return_login'";
$result=mysql_query($query);
$aktiv=mysql_fetch_object($result);
if ($aktiv->active==0)
{
$query="UPDATE user SET active=1 WHERE id='$return_login'";
$insert=mysql_query($query) or die (mysql_error());
}
$checksum=md5($_POST['pass']);
if(isset($_POST['forever']))
{
setcookie (cid,$return_login,time()+60*60*24*365*2);
setcookie (cmd5,$checksum,time()+60*60*24*365*2);
} else {
setcookie (cid,$return_login,time()+3600);
setcookie (cmd5,$checksum,time()+3600);
}
$_SESSION['id']=$return_login;
$_SESSION['ip']=$_SERVER['REMOTE_ADDR'];
mysql_close();
$url="/?action=showcar";
gotoURL($url);
} else
{
mysql_close();
$url="/?action=login";
gotoURL($url);
}
Gut das ist der erste teil, jetzt kommt noch der code der am anfang jeder Seite ausgeführt wird um zu schauen ob der benutzer eingeloggt ist oder nicht:
PHP-Code:
if (isset($_COOKIE['cid']) && isset($_COOKIE['cmd5'])) {
$cmd5=$_COOKIE['cmd5'];
$cid=$_COOKIE['cid'];
$query = "SELECT pchecksum FROM user WHERE id='$cid'";
$result = mysql_query($query) OR die(mysql_error());
$pcheck = mysql_fetch_object($result);
mysql_free_result($result);
if ($cmd5==$pcheck->pchecksum) {
$_SESSION['id']=$cid;
$query="SELECT nick,email FROM user WHERE id='".$_SESSION['id']."'";
$result=mysql_query($query);
$user=mysql_fetch_object($result);
$query="SELECT cats FROM forum_mods WHERE user_id='".$_SESSION['id']."'";
$result=mysql_query($query);
$cats=mysql_fetch_object($result);
$jetzt=time();
$query="UPDATE user SET lastvisit='$jetzt' WHERE id='".$_SESSION['id']."'";
$update=mysql_query($query);
$_SESSION['nick']=$user->nick;
$_SESSION['email']=$user->email;
$_SESSION['cats']=$cats->cats;
} else {
$_SESSION['id']=0;
$_SESSION['cats']=0;
}
} else {
$_SESSION['id']=0;
$_SESSION['cats']=0;
}
So das wars auch schon, würde mich freuen wenn da jemand was zu sagen könnte!
Das System funktioniert so natürlich nur mit cookies, das ist aber auch gewollt da mit Transid zuviele sicherheitsrisiken birgt und sich bis jetzt auch noch niemand beschwert hat (habe schon über 200 mitglieder).
na dann bin ich mal gespannt
![Smilie](https://www.php-resource.de/forum/core/images/smilies/smile.gif)
Wünsche noch einen schönen Sonntagabend!
gruß
Arne
Kommentar