Pb identification php

Résolu/Fermé
Signaler
Messages postés
8
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
16 mai 2008
-
Messages postés
8
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
16 mai 2008
-
Bonjour,

Voici le code

"<?php
session_start();

if (isset($_SESSION["membre_ndx"]) and $_GET["code"])
{

?>
<link rel="stylesheet" type="text/css" href="../css/styles.css">
<p align="center" class="xbig"><u>Modification d'un statut </u></p>
<p align="center" class="xbig"> </p>
<form name="form1" method="post" action="modif_statut_job.php">
<div align="center">
<input type="text" name="statut" value="<?php echo $_GET["statut"] ?>">
<input type="submit" name="Submit" value="Modifier">
</div>
</form>
<?php
}


else //Sinon


{
echo $_SESSION["membre_ndx"];
echo $_GET["statut"];
?>

<link rel="stylesheet" type="text/css" href="../css/styles.css">
<p>Ces données sont accessibles seulement en se logguant. </p>
<?php
}
?>"

J'ai mis en bas de code (après le else) 2 echo permettant de vérifier si je reçois bien les variables $_SESSION["membre_ndx"] et $_GET["statut"].

Voici le message d'erreur lisible dans le navigateur :
"Notice: Undefined index: membre_ndx in c:\program files\easyphp1-8\www\presse\application\modif_statut.php on line 25
6

Ces données sont accessibles seulement en se logguant."

La première ligne veut dire qu'il ne connait pas la variable membre_ndx et le "6" est bien le code statut envoyé par une autre page, ça c'est bon.

Pourquoi ne reconnait-il pas membre_ndx, puisque le code :"
<?php
session_start();

if (isset($_SESSION["membre_ndx"])" est utilisé à chaque début de page dans la moitié de mon application sans que cela ne pose de problème.
Merci de votre aide, j'en perd mon latin.
Jaco

9 réponses

Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 004
Bonjour,

L'erreur est dans le Else, non ?
Or, justement, dans le Else, tu n'as plus forcément isset($_SESSION...) !

Xavier
Messages postés
8
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
16 mai 2008

Non, ça vient pas de là
Je l'ai tout de même enlevé et j'ai


6
Ces données sont accessibles seulement en se logguant.

Seule la phrase Notice: Undefined index: membre_ndx in ..... a disparu mais ça ne marche toujours pas puiqu'il devrait m'afficher le formulaire au lieu de la phrase du bas qui est là uniquement pour empêché l'accés aux gens non identifiés.

HELP !
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 004
Euh...
Je ne vois pas comment il pourrait t'afficher le formulaire.

Ton "if" n'est pas vérifié, puisque
isset($_SESSION["membre_ndx"]) vaut FALSE

Donc il ne va pas à l'intérieur du "if", et ne va pas afficher le formulaire !
Messages postés
8
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
16 mai 2008

J'ai bien compris que mon if n'était pas vérifier, je veux savoir pourquoi car il devrait l'être.
Merci
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 004
Ah excuse-moi, j'avais mal compris ^^'

Bon, j'imagine que ta variable est correctement mise en session, enfin dans le doute montre nous quand même le code où tu le fais.

Autre possibilité : vérifie dans ton php.ini la valeur du paramètre
session.auto_start

S'il est à 1, alors à chaque nouvelle page la session sera automatiquement ouverte. La conséquence, c'est que quand, toi, tu fais session_start(), ça va écraser l'ancienne session pour en commencer une nouvelle ! Et du coup, tu perds tout.

Donc, deux solutions :
- Soit tu mets session.auto_start à 0 ;
- Soit tu enlèves le session_start() du début de ta page.
Personnellement, je préfère la première solution qui permet de maîtriser les fermetures et ouvertures de session.
Messages postés
8
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
16 mai 2008

Je pense savoir d'ou ça vient.
Pour la seule fois (d'ou problème uniquement sur cette page alors que j'utilise ce code plusieurs fois), je ne fais pas parvenir le lien via un header:location mais via une adresse dans un a href.
Je ne vois que ça, voici un exemple de lien pointant vers la page posant problème :

<a href=" http://localhost/presse/application/modif_statut.php?statut= <?php echo $ligne['id_statut'] ?>" ><?php echo $ligne['statut'] ?></a></td>

Etant en train de tenter de réécrire le code, je refais de mémoire, mais ça devait venir de là.
J'essaye donc de créer des liens a href sur la page précédente à partir de header : location mais je galère car n'est jamais fait


Est-ce celà ?
Comment faire ?
Help toujours.... mais on avance
Messages postés
8
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
16 mai 2008

Concernant le message précédent, j'ai vérifié session.auto_start qui est bien à 0.
Celà ne m'étonne pas, puisque les autres pages marchent et que c le seul endroit ou je perds mes infos de session.

De plus, ma dernière idée est mauvaise puisque lors d'un menu, je fais des liens en a href et non en header(location:...) et ça marche quand même.

Le mystère s'épaissiiiiiiii

Merci de votre aide !
Jaco
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 004
Mmmh, est-ce que tous tes liens sont définis en relatifs ? Ou en absolu ? Est-ce bien le même nom de domaine qui est spécifié, si c'est en absolu ? En effet, les sessions sont gérées à l'aide de cookies, qui sont spécifiques à un domaine : une session définie pour localhost et une session définie pour 127.0.0.1 seront différentes !
Messages postés
8
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
16 mai 2008

Le problème est résolu.
Je ne sais pas trop pourquoi finalement car j'ai fais plein d'essais et subitement cela a fonctionné.
Cela restera donc un mystère.
Merci quand même.
Jaco