Login..&..Logout

Hi,
Ich möchte das sich Besucher bei meiner Webseite Registrieren können…

Username:
Passwort:
Email:

nun Username, Passwort & Email Speicher ich zb. in die tabelle registrieren
nun wie mach ich das das der User sich einloggen kann …und wenn er sich eingeloggt hat, wieder sich ausloggen kann ?
Ach ja : Muss das Passwort verschlüsselt werden oder so ?

MfG fishi :ps:

ayom.com/faq/login-skript-mi … a-658.html
administrator.de/php_-_einfa … sions.html

Unteres ist das einfachere, verwende ich selbst - ist aber wirklich simpel und schlicht gehalten.

edit: oberes ungetestet!

[quote=“kerbination”]http://www.ayom.com/faq/login-skript-mit-sessions-php-und-mysql-a-658.html
administrator.de/php_-_einfa … sions.html

Unteres ist das einfachere, verwende ich selbst - ist aber wirklich simpel und schlicht gehalten.

edit: oberes ungetestet![/quote]

okey so eins hatte ich auch mal…einfach ohne Session…

hmm thx mal !
Nun muss ich die Gespeicherten Pas. verschlüsseln oder so ?

Ich hatte meine damals nicht verschlüsselt - Und bis heute hat sich neimand beschwert. Solange die SQL sicher ist braucht man das m.E. nicht.

hmm okey …und sonst irgent was verschlüsselt ? …sry kp…

kp… ich hatte damals nur das Script per include eingebunden wegen des Quellcodes (keine Ahnung ob das funktioniert aht, damals war ich noch grün hinter den Ohren).

Und seitdem ich nurnoch CMS für solche Sachen verwende habe ich mich auch nicht weiter in diese Richtung erkundigt.

hmm okey …jetzt hab ich ein anders prob…ich weiss nicht wie ich mit der DB machen soll…

CREATE TABLE IF NOT EXISTS `register_login` (
  `id` bigint(255) NOT NULL auto_increment,
  `user` text NOT NULL,
  `passwort` text NOT NULL,
  `email` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM

nun beim login muss man User & Pas. angeben…(is ja klar :unamused: )
Aber ich weiss nicht wie ich das überprüfen soll ob es in der DB den user & pas. hat… :qst2: :qst2: :qst2: o.0

Ich mach mal ein Beisp.:
Ich will mich mit ‚fishi‘ und den passwort ‚bplaced‘ einloggen nun wie überprüfe ich ob der user ‚fishi‘ existiert und das Pass stimmt …

Edit: @kerbination: Danke …das 2te hab ich mal getestet und ich finds gut :smiley: :slight_smile:

SQL importieren, PWs mit crypt() und zufallssalt verschlüsseln (das ist das sicherste)

beim login einfach so abfragen:

//setzen von $pass und $user aus $_POST

$sql="SELECT `passwort`, `id` FROM `register_login` WHERE `user` = '$user'";
$sql=mysql_query($sql);
$sql=mysql_fetch_assoc($sql);

if(crypt($pass, $sql['passwort']) == $sql['passwort'])
{
    //Hier login
}
else
{
   //Falscher Login
}

code zum registrieren:

function randomstr()
{
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
    $str="";

    for($i = 0; $i < 8; $i++)
       $str .= $chars[rand(0, count($chars)-1)];

    return $str;
}

//setzen von $user, $pass, $mail

$pass=crypt($pass, "$1$".randomstr()."$");

$sql="INSERT INTO `register_login` (`user`, `passwort`, `email`) VALUES ('$user','$pass', '$email')";
mysql_query($sql);

Die Codes müssen umbedingt noch gegen SQL-Insertions usw. geschützt werden!

[quote=“michi7x7”]
Die Codes müssen umbedingt noch gegen SQL-Insertions usw. geschützt werden![/quote]

Du meinst: ch2.php.net/strip_tags oder ?

hmm…ich versuch dann den Code gleich mal…

für was crypt() '?? …

ach ja: danke ! :smiley:

crypt() ist für die Verschlüsslung der Passwörter.

hmm okey…

nun eig. möcht ich es so irgend wie machen:

$user = "*user von MySQL Datenbank *"
$pw = "*passwort von MySQL Datenbank*"
//dann das :
//nun kommen die if abfragen die das ganze relativ sicher machen
if (isset($user, $pw))
    {
    if ($user == "" OR $pw == "")
        {
        echo "<b>Bittefülle beide Felder aus!</b>";
        }
        elseif ($user == $user_name AND $pw == $user_pass)
            {
            $_SESSION['user'] = $user;
            $_SESSION['pw'] = $pw;
            echo "<b>Wunderbar! Dein Login war erfolgreich, du kannst nun <a href=\"index2.php?".sid."\">hier</a> in den Geschützen Bereich</b>";
            }
    }

//dann kommt das Formular
if (!isset($user, $pw))
    {
    echo '<form name="login" method="post" action="'.$_SERVER['PHP_SELF'].'">
      User Name: <input type="text" name="user"> User Passwort:  <input type="password" name="pw">
      <input type="submit" name="Submit" value="einloggen">
    </form>';
    }
    

[size=85]sry …bin schlecht im erklären…[/size] :unamused:
Nun geht das irgend wie ? …ich möchte es per Session machen…

ich will ja nichts sgen, aber du hast da ziemlich Mist gebaut :ps: (vor allem hast du $pw und $user ziemlich durcheinander gebracht)

versuch mal meinen Code, und die Session setzt du in „login erfolgreich“

du setzt einfach außenrum noch eine IF, die checkt, ob die session schon gesetzt ist :wink:

[quote=„michi7x7“]ich will ja nichts sgen, aber du hast da ziemlich Mist gebaut :ps: (vor allem hast du $pw und $user ziemlich durcheinander gebracht)

versuch mal meinen Code, und die Session setzt du in „login erfolgreich“

du setzt einfach außenrum noch eine IF, die checkt, ob die session schon gesetzt ist :wink:[/quote]

em …das hab ich von einer seite… :ps:

hab ich nicht hochgeladen :ps:

<?php
session_start();

$showlogin=false;

if(isset($_POST['user']))
{
	//logininfos gesendet
	$pass = $_POST['pass']
	$user = $_POST['user']

	//PW, ID, usw. aus DB holen
	$sql="SELECT `passwort`, `id`, `email` FROM `register_login` WHERE `user` = '$user'";
	$sql=mysql_query($sql);
	$sql=mysql_fetch_assoc($sql);

	if(crypt($pass, $sql['passwort']) == $sql['passwort'])
	{
		$_SESSION['user'] = $user;
		$_SESSION['id'] = $sql['id'];
		$_SESSION['email'] = $sql['email'];
	}
	else
	{
		//login Falsch...fehlerinfos bereithalten
	}
}

if(isset($_SESSION['user']))
{
	//user ist eingeloggt
	if(isset($_GET['logout']))
	{
		//user wünscht logout
		unset($_SESSION['user']);
	}
	else
	{
		//user ist normal eingeloggt
	}
}
else
{
	//Loginfeld anzeigen
	$showlogin = true;
}

?>
<html>
<!-- blablabla -->

<?php if($showlogin): ?>
	<form method='post' action='<?php echo $_SERVER['PHP_SELF']; ?>'>
		<input name='user' type='text' />
		<input name='pass' type='password' />
		<input type='submit' />
	</form>
<?php endif; ?>

<!-- blablabla -->
</html>

hier mal ein komplettes Beispiel :wink:

oh nö…
Geht auch ohne Crypt ?
Dein Code verwirrt mich ey
index.php

<?php  
echo '
<form name="login" method="post" action="login.php"> 
User Name: <input type="text" name="user"><br>
User Passwort:  <input type="password" name="pw"> 
<input type="submit" name="Submit" value="einloggen"> 
</form>'; 
?>

login.php:

<?
$user = $_POST['user'];
$pass= $_POST['pw'];
//login script
//session beginnen, immer ganze oben vor html Ausgabe!
session_start();


//html ausgabe der head daten einer seite
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Login script</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body><h1>Login Script</h1>';


//login Funktionen
//post variablen einfach speichern
//setzen von $pass und $user aus $_POST
$host = "localhost"; 
$user = "hu"; /* DATENBANK */
$pas = "bplaced";       /* Passwort */

$verbindung = mysql_connect("".$host."","".$user."","".$pas."") or die("Keine Verbindung moeglich"); mysql_select_db("HU?") or die ("Die Datenbank existiert nicht");

$sql="SELECT `passwort`, `id` FROM `register_login` WHERE `user` = '$user'";
$sql=mysql_query($sql);
$sql=mysql_fetch_assoc($sql);

if(crypt($pass, $sql['passwort']) == $sql['passwort'])
{
  $_SESSION['user'] = $user;
  $_SESSION['pw'] = $pw;
  echo "<b>Wunderbar! Dein Login war erfolgreich, du kannst nun <a href=\"login.php?".sid."\">hier</a> in den Geschützen Bereich</b>";
}
else
{
  echo "Fehler";
}

mysql_close($verbindung);

echo '</body>
</html>';
?>

bin schon so weit :smiley:

Sry aber dein code verwirrt mich echt …Bitte ohne Crypt

THX …für die mühe !!! :hail: :hail: :hail: :hail: :hail: :hail: :hail: :hail:

an das crypt gewohnt man sich… aber du kannst es problemlos rausnehmen :wink:

einfach die Anfragezeile ändern zu ($pass == $sql[‘pass’]), oder bei MD5-Verschlüsselung: (md5($pass) == $sql[‘pass’])

crypt ist hald schon standard, damit die PWs (falls sie geklaut werden) nicht einfach mit einer Rainbow-Tabelle entschlüsselt werden können, sondern wirklich jedes der Reihe nach :wink: (brute-force)
das nächste wären dann natürlich sachen wie salted AES usw. aber man sollte nicht übertreiben, aber MD5 würde ich schon verwenden. gibt ja sogar eine MySQL-Funktion für MD5 (MD5(‘pass’)) :wink:

[quote=“michi7x7”]an das crypt gewohnt man sich… aber du kannst es problemlos rausnehmen :wink:

einfach die Anfragezeile ändern zu ($pass == $sql[‘pass’]), oder bei MD5-Verschlüsselung: (md5($pass) == $sql[‘pass’])

crypt ist hald schon standard, damit die PWs (falls sie geklaut werden) nicht einfach mit einer Rainbow-Tabelle entschlüsselt werden können, sondern wirklich jedes der Reihe nach :wink: (brute-force)
das nächste wären dann natürlich sachen wie salted AES usw. aber man sollte nicht übertreiben, aber MD5 würde ich schon verwenden. gibt ja sogar eine MySQL-Funktion für MD5 (MD5(‘pass’)) :wink:[/quote]

hmm okey …dann versuch ich es mal…

Danke… hab jetzt raus …(auch mit Session…)