Hey waar moet je paswoord opslaan als iemand hem inlogt het schijnt niet veilig te zijn in cookies :-( waar zet je ze dan
?
Onbekende gebruiker
07-04-2004 15:50
Idd cookies zijn niet zo heel veilig.
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.)
Er zijn her en der heel wat scriptjes voor memberaccounts. Wat je moet hebben is het volgende:
Tabel:
id, loginnaam, wachtwoord, sessie_id, ip
Formulier:
loginnaam en wachtwoord
Zodra je het formulier submit kom je bij login.php:
<?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]'");
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:
<?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
}
}
?>
En een gebruiker aanmaken.. dat is het laatste. Kies een wachtwoord en gebruikersnaam, stuur deze naar een PHP:
<?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')");
?>
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...
probeer dit eens: bestand_1.php
<?
session_start();
$_SESSION['testje'] = 'zou het lukken?';
echo '<a href="bestand_2.php">Link naar bestand 2: '.$_SESSION['testje'].'</a>';
?>
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