Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour à tous,
Je me met doucement aux classes et j'avoue que j'hésite encore pas mal
sur certaines façon de faire, pourriez-vous me donner votre avis.
J'essaye de comprendre comment agencer mes scripts et veiller à bien
séparer le code de la mise en forme.
J'essaye de mettre en place un simple formulaire d'identification.
La classe:
$query_txt = " SELECT
cms_user.*,
cms_user_group.*
FROM
cms_user,
cms_user_group
WHERE
cms_user.login = '".mysql_real_escape_string($user)."'
AND
cms_user.my_password = '".mysql_real_escape_string($password)."'
AND
cms_user.fk_user_group = cms_user_group.idx";
//echo $query_txt;
$query = mysql_query($query_txt, $this->db->link);
if(mysql_num_rows($query) > 0)
{
$result = mysql_fetch_array($query);
$_SESSION['logged'] = 1;
$_SESSION['user_idx'] = $result['idx'];
$_SESSION['user_prenom'] = stripslashes($result['prenom']);
$_SESSION['user_nom'] = stripslashes($result['nom']);
$_SESSION['user_group_idx'] = stripslashes($result['fk_user_group']);
$_SESSION['user_group_name'] = stripslashes($result['group_name']);
$_SESSION['user_privileges'] = array('priv_site'=>$result['priv_site'], 'priv_user'=>$result['priv_user'], 'priv_structure'=>$result['priv_structure'], 'priv_files'=>$result['priv_files'], 'priv_appli'=>$result['priv_appli'], 'priv_stat'=>$result['priv_stat'], 'priv_aide'=>$result['priv_aide']);
$this->identification_result = true;
}
else
{
session_destroy();
}
}
public function check_identification()
{
return $this->identification_result;
}
}
...et la page de traitement
/*$current_session = new Session($db);
session_start();*/
if(!isset($_POST['action']))
{
header('location: ../../login.php?login=error');
die();
}
switch($_POST['action'])
{
case 'identification':
if(!isset($_POST['login_login']) || !isset($_POST['login_password']))
{
header('location: ../../login.php?login=error');
die();
}
$current_identification = new Identification($_POST['login_login'], $_POST['login_password'], $db);
if($current_identification->check_identification() == true)
{
header('location: ../../admin.php');
die();
}
else
{
header('location: ../../login.php?login=error');
die();
}
break;
}
Il y a en plus un formulaire qui envoie en POST l'id et le mot de passe.
Ceci vous parait-il correct en terme de POO.
Merci d'avance pour vos réponse.
++
santino
Hors ligne
Saluton,
POO ou pas POO la guerre des étoiles continue
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Personne pour me répondre ?
Hors ligne
Kris a déjà soulevé un problème très intéressant dans ton code. ^^
Je rajouterai pour ma part qu'il faudrait mieux vérifier les informations que tu envoies à ta base de donnée.
Si j'ai bien compris cela provient directement d'un formulaire et donc on peut y insérer n'importe quoi.
Hors ligne
Salut,
Merci pour ta réponse.
ok pour le *.
Par contre, au niveau de ma classe, je fais mysql_real_escape_string, ceci
devrait me protéger non ?
Sinon au niveau agencement des scripts:
J'avais un doute sur mes header et sur le fait de passer $db en paramètres de fonction,
ceci te parait-il correct ?
Merci d'avancve
++
santino
Hors ligne
Par contre, au niveau de ma classe, je fais mysql_real_escape_string, ceci
devrait me protéger non ?
Disons que tu protèges qu'on ne fasse pas n'importe quoi mais cela n'empêche que tu ne vérifies pas proprement que les variables contiennent ce que tu veux.
Pour les headers je ne saurais te dire, je ne suis vraiment pas fan de ça et n'en utilise jamais.
Pour le paramètre $db si tu es sûr de ne passer que par une et une seule BDD dans tout le site tu peux passer ta classe DB en static et en faire un singleton. Tu n'auras plus besoin de passer l'une de ses instances par paramètre.
Hors ligne
Merci xTg pour tes précieuses réponses,
Je vais corriger ca.
Pour la db, je préfère me donner la possibilité de me connecter à plusieurs db...
++
santino
Hors ligne
Pages :: 1