|
|
|
|
Bonjour,
Voila, je suis entrain de réaliser un site avec une zone membre, tout fonctionne à merveille, mais je me pose tout de même une question : mon script ne consomme t'il pas de trop?
Je m'explique : à chaque ouverture de page, mon script verifie dans un premier temps si les session membre (mdp pseudo etc...) est ouverte, si elle ne le sont pas, le script renvoi une variable sur 0 qui dit comme quoi le membre n'est pas connecté, si par contre ses session sont ouverte, le script verifie sistématiquement dans la base de donnée si les session coresponde exemple :
<?php
//...debut du code
if(@$_SESSION['mdp_session'] == NULL AND @$_SESSION['mail_session'] == NULL AND @$_SESSION['pseudo_session'] == NULL)
{
//session fermer, j'affiche le code du formulaire
}
else
{
//le membre est connecté, on verifie ses sessions
$pseudo_session = $_SESSION['pseudo_session'];
$mail_session = $_SESSION['mail_session'];
$mdp_session = $_SESSION['mdp_session'];
$type_compte_session = $_SESSION['type_compte_session'];
$req = @mysql_query("SELECT COUNT(*) as cpt FROM membres WHERE pseudo = '$pseudo_session' AND mail = '$mail_session' AND mdpasse = '$mdp_session'");
$row = @mysql_fetch_array($req);
if($row['cpt'] == 1)
{
// tout est ok, legars est connecté
$session_over = 1;
}
else
{
$session_over = 0;
}
//fin du code
?>
Bon la, j'ai racourci le code de la page pour pas trop vous embrouillé, le code fonctionne très bien, et si j'utilise autant de variable de session, c'est tout simplement pour ne pas avoir à récuperer le mail ou le pseudo... dans la bdd!!
Moi ce que je veut savoir, c'est si il est vraiment nécessaire de verifier à chaque chargement de page dans la bdd ou si ce simple code suffit, en sachant que les session ne sont créer qu'après verification des donnée du formulaire de connection :
<?php
if(@$_SESSION['mdp_session'] == NULL AND @$_SESSION['mail_session'] == NULL AND @$_SESSION['pseudo_session'] == NULL)
{
//membre déconnecter
}
else
{
//membre connecté
}
?>
merci de bin vouloir m'éclairé sur cette intérogation :)
Ne faite jamais la même erreur que moi, Ne prenez jamais d'hébergement chez LWS !!
Bug, pages longue à chargé, énormément d'options désactivé, mauvais support client, mais prix pourtant bien élevé...Configuration: Windows XP
Safari 528.10
Tu session est en fait un fichier créé sur le disque dur du serveur, donc tu peux a priori faire confiance aux données qui y sont contenues.
// Si la session est inactive depuis
// 10 minutes ou plus, on la détruit.
if ( isset( $_SESSION['timestamp'] ) && $_SESSION['timestamp'] >= time() + 600 ) {
// Détruit toutes les variables de session.
$_SESSION = array();
// On efface également le cookie de session.
if ( isset( $_COOKIE[session_name()] )) {
setcookie( session_name(), '', time()-42000, '/' );
}
// Finalement, on détruit la session.
session_destroy();
} else {
$salt = 'une_chaine';
// Initialisation de la session.
session_start();
if ( !isset( $_SESSION['initiated'] ) ) {
session_regenerate_id();
$_SESSION['initiated'] == true;
}
// On vérifie que l'agent utilisateur ne change pas entre deux requêtes.
if ( isset( $_SESSION['check'] ) ) {
// Si c'est le cas, on demande à l'utilisateur de s'identifier à nouveau.
if ( $_SESSION['check'] != md5( $_SERVER['HTTP_USER_AGENT'].$salt ) ) {
header( 'Location: login.php' );
}
} else {
$_SESSION['check'] = md5( $_SERVER['HTTP_USER_AGENT'].$salt );
}
$_SESSION['timestamp'] = time();
}Ce code n'est peut-être pas parfait, mais il apporte un niveau de protection supérieur et une charge inférieure au stockage en BDD que tu utilises (qui ne protège pas contre le vol ou la fixation de session).
Ce code est inspiré des conseils trouvés ici : http://phpsec.org/projects/guide/fr/4.html |
Merci, réponse précise et explicite, merci!
|
Tes réponses sont vraiment bien formulé, c'est super simpa de m'aider, maintenant je comprend mieu, enfin, je pense avoir tout compris, ou presque...
|
Merci de tes réponses, donc, je commence dans l'ordre:
|
Slt, dzl pour le retard de réponse!
|