PHP gevorderde |
|
Vrij simpel:
Boven aan je PHP bestand (voordat er enige output is!!), deze regel:
Een sessie gebruik je dan als volgt:
$_SESSION['sessienaam'] = 'waarde';
$_SESSION['sessienaam'] = 'waarde';
Het voordeel van sessies is dat het niet te wijzigen is door de user zelf. Het nadeel is dat het tijdelijk is, dat kun je oplossen met cookies.
De cookies die je moet zetten, zet je bij het inloggen. Je zet dan 2 cookies, die met het id, en die met het wachtwoord. Waar je controleert of de user ingelogd is gebruik je dan dit:
<?php
if(IsSet($_SESSION['user_id'])) {
// .. user is ingelogd :), $_SESSION['user_id'] bevat het id
}
else {
// .. user is niet ingelogd, check de cookies!
if(IsSet($_COOKIE['uid']) && IsSet($_COOKIE['upass'])) {
$rSelectUser = mysql_query("SELECT * FROM users WHERE user_id = " . (int)$_COOKIE['uid'] ." AND user_pass = '" . htmlentities($_COOKIE['upass'], ENT_QUOTES) . "'");
if(mysql_num_rows($rSelectUser) > 0) {
$_SESSION['user_id'] = (int)$_COOKIE['uid'];
// .. user is ingelogd, sessie maken!
}
else {
// .. user is niet ingelogd, de cookies waren fout!
}
}
else {
// .. user is niet ingelogd, geen sessies, geen cookies
}
}
?>
<?php if(IsSet($_SESSION['user_id'])) { // .. user is ingelogd :), $_SESSION['user_id'] bevat het id } else { // .. user is niet ingelogd, check de cookies! if(IsSet($_COOKIE['uid']) && IsSet($_COOKIE['upass'])) { $rSelectUser = mysql_query("SELECT * FROM users WHERE user_id = " . (int )$_COOKIE['uid'] ." AND user_pass = '" . htmlentities($_COOKIE['upass'], ENT_QUOTES ) . "'"); $_SESSION['user_id'] = (int)$_COOKIE['uid']; // .. user is ingelogd, sessie maken! } else { // .. user is niet ingelogd, de cookies waren fout! } } else { // .. user is niet ingelogd, geen sessies, geen cookies } } ?>
Op die manier wordt er altijd gechecked of de gebruiker is ingelogd, en zoja, dan bevat $_SESSION['user_id'] zijn ID.
EDIT: Of je leert het zelf, zoals Ultimatum adviseert. |