FREE et les sessions

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : FREE et les sessions

par Artus » 09 juil. 2007, 19:09

bon bah c'etait ca !

merci beaucoup :)

par chrislabricole » 09 juil. 2007, 18:12

ouai, comme sa, on ai sur :D
Oh mon dieu ... :(
Ouais, comme ça, on est sûr
6 mots, 4 fautes
Je suis pas un dieu en orthographe et il m'arrive (souvent) de faire des coquilles, mais là, ça pique les yeux :cry:
eu... mouai..
pour le "ouai", c'est pas trop une faute, puisque c'est pas trop un mot :lol: pour l'acent sur le "u", je le sais... et si je te dit que je suis sous un clavier qwerty ? :lol: :lol: , je ne suis pas sous un qwerty mais... la flème de faire l'accent :langue: :lol:
et... après tout, il y a pire ! :) moi, c'est pas volontaire.... :P

par Artus » 09 juil. 2007, 15:13

Ok merci, ca doit etre un truc comme ca :)
Bon j'essaie ce soir, je peux pas uploader mes sources du boulot, et je vous dis ca demain :)

Merci pour votre aide !

par Ryle » 09 juil. 2007, 14:54

Il y a un paramétrage chez free (je ne sais pas si c'est lié au register global à ON ou si c'est un paramétrage supplémentaire) faisant une espèce de session_register() sur chaque variable que tu utilises en session, ainsi : $_SESSION["maVariable"] et $maVariable vont pointer sur la même adresse mémoire et donc une valeur commune.

Ainsi, si utilises $maVariable ou que tu la modifies, cela va automatiquement modifier la valeur de $_SESSION["maVariable"]. Il vaut donc mieux utiliser des noms de variables différentes pour eviter ce conflit.

Personnellement j'ai pris l'habitude de préfixer d'un "s" les variables que j'utilises dans mes sessions (et d'un "c" pour les cookies :)). Ainsi dans mon code je manipule "pseudo" et en session j'ai "sPseudo" :)

par zeus » 09 juil. 2007, 14:52

Effectivement, il me semble que le register_global est activé chez free et il est très possible que, pour l'index 'toto', si tu as une variable en GET, en POST et en SESSION que le GET écrase tout :-k

Essaye de changer pour utiliser un index non utilisé ailleurs ;)

par Artus » 09 juil. 2007, 14:45

oui je vous rassure, session_start(); est bien dans TOUTES mes pages :)
tout marche tres bien sous easyPHP, il n'y a juste que sous FREE que ca merde au niveau des variables de session qui sautent, mais seulement quand des variables "identiques" sont passées par POST ou GET (genre une variable $pseudo, alors que ma variable de session est $_SESSION['pseudo'])

Vous pensez qu'il vaut mieux avoir des noms uniques ? genre $_SESSION['nom_pseudo']
Peut etre que ca créé des conflits non ?

par zeus » 09 juil. 2007, 14:39

ouai, comme sa, on ai sur :D
Oh mon dieu ... :(
Ouais, comme ça, on est sûr
6 mots, 4 fautes
Je suis pas un dieu en orthographe et il m'arrive (souvent) de faire des coquilles, mais là, ça pique les yeux :cry:

par chrislabricole » 09 juil. 2007, 14:36

ouai, comme sa, on ai sur :D

par zeus » 09 juil. 2007, 14:36

eum.... il y a t-il :
<?php session_start(); ?>
au tout début de tes pages ?
Je dirais même, au tout début de TOUTES tes pages .... ;)

par chrislabricole » 09 juil. 2007, 14:33

eum.... il y a t-il :
<?php session_start(); ?>
au tout début de tes pages ?

par Artus » 09 juil. 2007, 14:29

Ok je montre les parties concernées :

Lien : membres.php?membre=XXXX&action=consulter

Page membres :
// On récupère le pseudo
	if (isset($_GET['membre'])) {
		$pseudo = mysql_real_escape_string($_GET['membre']);
		$req_pseudo = mysql_query ('SELECT membre_id FROM membres WHERE pseudo = "'.$pseudo.'"');
		if ($data_pseudo = mysql_fetch_assoc($req_pseudo)) $id_membre = $data_pseudo['membre_id'];
		else $id_membre = 0; }
	
	switch($action) {
		// Consultation
		case 'consulter':
			// On récupère les infos
			$req1 = mysql_query('SELECT pseudo, avatar, email, msn FROM membres WHERE membre_id='.$id_membre.'');
			if ($data1 = mysql_fetch_assoc($req1)) {
				//On affiche les infos sur le membre ?>
				<table><tr>
					<td><label>Pseudo : </label><strong><?php echo htmlentities($data1['pseudo']); ?></strong></td></tr><tr>
					<td><label>Adresse e-mail : </label><?php echo '<a href="'.htmlentities($data1['email']).'">'.htmlentities($data1['email']); ?></a></td></tr><tr>'
					<td><label>Adresse MSN : </label> <?php	echo '<a href="'.htmlentities($data1['msn']).'">'.htmlentities($data1['msn']); ?></a></td></tr><tr>
					<td><label>Avatar : </label> <?php	echo '<img src="'.htmlentities($data1['msn']); ?>" /></a></td>
				</tr></table>
			} 
			else echo '<br /><div class="center">Ce membre n\'existe pas !</div>';
		break;

La page dans mon menu :
// Utilisateur identifié, affichage de ses informations
		echo 'Bonjour '.htmlentities($_SESSION['pseudo']).'<br />';
		echo '<img src="'.htmlentities($_SESSION['avatar']).'" width="100" height="100" />';
		echo '<br /><a href="membres.php?membre='.htmlentities($_SESSION['pseudo']).'&action=modifier">Mon compte</a>';
		echo '<br /><a href="deconnexion.php?page_redirection=news.php">Deconnexion</a>'; 

par chrislabricole » 09 juil. 2007, 13:43

ben montre nous ton code..... :wink:

par Artus » 09 juil. 2007, 13:14

Merci de ta réponse, mais j'ai déjà créé le dossier en question, mes sessions ne marcheraient pas sans ca... :)

J'ai fait un autre test c'est encore pire, il suffit qu'un lien ai dans l'adresse un autre pseudo, et PAF ma variable de session saute et prend la valeur du pseudo passé dans l'adresse.

C'est à se casser la tete contre les murs...

par chrislabricole » 09 juil. 2007, 13:02

essaye de créer un dossier nommer sessions à l'index du ftp, donc à /
:wink: free, pour l'hébergement, c'est un peut spécial, c'est la première chose qu'il faut faire quand on cré un ftp free.... :wink:

FREE et les sessions

par Artus » 09 juil. 2007, 12:39

Bonjour,

J'ai un petit probleme sur mon site, et jme casse la tete dessus depuis un bon moment.
Il faut savoir que tout marche très bien sous easyPHP 1.8

1 - Donc quand un utilisateur se connecte sur mon site, j'initialise des variables de sessions comme $_SESSION['pseudo'] ou $_SESSION['avatar'].
Dans mon menu, j'affiche ces variables pour que le membre voit son nom et son avatar sur le site. Tout se passe très bien, sur toutes les pages du site, que ce soit en local ou chez mon hebergeur FREE

2 - Dans ma partie admin, j'ai la possibilité d'éditer les profils des membres, et la probleme inexplicable. Sur une page, j'affiche dans un formulaire les données du membre à editer (pseudo, avatar, etc...). Quand j'envoie les données modifiées, le membre a bien été modifié, mais MES variables de sessions également ! C'est a dire que dans mon menu, au lieu de voir MON pseudo, je vois celui du membre modifié, et je vois aussi SON avatar. En fait, tout ce qui a été envoyé par formulaire a également modifié mes variables de session.
Or mes variables de sessions ne s'initialisent qu'une seule fois : quand je me connecte...

La je capte pas, j'ai pas le probleme sous easysphp...

Qq a t'il une idée ?
Merci