Page 1 sur 1

Problème de session

Posté : 09 août 2005, 18:00
par dadadu59
Bonjour
Sur mon site web, qui est en fait un jeu en ligne, je dois utiliser la variable SESSION.
Mais quand je l'utilise, j'ai un gros problème, voici ce qui s'affiche à l'écran :

Warning: session_start(): open(/var/www/free.fr/4/d/rucheonline/sessions/sess_5f51d31bd0fe7a4146e00884fb413f01, O_RDWR) failed: No such file or directory (2) in /var/www/free.fr/4/d/rucheonline/zonemembre.php on line 2

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/free.fr/4/d/rucheonline/zonemembre.php:2) in /var/www/free.fr/4/d/rucheonline/zonemembre.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/free.fr/4/d/rucheonline/zonemembre.php:2) in /var/www/free.fr/4/d/rucheonline/zonemembre.php on line 2


Je ne comprend pas trop où est mon erreur, donc si vous pouviez m'aider ce serait le bonheur ! :D
Merci

Posté : 09 août 2005, 18:12
par Cyrano
As-tu créé à la racine de ton site un répertoire "sessions" : sur free, c'est impératif si tu veux que tes sessions fonctionnent.

Posté : 09 août 2005, 20:04
par dadadu59
j'ssaie ca tout de suite, merci beaucoup

Posté : 09 août 2005, 20:15
par dadadu59
Ah oui effectivement ca va mieux !

Mais maintenant il y a un petit problème, dans la plupart des sites où il y a un espace membre, quand on veut revenir en arrière, ca nous met qu'on ne peut pas, ou bien qu'on doit se reloguer.
Avec mon script, il suffit que je fasse copier/coller l'url (donc avec plein de lettres et de chiffres derriere) dans la barre d'adresse, et c'est comme si j'étais logué... :shock:

Donc niveau sécurité c'est pas la bonne chose, vous auriez une solution ?

Posté : 09 août 2005, 20:22
par Cyrano
il faudrait avoir une idée du problème plus précse pour cerner le problème. Mais à priori, ça veut dire que tu utilises des formulaires avec la méthode GET ce qui n'est pas nécessairement la meilleure idée.

Posté : 09 août 2005, 20:29
par dadadu59
Non, j'utilise les formulaires, mais avec la méthode POST.

Voici mon script, apres que l'utilisateur ce soit identifié :
<?
$pseudo = htmlentities($_POST['pseudo']);
$m_d_p = htmlentities($_POST['m_d_p']);


// CONNEXION A LA BASE DE DONNEE
mysql_connect("localhost","pseudo","mot de passe");
mysql_select_db("rucheonline");

// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
// MOT DE PASSE SAISIS A LA PAGE INDEX.PHP
$requete=mysql_query("SELECT pseudo FROM inscription WHERE pseudo='$pseudo' AND mdp='$m_d_p'") or die(mysql_error());

// SI AUCUN ENREGISTREMENT NE CORRESPOND
if(mysql_num_rows($requete)==0)
	{
	// REDIRECTION VERS LA PAGE ERREUR
	header("Location:$url_erreur");
	}

// SI LE LOGIN ET MOT DE PASSE SONT EXACTES	
else
	{
	// CREATION D'UN IDENTIFIANT ALEATOIRE
	$taille = 20;
	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
	srand(time());
	for ($i=0;$i<$taille;$i++)
		{
		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
		}
		
	// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE 
	$requete=mysql_query("UPDATE joueurs SET id='$id' WHERE pseudo='$pseudo'") or die(mysql_error());
	
	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
	header("Location:zonemembre.php?id=$id");
	}	

// DECONNEXION MYSQL
mysql_close();
?>

Posté : 09 août 2005, 20:32
par dadadu59
Et dés qu'il s'est logué, le script de la page login.php l'amène directement à celle-ci :
<?
session_start();

// CONNEXION MYSQL
mysql_connect("localhost","pseudo","mot de passe");
mysql_select_db("rucheonline");

// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$requete=mysql_query("SELECT * from joueurs WHERE id='$id'") or die(mysql_error());

// SI L'ID N'EXISTE PAS
if(mysql_num_rows($requete)==0)
	{
	// REDIRECTION PAGE ERREUR
	header("Location:$url_erreur");
	exit;
	}
?>
Voila, je pense qu'il manque des choses, mais je ne sais pas quoi...

Merci