Loginscript mit Sessions,cookies und Mysql

Hier mal ein kleineres Loginscript ich weiß nicht gerade das beste ^^

erstmal die tabelle


CREATE TABLE `users` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 30 ) NOT NULL ,
`password` VARCHAR( 250 ) NOT NULL ,,
`email` VARCHAR( 180 ) NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;


config.php


<?php
$db['host'] ="";//mysql host meist localhost
$db['user'] =""; // mysqluser
$db['passwd'] =""; //mysqlpasswort
$db['name'] =""; // name der datenbank
?>


register.php


<?php
ob_start();
session_start ();
require ('config.php');

$sql_connect = mysql_connect($db['host'], $db['user'], $db['passwd'])
OR die('Fehler bei der Verbindung zur Datenbank aufgetreten');

$db=mysql_select_db($db['name']);
OR die('Konnte Datenbank nicht auswählen');

if ((isset($_COOKIE["username"]))&&(isset($_COOKIE["pw"])) && ($_SESSION["eingeloggt"] != 1))
{ //abfrage ob cookies existieren und ob schon eingeloggt wenn cookies existieren und nicht eingeloggt ist dann werden hier die abfragen gemacht
$username=$_COOKIE["username"]; //inhalt aus dem cookie in $username reinsetzen
$sql=mysql_query("select * from users where name='$username'"); //daten auslesen vom $username
while($row = mysql_fetch_array($sql))
{

//inhalte aus der db in varis speichern
$id = $row['id'];
$user = $row['user'];
$email = $row['email'];
$pw2 = $row['password'];

}
$pw =$_COOKIE["pw"]; //inhalt des cookies in der vari pw speichern

if ($pw == $pw2) //abfrage ob db pw mit cookie pw stimmt
{ //wenn ja sessions setzen
$_SESSION["user_id"] = $id;
$_SESSION["user"] = $user;
$_SESSION["email"] = $email;
$_SESSION["eingeloggt"] = 1;
echo '<meta http-equiv="refresh" content="0; URL=index.php">'; //umleitung zuer index seite
}//abfrage ob pw im cookie stimmt
else
{ //wenn nicht kommt das formular

echo'<form name="posting" action="register.php" method="post"> ';
echo' Name*<br>';
echo'<input type="text" name="name" id="namefeld" value=""><br>';
echo'Passwort*<br>';
echo'<input type="text" name="passwort" id="namefeld" value=""><br>';
echo'Passwort wiederholung*<br>';
echo'<input type="text" name="passwort2" id="namefeld" value=""><br>';
echo'Email*<br>';
echo'<input type="text" name="email" id="namefeld" value=""><br>';
echo'<input type="submit" value="Regestrieren" class="Button3" style="width: 120px;" id="button">';
echo'<input type="hidden" name="action" value="Regestrieren"><br><br> ';
echo'</form>';

}
}//abfrage ob session und cookies existieren
else
{ ///wenn nicht kommt das formular

echo'<form name="posting" action="register.php" method="post"> ';
echo' Name*<br>';
echo'<input type="text" name="name" id="namefeld" value=""><br>';
echo'Passwort*<br>';
echo'<input type="text" name="passwort" id="namefeld" value=""><br>';
echo'Passwort wiederholung*<br>';
echo'<input type="text" name="passwort2" id="namefeld" value=""><br>';
echo'Email*<br>';
echo'<input type="text" name="email" id="namefeld" value=""><br>';
echo'<input type="submit" value="Regestrieren" class="Button3" style="width: 120px;" id="button">';
echo'<input type="hidden" name="action" value="Regestrieren"><br><br> ';
echo'</form>';
}


if ($action == "Regestrieren")
{
if (!$name || !$passwort || !$passwort2 || !$email ) //abfrage ob alle Felder ausgefüllt wurden
{ //wenn nicht Fehlermeldung
echo 'Sie haben nicht alle Benötigten Felder ausgefüllt';
}
else
{
if($passwort==$passwort2) //abfrage ob pw 1 mit 2 stimmt
{//wenn ja
if (!eregi ("^([a-z0-9_]|-|.)+@(([a-z0-9_]|-)+.)+[a-z]{2,4}$", $email))//abfrage ob email richtiges format hat
{//wenn email kein richtiges format hat
echo 'Ihre Emailadresse ist nicht gültig';
}
else
{ //wenn alles richtig ausgefüllt in db eintragen
$sql = "INSERT INTO users (name, password, email) VALUES ('$name', sha1('$passwort'), '$email')";
$sql2 = mysql_query($sql);
echo 'Danke für ihre Regiestration';
$close =mysql_close($sql_connect);
echo '<meta http-equiv="refresh" content="3; URL=index.php">'; //weiterleitung zur index seite
}
}
else
{
echo 'Die beiden Passwörter stimmen nicht überein';
}
}
}
flush();
ob_end_flush() ;
?>


login.php


<?php
ob_start();
session_start ();
require ('config.php');


$sql_connect = mysql_connect($db['host'], $db['user'], $db['passwd'])
OR die('Fehler bei der Verbindung zur Datenbank aufgetreten');

$db=mysql_select_db($db['name']);
OR die('Konnte Datenbank nicht auswählen');

if ((isset($_COOKIE["username"]))&&(isset($_COOKIE["pw"])) && ($_SESSION["eingeloggt"] != 1))
{ //abfrage ob cookies existieren und ob schon eingeloggt wenn cookies existieren und nicht eingeloggt ist dann werden hier die abfragen gemacht
$username=$_COOKIE["username"]; //inhalt aus dem cookie in $username reinsetzen
$sql=mysql_query("select * from users where name='$username'"); //daten auslesen vom $username
while($row = mysql_fetch_array($sql))
{

//inhalte aus der db in varis speichern
$id = $row['id'];
$user = $row['user'];
$email = $row['email'];
$pw2 = $row['password'];

}
$pw =$_COOKIE["pw"]; //inhalt des cookies in der vari pw speichern

if ($pw == $pw2) //abfrage ob db pw mit cookie pw stimmt
{ //wenn ja sessions setzen
$_SESSION["user_id"] = $id;
$_SESSION["user"] = $user;
$_SESSION["email"] = $email;
$_SESSION["eingeloggt"] = 1;
echo '<meta http-equiv="refresh" content="0; URL=index.php">';//weiterleitung zur index seite
}//abfrage ob pw im cookie stimmt
else
{ //wenn nicht kommt das formular

echo'<form name="posting" action="login.php" method="post">';
echo'Name<br>';
echo'<input type="text" name="name" id="namefeld" value=""><br>';
echo'Passwort<br>';
echo'<input type="text" name="passwort" id="namefeld" value=""><br><br>';
echo'<input type="submit" value="Login" class="Button3" style="width: 80px;" id="button">';
echo'<input type="hidden" name="action" value="Login"><br><br>';
echo'</form>';

}
}//abfrage ob session und cookies existieren
else
{ //wenn nicht kommt das formular

echo'<form name="posting" action="login.php" method="post">';
echo'Name<br>';
echo'<input type="text" name="name" id="namefeld" value=""><br>';
echo'Passwort<br>';
echo'<input type="text" name="passwort" id="namefeld" value=""><br><br>';
echo'<input type="submit" value="Login" class="Button3" style="width: 80px;" id="button">';
echo'<input type="hidden" name="action" value="Login"><br><br>';
echo'</form>';
}

if ($action == "Login") //abfrage ob login gedrückt wurde
{ //wenn ja
if ((!empty($name)) && (!empty($passwort))) //abfrage ob felder ausgefüllt wurden
{
$users=mysql_query("select * from ma_users where name='$name'"); //datensätze auslesen
while($row3 = mysql_fetch_array($users))
{//in varis speichern
$id = $row3['id'];
$user = $row3['name'];
$email = $row3['email'];
$style = $row3['style'];
$pw2 = $row3['password'];
}
$pw=sha1($passwort); //mit sha1 umwandeln
if ($pw ==$pw2) //abfragen ob pw1 mit 2 stimmt
{ //wenn ja
//cookies und sessions setzen
setcookie("username",$user,time()+2592000);
setcookie("pw",$pw,time()+2592000);
$_SESSION["user_id"] = $id;
$_SESSION["user"] = $user;
$_SESSION["email"] = $email;
echo '<meta http-equiv="refresh" content="0; URL=index.php">';

}
else
{//wenn pw1 nicht = mit 2
echo 'Ihr eingegeben Passwort ist falsch';
}
}
else
{//wenn alle felder nicht ausgefüllt sind
echo ' Sie haben nicht alle Felder ausgefüllt';
}
}

flush();
ob_end_flush() ;
?>


logout.php

<?php
ob_start();
session_start ();
require ('config.php');

$sql_connect = mysql_connect($db['host'], $db['user'], $db['passwd'])
OR die('Fehler bei der Verbindung zur Datenbank aufgetreten');

$db=mysql_select_db($db['name']);
OR die('Konnte Datenbank nicht auswählen');

if ((isset($_COOKIE["username"]))&&(isset($_COOKIE["pw"])) && ($_SESSION["eingeloggt"] != 1))
{ //abfrage ob cookies existieren und ob schon eingeloggt wenn cookies existieren und nicht eingeloggt ist dann werden hier die abfragen gemacht
$username=$_COOKIE["username"]; //inhalt aus dem cookie in $username reinsetzen
$sql=mysql_query("select * from users where name='$username'"); //daten auslesen vom $username
while($row = mysql_fetch_array($sql))
{

//inhalte aus der db in varis speichern
$id = $row['id'];
$user = $row['user'];
$email = $row['email'];
$pw2 = $row['password'];

}
$pw =$_COOKIE["pw"]; //inhalt des cookies in der vari pw speichern

if ($pw == $pw2) //abfrage ob db pw mit cookie pw stimmt
{ //wenn ja sessions setzen
$_SESSION["user_id"] = $id;
$_SESSION["user"] = $user;
$_SESSION["email"] = $email;
$_SESSION["eingeloggt"] = 1;

//ausloggen
setcookie("username","",time()-2592000);
setcookie("pw","",time()-2592000);
session_destroy();
echo '<meta http-equiv="refresh" content="0; URL=index.php">';//weiterleitung zur index seite
}//abfrage ob pw im cookie stimmt
else
{//wenn nicht weiterleitung zur index seite

echo '<meta http-equiv="refresh" content="0; URL=index.php">';//weiterleitung zur index seite

}
}//abfrage ob session und cookies existieren
else
{ //wenn nicht weiterleitung zur index seite

echo '<meta http-equiv="refresh" content="0; URL=index.php">';//weiterleitung zur index seite
}



flush();
ob_end_flush() ;
?>



so um nun abzufragen ob jemand ein bzw ausgeloggt ist kann auf der Seite einfach folgendes ganz oben setzen


<?php
ob_start();
session_start ();
require ('config.php');

$sql_connect = mysql_connect($db['host'], $db['user'], $db['passwd'])
OR die('Fehler bei der Verbindung zur Datenbank aufgetreten');

$db=mysql_select_db($db['name']);
OR die('Konnte Datenbank nicht auswählen');

if ((isset($_COOKIE["username"]))&&(isset($_COOKIE["pw"])) && ($_SESSION["eingeloggt"] != 1))
{ //abfrage ob cookies existieren und ob schon eingeloggt wenn cookies existieren und nicht eingeloggt ist dann werden hier die abfragen gemacht
$username=$_COOKIE["username"]; //inhalt aus dem cookie in $username reinsetzen
$sql=mysql_query("select * from users where name='$username'"); //daten auslesen vom $username
while($row = mysql_fetch_array($sql))
{

//inhalte aus der db in varis speichern
$id = $row['id'];
$user = $row['user'];
$email = $row['email'];
$pw2 = $row['password'];

}
$pw =$_COOKIE["pw"]; //inhalt des cookies in der vari pw speichern

if ($pw == $pw2) //abfrage ob db pw mit cookie pw stimmt
{ //wenn ja sessions setzen

$_SESSION["user_id"] = $id;
$_SESSION["user"] = $user;
$_SESSION["email"] = $email;
$_SESSION["eingeloggt"] = 1;

}//abfrage ob pw im cookie stimmt
else
{


//wenn nicht normaler seiten inhalt oder umleitung


}
}//abfrage ob session und cookies existieren
else
{


//wenn nicht normaler seiten inhalt oder umleitung


}



flush();
ob_end_flush() ;
?>


Ich weiß nicht gerade Optimal aber es geht

Kommentare

Markus René Einicher
Markus René Einicher am Freitag, 22. Juli 2005 um 18:07

Schön, du hast Quelltext hinterlegt. Wo ist das Tutorium?

unkie
unkie am Freitag, 22. Juli 2005 um 19:58

im quelltext-drinn? es ist doch alles erklärt!

blackfeet
blackfeet am Donnerstag, 28. Juli 2005 um 23:24

Trotzdem ist es "nur" kommentierter Quelltext.

Markus René Einicher
Markus René Einicher am Freitag, 29. Juli 2005 um 20:57

Genau, zumindest eine Einleitung sollte drin sein, aber selbst dann isses kein Tut.

coyotE
coyotE am Samstag, 30. Juli 2005 um 21:03

es fehlt zudem eine möglichkeit, die bei der registrierung prüft, ob der gewünschte name shcon vorhanden ist ... ansonsten wird dieser immer wieder überschrieben -.-

Chapter
Chapter am Donnerstag, 4. August 2005 um 13:37

Also ich find das teil super. wenns wirklich funktioniert wärs extrem geil

Darky
Darky am Dienstag, 9. August 2005 um 00:40

naja ganz nett das Prob ist nur das man das pw net in nem cookie speichern sollte.... ;)

ausserdem soltlem an das pw als md5 in die datenbank speichern...

also sicher ist der login nicht...

eternitysoft
eternitysoft am Montag, 15. August 2005 um 22:16

öh ich nehme nich md5 weil das nicht so sicher wie sha1 sein soll oO
und wenn du guckst lass ich das pw mit sha1('$passwort') verschlüsseln ;) naja werd es noch verbessern ob nahme schon vorhanden ist e.t.c
mfg
et

Blizz4rd
Blizz4rd am Freitag, 21. Oktober 2005 um 19:09

jo währe super obwohl ich habe schon sowas selber gecodet ach interessiert keinen egal.

muuhmann
muuhmann am Donnerstag, 1. Dezember 2005 um 09:29

funzt nicht..