Variables de sessions, portées et warning, au secours !!!

RickDangerous57 Messages postés 9 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 21 mai 2006 - 13 mai 2006 à 14:03
AZIRIAZIZ Messages postés 28 Date d'inscription dimanche 4 juillet 2010 Statut Membre Dernière intervention 19 mai 2011 - 31 juil. 2010 à 23:18
Bonjour,

Je souhaitais savoir quelle était la portée des variables de session. Après un session_start(), je n'ai pas réussi à récupérer mes variables de session dans toutes mes pages. Ma variable $_SESSION['valid_user'] n'est pas visible dans tous mes sources appellés.

J'ai ajouté un session_start(); sur la première ligne de mon site (index.php) mais cette même page est rappellée souvent avec des paramètres différents pour réaliser des affichages différents dans des DIV en CSS2.

J'utilise une base de données pour gérer les utilisateurs accédant à certaines sections protégées de mon site.

Mes questions sont les suivantes :

Comment faire pour afficher une page à plusieurs reprises dans laquelle je démarre une session sans avoir d'erreur ou de warning ?

Quel est la portée des variables de session ?

Adresse de mon site www.dolphin-zone.net,

Merci d'avance à tous pour vos réponses,

Rick

12 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 mai 2006 à 14:33
Salut,

quelles sont les erreurs ?

as tu session_start en haut de chaque page ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
RickDangerous57 Messages postés 9 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 21 mai 2006
13 mai 2006 à 16:17
Mes erreurs :



1- Pourquoi dans ma page index.php mes variables de sessions ne sont
pas visibles ? et dans un fichier inclu elles le sont ? (voir mes
source plus bas)



2- Pourquoi quand je recharge ma page index.php j'ai une erreur = > session "already started .... "



Mes sources :



index.php



***











Dolphin-Zone


































                                         


















[index.php?page=user_log_out ]







              

[ Connecté ]





[index.php?page=user_log_in ]







              

[ Non connecté ]



























* : =251354









Mesure d'audience ROI
frequentation par















 












[Admin/cptlog.php [..]]
depuis le 01/05/2006 -


Ce site est
optimisé pour IE6 - dernière màj le 8 mai 2006 -


Votre Adresse
IP :



























***



accueil.php
















 








Vous pouvez dès à présent effectuer une demande
d'inscription sur le site,

n'oubliez pas de motiver votre demande.





0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 mai 2006 à 16:38
Salut,

<? if (!isset($_SESSION['valid_user'])) session_start(); ?>

remplace ça par :

<?php session_start(); ?>

renvoi nous les erreurs et les n° de lignes ! et les lignes concernées !

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
RickDangerous57 Messages postés 9 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 21 mai 2006
13 mai 2006 à 17:19
Ok. J'ai compris qu'il fallait commencer de suite avec session_start() et ne pas rappeller cette fonction si la session n'est pas détruite, il me reste tout de même un problème : j'essaie d'afficher le contenu d'une variable de session dans mon index.php (ligne 72) :

[index.php?page=user_log_out ]



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
[ <? $_SESSION['valid_user'] ?> Connecté ]

=> cette dernière ne s'affiche pas (et pas d'erreur ...)

Dans ce même fichier index.php j'inclu dans un DIV un autre fichier accueil.php (ligne 74) et là, dans ce dernier le contenu de cette même variable s'affiche ...
je ne comprends pas pourquoi elle s'affiche à ce moment ...

// Affichage après login réussi
case 'login' :
{
echo ("



>>> Bienvenue, vous êtes loggué en : ".$_SESSION['valid_user']." <<<


");

// Redirection vers l'acueil sans message au bout de 10 secondes
echo("<meta http-equiv="refresh" content="10;URL=index.php?page=accueil&option=">");
break;
}
Merci pour vos réponses déjà postées et merci d'avance pour les futures ;o)

Rick
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
13 mai 2006 à 17:32
Salut,

<? $_SESSION['valid_user'] ?>
Je suis contre ceci, mais voici la bonne forme: <?=$_SESSION['valid_user']; ?>

Un petit: <?php echo $_SESSION['valid_user']; ?> est plus le bienvenue.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 mai 2006 à 17:37
Salut,

et pour ces lignes, quel est le message d'erreur ?

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
RickDangerous57 Messages postés 9 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 21 mai 2006
13 mai 2006 à 17:52
Merci beaucoup pour votre aide !

Le problème était tout simplement celui résolu par <juki_webmaster>, pourquoi un <? $_SESSION['valid_user'] ?> remplacé
par un <?php echo $_SESSION['valid_user']; ?> posait-il problème ? J'utilise cette syntaxe dans d'autres parties de code et
cela fonctionne ...

Merci à tous ceux qui ont répondus à mes questions, mon post est résolu ;o)

Rick
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 mai 2006 à 17:56
Salut,

déja, <? c'est pas bon car tu peux le confondre avec un xml....

(c'est pas parceque ça marche que c'est bon)

ensuite, $var ça n'a aucun sens.... echo $var; là, ça en a un....

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
AZIRIAZIZ Messages postés 28 Date d'inscription dimanche 4 juillet 2010 Statut Membre Dernière intervention 19 mai 2011 1
24 juil. 2010 à 14:01
bjour
merci de tester ce code et me dire pourquoi la variable contenu perd sa valeur a la selection d'une wilaya ? et comment faire pour que cette derniere reste sur le menu apropos
votre aide me sera d un grand secours merci
<?php
require_once("connexionMysql.inc.php");
if(isset($_GET['famille']))
$requete="SELECT reference,prix FROM articles WHERE famillesID=".$_GET['famille'] ;
else
$requete="SELECT reference,prix FROM articles ";

$resultat=mysql_query($requete);
//--------------requête du menu
$requete2="SELECT ID,intitule FROM familles ";
$resultat2=mysql_query($requete2);
?>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
<title>ma page</title>

<script type="text/javascript">
function montrer(element,lien)
{
var les_elements=new Array("apropos","inscription","liens-utiles","Contact");
for(var i=0; i<les_elements.length; i++)
{
document.getElementById(les_elements[i]).style.display='none';
document.getElementById(i+1).className='lien-nonactif';
}
document.getElementById(element).style.display='block';
document.getElementByid(lien).className='lien-actif';
}
</script>
<style type="text/css">
body {
font-family:verdana;
font-size:12px;
}

#conteneur{
width:800px;
margin:auto;
}
#haut {
height:100px;
padding:10px;
font-size:1.8em;
}
#liens {
height:24px;

padding-top:6px;
}
#milieu {
height:380px;
background-color:#00CCFF;
padding-top:10px;
}
#bas {
height:20px;
background:#999;
}

#liens a{
display:block;
background:#FF0000;
margin-right:11px;
padding:4px;
float:left;
width:140px;
text-align=center;
color: white;
}
#liens a:hover{

border-top:3px solid #330033;
background:#00CCFF;
}
#liens a:focus{
border-top:3px solid #FF0000;
}
#apropos,
#inscription,
#liens-utiles,
#contact{
display:none;
height:360px;
overfow:auto;
text-align:justfy;
}
.lien-actif {
display:block;
background:#CCCC99;
margin-right:5px;
padding:5px;
float:left;
width:350px;
text-align=center;
color:#999;
border-top:3px solid #333;
}
.lien-nonactif {
display:block;
background:#CCFF00;
margin-right:5px;
padding:5px;
float:left;
width:150px;
text-align=center;
color:black;
}
</style>
</head>








mon logo




[?contenu=apropos apropos de la 404]
[?contenu=s_inscrire s'inscrire]
[?contenu=liens liens]
[?contenu=contact contact]





<?php

if(isset($_GET['contenu']))
{
$contenu=$_GET['contenu'];

if ($contenu=='apropos')
{


require_once("connexionMysql.inc.php");
if(isset($_GET['famille']))
$requete="SELECT reference,prix FROM articles WHERE famillesID=".$_GET['famille'] ;
else
$requete="SELECT reference,prix FROM articles ";

$resultat=mysql_query($requete);
//--------------requête du menu
$requete2="SELECT ID,intitule FROM familles ";
$resultat2=mysql_query($requete2);

?>



<form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label>en fonction de la Wilaya :
<select name="famille" id="famille">
<?php while($familles=mysql_fetch_array($resultat2)) { ?>
<option <?php if(!isset($_GET['famille'])) $_GET['famille']=1; if($familles['ID']==$_GET['famille']) echo "selected='selected'"; ?> value="<?php echo $familles['ID']; ?>"><?php echo $familles['intitule']; ?></option>
<?php } ?>
</select>
</label>
<label>




</label>
</form>

<table width="600" border="1" cellspacing="0" cellpadding="5">
<tr>
<td>nous assurons votre visibilite au :</td>
<td>Prix/mois</td>
<td>Voir le site</td>
</tr>
<?php while($articles=mysql_fetch_array($resultat)) { ?>
<tr>
<td><?php echo $articles['reference']; ?></td>
<td><?php echo $articles['prix']; ?></td>
<td>[fiche5.php?reference=<?php echo $articles['reference']; ?> Voir]</td>

<?php }





}
elseif ($contenu=='s_inscrire')
{
if (isset($_POST['pseudo']))
{
$pseudo=$_POST['pseudo'];
$pass=$_POST['pass'];
$email=$_POST['email'];

mysql_connect("localhost","root","") or die ("bd non connectée");
mysql_select_db("p404") or die("BD Inconnue");

$date=date("d/m/y");
$sql="INSERT INTO inscription VALUES('','".$pseudo."','".$pass."','".$date."','".$email."')";
mysql_query($sql) or die ("erreur d ecriture");
echo "inscription reussie";
}
else
{
echo "

<form method="post"action="?contenu=s_inscrire">
pseudo




pass:




E-mail:








</form>
";
}
}
elseif ($contenu=='liens')
{
echo " mes liens";

}
elseif ($contenu=='contact')
{
//Envoi du message
if (isset($_POST['email']))
{
$cont="nom : ".$_POST['nom']."
";
$cont.="Email : ".$_POST['email']."
";
$cont.="Msg : ".$_POST['msg']."
";

mail('slsaziri@yahoo.fr','Le titre du message',$cont);
}


// Formulaire
echo '
<form action="page.php?contenu=contact"method="post">
nom :

E-mail :

Msg : <textarea name="msg"></textarea>


</from>
';

}
else
{
echo "ERREUR";
}
}
else
{

echo "contenu n est pas programmé";
}

?>











le bas de page





</html>
0
RaftY Messages postés 56 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 12 août 2010
26 juil. 2010 à 12:10
Bonjour,

Premièrement tu perd Contenu car la variable $_SERVER['PHP_SELF'], ne te donne que le script courant sans les variables {GET} donc soit tu complète

$_SERVER['PHP_SELF']."?contenu=".$contenu{..autres variables GET};

soit tu utilises:

$_SERVER['REQUEST_URI']

Faire attention, en les FLUX POST et GET, car ton formulaire est en METHOD="POST" et que tu utilises des variables en URL donc du "GET".

L'idéal étant

Pour que "A propos" reste actif, je dirais tester en PHP le fait de poser "A propos" actif suivant des critère passer en Variable (POST ou GET).

ex:

<?PHP
$titreCss["apropos"]="";
$titreCss["s_inscrir"]="";
$titreCss["liens"]="";
$titreCss["contact"]="";

/*avec $Catego passée en POST ou GET contenant "apropos" "s_inscrir" "liens" "contact"*/
 

print('
[?contenu=apropos apropos de la 404] 
[?contenu=s_inscrire s'inscrire] 
[?contenu=liens liens] 
[?contenu=contact contact] 
');


?>


Attention ce bout de code n'a pas été testé des erreurs de frappe ont pue se glisser.

Ensuite on peut aller plus loin avec les tableaux et tout paramétrer et utiliser un FOREACH.

______oOOO________OOOo________

RaftY, du code C commode!
0
RaftY Messages postés 56 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 12 août 2010
26 juil. 2010 à 12:13
L'idéal étant


oups je finis la phrase:

L'idéal étant de choisir soit l'un soit l'autre, en DIRTY on peut utiliser $_REQUEST ...


______oOOO________OOOo________

RaftY, du code C commode!
0
AZIRIAZIZ Messages postés 28 Date d'inscription dimanche 4 juillet 2010 Statut Membre Dernière intervention 19 mai 2011 1
31 juil. 2010 à 23:18
merci pour l effort mais j y arrive toujours pas et je commence sérieusement a avoir mal a la tête si vous pouvez m expliquer encore cela m épargnerai des quantités de DOLIPRANE Merci
0
Rejoignez-nous