Systeme de session

Mammouth du PHP | 1511 Messages

23 mars 2006, 08:41

Pour les besoins de mon site web, j'ai crée un systeme de session et j'aimerais vous en faire profiter:
<?php
//sessions.php
//copyright 2006 ltcf.net
// mail: [email protected]
session_start()
function create_session($pseudo)
{
	$pseudo_case = $_POST['pseudo'];
	$password_case = $_POST['password'];
	$remember_me = $_POST['remember'];
	$membre_infos = query("SELECT user_nick, user_id, user_level, user_ban, user_pass FROM ltcf_members WHERE pseudo='".$_POST['login']."'");
	if($membre_infos['user_ban'] == '1')
	{
		header('location: msg-03.html');//utilisateur banni, accès refusé
	}
	elseif($membre_infos['user_ban'] == '0')
	{
		if(md5($password_case) == $membre_infos['user_pass'])
		{
			$_SESSION['logged_in'] = true;
			$_SESSION['pseudo'] = htmlentities(stripslashes($membre_infos($membre_infos['user_nick']));
			$_SESSION['id'] = htmlentities(stripslashes($membre_infos($membre_infos['user_id']));
			$_SESSION['user_level'] = htmlentities(stripslashes($membre_infos($membre_infos['user_level']));
		}
		elseif(md5($password_case) != $membre_infos['user_pass'] || mysql_num_rows($membre_infos) == 0)
		{
			header('location: msg-02.html');//login ou mdp incorrect
		}
		else
		{
			header('location: msg-05.html');//erreur du systeme de sessions
		}
	}
	else
	{
		session_destroy();
		header('location: msg-05.html');//erreur du systeme de sessions
	}
}
$membre_infos2 = query("SELECT user_nick, user_id, user_level, user_ban, user_pass FROM ltcf_members WHERE pseudo='".$_SESSION['pseudo']."'");
if(!isset($_SESSION[logged_in] && $_SESSION['logged_in'] == true)
{
	if($membre_infos2['user_ban'] == '1')
	{
		session_destroy();//destruction de la session et des droits
		header('location: msg-03.html');//utilisateur banni, session détruite
	}
	elseif($membre_infos2['user_ban'] == '0')
	{
		$_SESSION['logged_in'] = true;
		$_SESSION['pseudo'] = htmlentities(stripslashes($membre_infos($membre_infos['user_nick']));
		$_SESSION['id'] = htmlentities(stripslashes($membre_infos($membre_infos['user_id']));
		$_SESSION['user_level'] = htmlentities(stripslashes($membre_infos($membre_infos['user_level']));
	}
	else
	{
		session_destroy();
		header('location: msg-05.html');//erreur du systeme de templates
	}
}
else
{
	$_SESSION['logged_in'] = false;
}
?>
Je posterais le modele de la base SQL un peu plus tard....
@+

Mammouth du PHP | 983 Messages

23 mars 2006, 10:14

<?php
//sessions.php
//copyright 2006 ltcf.net
// mail: [email protected]
session_start()
function create_session($pseudo)
{
	$pseudo_case = $_POST['pseudo'];
	$password_case = $_POST['password'];
	$remember_me = $_POST['remember'];
	$membre_infos = query("SELECT user_nick, user_id, user_level, user_ban, user_pass FROM ltcf_members WHERE pseudo='".$_POST['login']."'");
...	
2 petites choses :
  • 1 - Toujours vérifier l'existence de variable avant de les utiliser.
    2 - Filtrer les données provenant de l'utilisateur pour éviter les injections SQL par exemple.

    ;)

Mammouth du PHP | 1511 Messages

23 mars 2006, 21:04

Comment empecher les injections SQL?
@+

ViPHP
fab
ViPHP | 2657 Messages

23 mars 2006, 23:53

mysql_escape_string
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Mammouth du PHP | 1511 Messages

24 mars 2006, 00:07

Donc je vais un mysql_escape_string() sur toutes les variables telles que password et pseudo?

@+