Hey waar moet je paswoord opslaan als iemand hem inlogt het schijnt niet veilig te zijn in cookies :-( waar zet je ze dan
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.)



------
Sure, didn't I tell you that before?
Passwoorden moet je gewoon nergens op slaan. Behalve in je database met md5.

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
:S nu snap ik er niks van
kunnen jullie eens een scriptje voor acount en pass op te slaan
te lezen
en te verwijderen ?
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]'");

$_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:

<?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...

Elwin
ja ik heb al een inlog systeem maar nu zal ik het volledig aanpassen alvast heel bedankt
het inloggen lukt maar als ik de gegevens wil ophalen zijn alle sessies leeg
moet ik vanboven op mijn pagina session_start() zetten ?
ja, als je session_start() er niet bij zet dan zijn de sessies niet zichtbaar
ik zet nu
session_start();
vanboven maar het werkt nog altijd niet :-(
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>';
?>

bestand_2.php
<?
session_start();
echo 'De waarde van $_SESSION["testje"] = '.$_SESSION['testje'];
?>
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

Reageren