Paswoord
Hey waar moet je paswoord opslaan als iemand hem inlogt het schijnt niet veilig te zijn in cookies :-( waar zet je ze dan
Je kunt ze het beste met Md5 in een sessie zetten.
Dit houdt in dat het server-side is en dat het niet rechtstreeks leesbaar is.
Wachtwoorden controleer je door de md5 van het ingevoerde wachtwoord te vergelijken met de md5 van het goede wachtwoord (uit een database o.i.d.)
------
Sure, didn't I tell you that before?
Wanneer je password + gebruikers naam goed is. Genereer je een unieke code. Deze code stop je met een id in een database en een sessie of cookie.
Zo sla je nergens je wachtwoorden op en is hacken nog moeilijker
kunnen jullie eens een scriptje voor acount en pass op te slaan
te lezen
en te verwijderen ?
Tabel:
id, loginnaam, wachtwoord, sessie_id, ip
Formulier:
loginnaam en wachtwoord
Zodra je het formulier submit kom je bij login.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
// Eerst gaan we het opgegeven wachtwoord in MD5 doen:
$encrypted = md5($_POST['wachtwoord']);
// Kijken of er een rij in de DB is
$query = mysql_query("SELECT id FROM members WHERE loginnaam = '$_POST[loginnaam]' AND wachtwoord = '$encrypted'");
// Controleren of er resultaten zijn, zo nee is de gebruikersnaam of wachtwoord of beide fout
if (empty(mysql_num_rows($query))
{
// Foutje
} else {
while ($result = mysql_fetch_row($query))
{
// De rij is gevonden, maak de sessie:
// Unieke sessiecode
$sessie = session_id();
// IP-adres
$ip = $_SERVER["REMOTE_ADDR"];
// Ook ff in de DB zetten
mysql_query("UPDATE members SET sessie = '$sessie', ip = '$ip' WHERE id = '$result[0]'");
$_SESSION['sessie_id'] = $sessie;
$_SESSION['ip'] = $ip;
$_SESSION['gebruiker'] = $result[0];
}
}
?>
// Eerst gaan we het opgegeven wachtwoord in MD5 doen:
$encrypted = md5($_POST['wachtwoord']);
// Kijken of er een rij in de DB is
$query = mysql_query("SELECT id FROM members WHERE loginnaam = '$_POST[loginnaam]' AND wachtwoord = '$encrypted'");
// Controleren of er resultaten zijn, zo nee is de gebruikersnaam of wachtwoord of beide fout
if (empty(mysql_num_rows($query))
{
// Foutje
} else {
while ($result = mysql_fetch_row($query))
{
// De rij is gevonden, maak de sessie:
// Unieke sessiecode
$sessie = session_id();
// IP-adres
$ip = $_SERVER["REMOTE_ADDR"];
// Ook ff in de DB zetten
mysql_query("UPDATE members SET sessie = '$sessie', ip = '$ip' WHERE id = '$result[0]'");
$_SESSION['sessie_id'] = $sessie;
$_SESSION['ip'] = $ip;
$_SESSION['gebruiker'] = $result[0];
}
}
?>
Nu heb je dus een sessie met het unieke sessie_id, het ip van de bezoeker en het gebruikers-id van de member.
Om te controleren of iemand ingelogd is moet je het volgende doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// Kijken of er een sessie is
if (empty($_SESSION['gebruiker']) || empty($_SESSION['sessie_id']) || empty($_SESSION['ip']) || empty($_SESSION['relatie_id']))
{
// Een van de velden is leeg, geen correcte sessie, foutmelding
} else {
// Controleren of de gebruiker goed ingelogd is
$query = mysql_query("SELECT sessie, ip FROM members WHERE id = '$_SESSION[gebruiker]'");
$sessie = mysql_fetch_row($query);
if ($sessie[0] != $_SESSION['sessie_id'] || $sessie[1] != $_SERVER["REMOTE_ADDR"])
{
// De sessie bestaat niet, voor de veiligheid alle troep verwijderen
session_unset($_SESSION['gebruiker'], $_SESSION['sessie_id'], $_SESSION['ip']);
// Echo een foutmelding
} else {
// Hier komt de pagina
}
}
?>
// Kijken of er een sessie is
if (empty($_SESSION['gebruiker']) || empty($_SESSION['sessie_id']) || empty($_SESSION['ip']) || empty($_SESSION['relatie_id']))
{
// Een van de velden is leeg, geen correcte sessie, foutmelding
} else {
// Controleren of de gebruiker goed ingelogd is
$query = mysql_query("SELECT sessie, ip FROM members WHERE id = '$_SESSION[gebruiker]'");
$sessie = mysql_fetch_row($query);
if ($sessie[0] != $_SESSION['sessie_id'] || $sessie[1] != $_SERVER["REMOTE_ADDR"])
{
// De sessie bestaat niet, voor de veiligheid alle troep verwijderen
session_unset($_SESSION['gebruiker'], $_SESSION['sessie_id'], $_SESSION['ip']);
// Echo een foutmelding
} else {
// Hier komt de pagina
}
}
?>
En een gebruiker aanmaken.. dat is het laatste. Kies een wachtwoord en gebruikersnaam, stuur deze naar een PHP:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$wachtwoord = md5($_POST['wachtwoord']); // Om wachtwoord in md5 in DB te gooien
$query = mysql_query("INSERT INTO members (gebruikersnaam, wachtwoord) VALUES ('$_POST[gebruikersnaam]','$wachtwoord')");
?>
$wachtwoord = md5($_POST['wachtwoord']); // Om wachtwoord in md5 in DB te gooien
$query = mysql_query("INSERT INTO members (gebruikersnaam, wachtwoord) VALUES ('$_POST[gebruikersnaam]','$wachtwoord')");
?>
Dit is ff snel gedaan, dus het is niet getest! (Dat is dus ook de reden dat de kolommen niet in elke snippet hetzelfde zijn...)
Edit: En je kan het natuurlijk heel makkelijk allemaal zelf uitbouwen met bijvoorbeeld Screen-names (wat anders dan loginnaam), profiel, e-mailadres, etc...
Elwin
Gewijzigd op 07/04/2004 16:55:00 door Elwin - Fratsloos
ja ik heb al een inlog systeem maar nu zal ik het volledig aanpassen alvast heel bedankt
moet ik vanboven op mijn pagina session_start() zetten ?
ja, als je session_start() er niet bij zet dan zijn de sessies niet zichtbaar
session_start();
vanboven maar het werkt nog altijd niet :-(
bestand_1.php
Code (php)
1
2
3
4
5
2
3
4
5
<?
session_start();
$_SESSION['testje'] = 'zou het lukken?';
echo '<a href="bestand_2.php">Link naar bestand 2: '.$_SESSION['testje'].'</a>';
?>
session_start();
$_SESSION['testje'] = 'zou het lukken?';
echo '<a href="bestand_2.php">Link naar bestand 2: '.$_SESSION['testje'].'</a>';
?>
bestand_2.php
Code (php)
1
2
3
4
2
3
4
<?
session_start();
echo 'De waarde van $_SESSION["testje"] = '.$_SESSION['testje'];
?>
session_start();
echo 'De waarde van $_SESSION["testje"] = '.$_SESSION['testje'];
?>
Gewijzigd op 07/04/2004 21:29:00 door Rick
ja ik heb het ingang gekregen maar ik moet mij elke keer opnieuw inloggen wanneer ik op de site kom ?? het kan toch anders voor op deze site moet ik me nooit opnieuw inloggen
login.php
-----------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?
$microtime = microtime();
$split = explode(" ", $microtime);
$exact = $split[0];
$secs = date("U");
$bgtm = $exact + $secs;
if ($p == "")
{
require('header1.php');
echo "<title>..::Che-Lives-clan::..::Login::..</title>";
require('header2.php');
echo "<center>
<form method='POST' action='login.php'>
<input type='hidden' name='p' value='logon'>
<input type='hidden' name='url' value='$_GET[url]'>
Acount:<br><input type='text' name='login_naam' size='15'><br>
Password:<br><input type='password' name='pass_word' size='15'><br>
<input type='submit' name='B1' value='Login'>
<input type='reset' name='B2' value='Reset'> <br><a href=\"new_member.php\" target=\"_parent\">Register</a>
</form></center>";
require('header3.php');
}
if ($_POST[p] == "logon")
{
include('connect.php');
$_POST[pass_word] = md5($_POST[pass_word]);
$sql="select user, pass, membercode from members WHERE user='$_POST[login_naam]' AND pass='$_POST[pass_word]'";
$res=mysql_query($sql);
$row=mysql_fetch_row($res);
if ($row[0] != $_POST[login_naam] || $row[1] != $_POST[pass_word]) {
require('header1.php');
echo "<title>..::Che-Lives-clan::..::Login::..</title>";
require('header2.php');
echo "Wrong user or password<br>click <a href=\"login.php\">here</a> to try again";
require('header3.php');
exit("");}
else{
session_start();
$sessie = session_id();
$ip = $_SERVER["REMOTE_ADDR"];
mysql_query("UPDATE members SET user_sessie = '$sessie', ip_adress ='$ip' WHERE membercode = '$row[2]'");
$_SESSION['sessie_id'] = $sessie;
$_SESSION['ip'] = $ip;
$_SESSION['gebruiker'] = $row[0];
setcookie("sessie","$sessie;$ip;$row[0]",time()+86400);
if($_POST[url]==""){
$_POST[url]="http://www.che-lives-clan.com";
}
require('header1.php');
echo "<title>..::Che-Lives-clan::..::Login::..</title>";
require('header2.php');
echo "<center>Your logged in<br>you wil be redicted in 5 seconds<br><a href=\"$_POST[url]\">or you can click here</a>";
echo "<script> setTimeout(\"document.location='$_POST[url]'\",5000);</script>";
require('header3.php');
}
}
?>
$microtime = microtime();
$split = explode(" ", $microtime);
$exact = $split[0];
$secs = date("U");
$bgtm = $exact + $secs;
if ($p == "")
{
require('header1.php');
echo "<title>..::Che-Lives-clan::..::Login::..</title>";
require('header2.php');
echo "<center>
<form method='POST' action='login.php'>
<input type='hidden' name='p' value='logon'>
<input type='hidden' name='url' value='$_GET[url]'>
Acount:<br><input type='text' name='login_naam' size='15'><br>
Password:<br><input type='password' name='pass_word' size='15'><br>
<input type='submit' name='B1' value='Login'>
<input type='reset' name='B2' value='Reset'> <br><a href=\"new_member.php\" target=\"_parent\">Register</a>
</form></center>";
require('header3.php');
}
if ($_POST[p] == "logon")
{
include('connect.php');
$_POST[pass_word] = md5($_POST[pass_word]);
$sql="select user, pass, membercode from members WHERE user='$_POST[login_naam]' AND pass='$_POST[pass_word]'";
$res=mysql_query($sql);
$row=mysql_fetch_row($res);
if ($row[0] != $_POST[login_naam] || $row[1] != $_POST[pass_word]) {
require('header1.php');
echo "<title>..::Che-Lives-clan::..::Login::..</title>";
require('header2.php');
echo "Wrong user or password<br>click <a href=\"login.php\">here</a> to try again";
require('header3.php');
exit("");}
else{
session_start();
$sessie = session_id();
$ip = $_SERVER["REMOTE_ADDR"];
mysql_query("UPDATE members SET user_sessie = '$sessie', ip_adress ='$ip' WHERE membercode = '$row[2]'");
$_SESSION['sessie_id'] = $sessie;
$_SESSION['ip'] = $ip;
$_SESSION['gebruiker'] = $row[0];
setcookie("sessie","$sessie;$ip;$row[0]",time()+86400);
if($_POST[url]==""){
$_POST[url]="http://www.che-lives-clan.com";
}
require('header1.php');
echo "<title>..::Che-Lives-clan::..::Login::..</title>";
require('header2.php');
echo "<center>Your logged in<br>you wil be redicted in 5 seconds<br><a href=\"$_POST[url]\">or you can click here</a>";
echo "<script> setTimeout(\"document.location='$_POST[url]'\",5000);</script>";
require('header3.php');
}
}
?>
Bovenaan memberpagina
-----------------------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
session_start();
$host = ""; //host, meestal localhost
$user = ""; //gebruikersnaam
$pass = ""; //database wachtwoord
$db = ""; //database naam
mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($db);
$microtime = microtime();
$split = explode(" ", $microtime);
$exact = $split[0];
$secs = date("U");
$bgtm = $exact + $secs;
if (empty($_SESSION['gebruiker']) || empty($_SESSION['sessie_id']) || empty($_SESSION['ip']))
{
if($_COOKIE[sessie]!=""){
$split = explode (";", $_COOKIE[sessie]);
$_SESSION['sessie_id'] = $split[0];
$_SESSION['ip'] = $split[1];
$_SESSION['gebruiker'] = $split[2];
}
}
$query = mysql_query("SELECT user_sessie,ip_adress FROM members WHERE user = '$_SESSION[gebruiker]'");
$sessie = mysql_fetch_row($query);
if ($sessie[0] != $_SESSION['sessie_id'] || $sessie[1] != $_SERVER["REMOTE_ADDR"])
{
$ingelogd="0";
session_unset($_SESSION['gebruiker'], $_SESSION['sessie_id'], $_SESSION['ip']);
} else {
$ingelogd="1";
}
?>
session_start();
$host = ""; //host, meestal localhost
$user = ""; //gebruikersnaam
$pass = ""; //database wachtwoord
$db = ""; //database naam
mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($db);
$microtime = microtime();
$split = explode(" ", $microtime);
$exact = $split[0];
$secs = date("U");
$bgtm = $exact + $secs;
if (empty($_SESSION['gebruiker']) || empty($_SESSION['sessie_id']) || empty($_SESSION['ip']))
{
if($_COOKIE[sessie]!=""){
$split = explode (";", $_COOKIE[sessie]);
$_SESSION['sessie_id'] = $split[0];
$_SESSION['ip'] = $split[1];
$_SESSION['gebruiker'] = $split[2];
}
}
$query = mysql_query("SELECT user_sessie,ip_adress FROM members WHERE user = '$_SESSION[gebruiker]'");
$sessie = mysql_fetch_row($query);
if ($sessie[0] != $_SESSION['sessie_id'] || $sessie[1] != $_SERVER["REMOTE_ADDR"])
{
$ingelogd="0";
session_unset($_SESSION['gebruiker'], $_SESSION['sessie_id'], $_SESSION['ip']);
} else {
$ingelogd="1";
}
?>
Nu heb je TWEE cookies met twee sessie id's, session_start maakt zelf -ook- een cookie aan met een sessieid.
Ja hoe komt het dan als ik 5 min later weer op mijn site ga dat ik weer uitgelogd ben maar met mijn script niet ?
Let even op die toon, het lijkt alsof je het zelf al zeker weet, vraag dan niet om hulp.
http://nl2.php.net/manual/en/ref.session.php
Quote:
A visitor accessing your web site is assigned an unique id, the so-called session id. This is either stored in a cookie on the user side or is propagated in the URL.
Er zijn verscheidene opties voor de cookies:
Quote:
session.cookie_lifetime integer
session.cookie_lifetime specifies the lifetime of the cookie in seconds which is sent to the browser. The value 0 means "until the browser is closed." Defaults to 0.See also session_get_cookie_params() and session_set_cookie_params().
session.cookie_lifetime specifies the lifetime of the cookie in seconds which is sent to the browser. The value 0 means "until the browser is closed." Defaults to 0.See also session_get_cookie_params() and session_set_cookie_params().
Kortom: neem de handleiding nog eens door.
als ik de sessie id heb kan ik de members dan ook laten inloggen alle met de sessie id ?