Les sessions. Toujours les sessions.

Christophe S.
Invité n'ayant pas de compte PHPfrance

30 avr. 2007, 09:12

Bonjour à tous,

Je suis une fois de plus de retour avec mes problèmes de sessions !!!
A croire que je le fait exprès, mais je pensse plutôt que je m'y prend très mal.

Pour ce qui ne s'en souviennent pas, ou qui n'étaient pas là, je rapelle un petit peut ma situation.

Sur mon site web, j'ai créer une page d'authentification vers les comptes utilisateurs de mon site.

Ces comptes utilisateurs sont basés sur les sessions php.

Après avoir créer le formulaire d'authentification, la connexion à la base de donnée, la récupérations des informations utilisateurs etc...

Je me retrouve face à deux problèmes :

Le premier est un message d'erreur que j'obtient après l'authentification, malgré que mes variables passent correctement sur ma page :

'Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3.
Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled.
You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0'
Mon second problème lui, porte plutôt sur ma manière de coder mes affichages de variable, je pensse que j'utilise très mal 'echo' pour les affichées :
Exemple : echo 'La maison de $_SESSION['nom'] est de couleur $_SESSION['couleur'].';
Je vous dépose ici la partie de code sur laquelle je travail en ce moment :

Code : Tout sélectionner

<?php if(isset($_POST['connexioncompte_idcc'])) $connexioncompte_idcc=$_POST['connexioncompte_idcc']; else $connexioncompte_idcc=""; if(isset($_POST['connexioncompte_mdpcc'])) $connexioncompte_mdpcc=$_POST['connexioncompte_mdpcc']; else $connexioncompte_mdpcc=""; if ($connexioncompte_idcc==='Identifiant' or $connexioncompte_idcc==='') { echo '<div align="center"><span class="Style2"><br><b>Veuillez nous indiquer votre Identifiant de connexion, puis compl&eacute;ter votre Mot de passe.</b></br></span></div>'; } elseif ($connexioncompte_mdpcc===' ' or $connexioncompte_mdpcc==='') { echo '<div align="center"><span class="Style2"><br><b>Veuillez nous indiquer votre Mot de passe de connexion, puis compl&eacute;ter votre Identifiant.</b></br></span></div>'; } else { extract($_POST); $db = mysql_connect('****', '****', '****') or die('<div align="center"><span class="Style2"><br><b>La tentative de connexion &agrave; la base de donn&eacute;es a &eacute;chou&eacute;e, merci de bien vouloir r&eacute;&eacute;ssayer ult&eacute;rieurement.</b></br></span></div>'); mysql_select_db('moncompte_client',$db) or die('<div align="center"><span class="Style2"><br><b>Impossible de s&eacute;l&eacute;ctionner la base de donn&eacute;es, merci de bien vouloir r&eacute;&eacute;ssayer ult&eacute;rieurement.</b></br></span></div>'); $sql = "SELECT id, titre, nom_societee, numerosiret, nom, prenom, adresse, codepostal, ville, commune, pays, telfixe, telmobile, mdpcc, confirmmdpcc, email FROM moncompte_client WHERE idcc = '".addslashes($connexioncompte_idcc)."'"; $req = mysql_query($sql) or die('<div align="center"><span class="Style2"><br><b>La tentative de connexion &agrave; la base de donn&eacute;es a &eacute;chou&eacute;e, merci de bien vouloir r&eacute;&eacute;ssayer ult&eacute;rieurement.</b></br></span></div>'); if (mysql_num_rows($req) > 0) { $data = mysql_fetch_assoc($req); } if ($connexioncompte_mdpcc == $data['mdpcc']) { $_SESSION['id'] = $data['id']; $_SESSION['titre'] = $data['titre']; $_SESSION['nom_societee'] = $data['nom_societee']; $_SESSION['numerosiret'] = $data['numerosiret']; $_SESSION['nom'] = $data['nom']; $_SESSION['prenom'] = $data['prenom']; $_SESSION['adresse'] = $data['adresse']; $_SESSION['codepostal'] = $data['codepostal']; $_SESSION['ville'] = $data['ville']; $_SESSION['commune'] = $data['commune']; $_SESSION['pays'] = $data['pays']; $_SESSION['telfixe'] = $data['telfixe']; $_SESSION['telmobile'] = $data['telmobile']; $_SESSION['idcc'] = $data['idcc']; $_SESSION['mdpcc'] = $data['mdpcc']; $_SESSION['confirmmdpcc'] = $data['confirmmdpcc']; $_SESSION['email'] = $data['email']; echo $_SESSION['email']; } else{ echo '<div align="center"><span class="Style2"><br><b>L\'identifiant et / ou le Mot de passe que vous avez entr&eacute;s sont incorectes,</br><br>Merci de bien vouloir ressaisir votre Identifiant / Mot de passe.</b></br></span></div>'; } mysql_close(); } ?>
Je vous remerci par avance des multiples informations que vous porterez à mon sujet.
Bonne journée.

Christophe.
[/code]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 avr. 2007, 09:37

Je ne vois pas de session_start() c'est normal ? s'il est bien présent, quelle version de php utilises tu ? As-tu essayé de suivre les conseils du message d'avertissement ? :)

Pour ton second soucis, tu verras très souvent cette phrase sur les forums de phpfrance : "Il faut sortir vos variables des chaines" :) Cela rend le code plus lisible et évite ce genre d'inconvénient, car pour rappel, une variable entre guillemets est intereprétée, une variable entre apostrophes ne l'est pas :
'La maison de '.$_SESSION['nom'].' est de couleur '.$_SESSION['couleur'].'.';
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Christophe S.
Invité n'ayant pas de compte PHPfrance

30 avr. 2007, 09:50

Rebonjour,

Je vous remercie de m'avoir répondu aussi rapidement.

Pour ce qui concerne mon session_start il n'y a pas de soucis, celui-ci est placer avant tous code html de ma page index.php qui inclue toutes mes autres page via les pseudos-frames.

Ma version de php est 5.0.37 et ma version mysql est 5.0.37.

Encore merci pour vos nombreuses réponsses.

Cordialement, Christophe.

PS : Je part travailler je ne pourais vous répondre aujourd'hui.

ViPHP
ViPHP | 5924 Messages

30 avr. 2007, 11:08

Ma version de php est 5.0.37
Cette version n'existe pas...

Christophe S.
Invité n'ayant pas de compte PHPfrance

30 avr. 2007, 11:35

En effet je me suis trompé ma version de php est la 5.2.1

Tous mes excuses, Christophe.

Christophe S.
Invité n'ayant pas de compte PHPfrance

30 avr. 2007, 21:22

Bonsoir à tous, me voici en train de relancer mon message, car je déséspère de ne pas trouver de solution.

Etant débutant en php/mysql, j'ai un peu de mal à débuguer pour le moment.

Encore merci par avance à celles et ceux qui vont continués de traiter mon sujet.

Christophe.

Mammouth du PHP | 991 Messages

30 avr. 2007, 21:34

une bonne méthode pour debug est de faire etape par étape et de faire de nombreux echo afin de verifier si il n'y pas d'erreur d'interpretation etc ...


@+ thehawk
DevOps, Symfony4, Hoa