Session PHP - PHP - Programmation
Marsh Posté le 06-12-2004 à 10:54:59
Flemme de lire ton code:
1) Quelle est l'erreur?
2) utilise les balises [ cpp] et [ /cpp], ce sera plus lisible.
Marsh Posté le 06-12-2004 à 10:57:33
Ben quand je relance identification.php il ne me detecte pas la variable de session $nomsession. Pour le serveur c est comme si elel n existait pas!
Desole pour la numerotation des lignes!
Marsh Posté le 06-12-2004 à 11:44:42
primo, le code php ça commence avec <?php ....., ça change ptete rien mais c'est plus sûr...
sinon pour acceder à tes variables de session, c'est comme pour un tableau associatif (ça tombe bien, $_SESSION est un tableau associatif...) donc :
$_SESSION['nomsession']="trucmuche";
if(isset($_SESSION['nomsession'])){
echo "hello {$_SESSION['nomsession']}, ca va???";
}
bien sur cela va afficher "salut trucmuche, ca va???"
Sinon pour tes if, mais plutot des "{..}" que des ":" parce qu'on comprends vraiment rien!
Marsh Posté le 06-12-2004 à 11:47:31
et évite ça aussi "...?> bonjour <? ..." ligne 3 de identitfication.php. utilise plutot
echo "bonjour", ça évite de fermer les balises puis de les réouvrir puis de les refermer puis de les.........
Marsh Posté le 06-12-2004 à 11:51:02
pitete une remarque à la con, mais perso j'utilise "break" que quand je me sers d'un switch, pour des if je comprend pas vraiment.....
Marsh Posté le 06-12-2004 à 11:51:29
Merci pour ces precisions de style, helas cela ne marche toujours pas!
le if(isset($_SESSION['nomsession'])) ne reconnait toujours pas que j ai bien cree la variable de session nomsession!
Je suis un peu perdu la...
Marsh Posté le 06-12-2004 à 11:55:06
sinon, sans vouloir m'acharner, ça m'horripile de voir un register_global à "On". va voir par ici http://www.phpindex.com/articles/a [...] lement=299
Marsh Posté le 06-12-2004 à 11:57:39
Heeeeuuuu!!!
entre <? et <?php y'a pas grand chose, ca change rien, chacun ses habitudes!
Vas y mon petit FTG utilise celle que tu veux!
Apres le coup des {..} au lieu de ":" oui la je suis d'accord!
Pour le ?> bonjou <? je suis ok aussi, c'est plus rapide de faire echo 'bonjour'
les doubles quotes ne servant à rien car il n'y a pas de variables dans le string.
et pour le echo "hello {$_SESSION['nomsession']}, ca va???";
fait plutot
echo "hello {".$_SESSION['nomsession']."}, ca va???";
Marsh Posté le 06-12-2004 à 11:57:54
D'un autre coté tu fais n'importe-quoi hein...
Code :
|
Si $nom ou $motdepasse est vide tu remplis jamais ta variable de session...
Marsh Posté le 06-12-2004 à 12:00:02
pour skeye : son register global est a "On" donc il a le droit de faire ça
Marsh Posté le 06-12-2004 à 12:03:08
Pour skeye: et le "else:" est justement la pour lui dire de remplir mes variables de session si jamais on a remplit correctement les formulaires
Marsh Posté le 06-12-2004 à 12:03:17
xelad a écrit : pour skeye : son register global est a "On" donc il a le droit de faire ça |
Je parle pas de ça, je parle de son algorithme.
Si je lis bien si $nom ou $motdepasse est vide il ne fait rien du tout, son script!
Marsh Posté le 06-12-2004 à 12:08:34
bah c est pas grave ca, je mettrais un truc du genre echo "recommencez!"
Ce qu il me derange c est que le serveur ne reconnaisse pas ma variable de session $_SESSION['nomsession'] c plutot chiant ca
Marsh Posté le 06-12-2004 à 12:09:20
essaye ceci pour identification.php
Code :
|
Marsh Posté le 06-12-2004 à 12:11:19
FTG a écrit : bah c est pas grave ca, je mettrais un truc du genre echo "recommencez!" |
oui, mais entre autres tu ne remplis jamais ta variable de session, donc il ne risque pas de la reconnaitre!
Marsh Posté le 06-12-2004 à 12:14:19
a y est, j'ai corrigé
Marsh Posté le 06-12-2004 à 13:35:06
pour skeye: ben kan elle est remplie, il doit la reconnaitre, si elle n est pas remplie, il passe au else de du if
Marsh Posté le 06-12-2004 à 13:50:08
bob007 a écrit : ... |
petite précision pour bob007, tes deux echo n'ont rien a voir :
l'un affichera "hello trucmuche, ca va???" et l'autre "hello {trucmuche}, ca va???"... je prefere ma méthode...
Marsh Posté le 06-12-2004 à 13:55:25
Je commence vraiment a en avoir ras le cul!!
mes variables de session ne sont reconnues nulle part!
Peut etre aue j ai oublie quelque chose de fondamental quelque part!! Quelqu un a une idee??
Marsh Posté le 06-12-2004 à 14:04:34
Bon, ne nous enervons pas...
recommençons par les bases, essaye des trucs plus simples pour voir le fonctionnement des variables de sessions par ton hebergeur :
( y'a pas plus simple...)
page 'test.php'
Code :
|
d'autre part si tu es hebergé par laposte, tu n'as surement pas le droit de faire ce genre de chose
Code :
|
donc la solution, c'est peut être de passer par les valeurs d'apache par défaut, c'est à dire les register_global à "Off", il faut donc modifier ton code en consequence :
Code :
|
Marsh Posté le 06-12-2004 à 14:08:26
ReplyMarsh Posté le 06-12-2004 à 14:10:50
Ben je susi en train de faire ds petits tests comme tu me las conseille et pis je reprend plus ou moins a zero!! T as raison faut jamais s enerver!
Merci!
Marsh Posté le 06-12-2004 à 14:10:54
FTG a écrit : Je commence vraiment a en avoir ras le cul!! |
Premierement il faut regarder si les variables de sessions s'enregistre bien sur le serveur. Regarde dans le fichier php.ini la partie session_temp un truc comme ça, il indique ou il enregistre les fichier session. En faite c'est la ou sont enregistrer les sessions. Par défaut c'est dans le répertoire php/tmp/
-Regarde si ce repertoire existe.
-Regarde ce que dit le php.ini a savoir l'endroit ou il est enregistré
-Lorsque tu utilises un fichier avec un session_start, regarde si dans le répertoire il y a pas un fichier qui se crée immédiatement. Si c'est pas le cas c'est que le problème est au niveau de ta configuration.
xelad : un code commençant par <?php c'est obselete et par defaut le php.ini n'est pas configuré pour accepter que cela. Si le probleme venait de là il aurait vu le code php sur son navigateur.
Que tu le dise oui mais pas en disant premierement
Marsh Posté le 06-12-2004 à 14:14:57
Tu vois typiquement la:
dans mon fichier index j ai
<? session_start();
$_SESSION['test']=$bonjour;
?>
et dans l autre fichier
<?php
session_start();
$bonjour="hello";
echo "test : {$_SESSION['test']}";
?>
et bien ca ne m affiche rien, keski va pas doc?
Marsh Posté le 06-12-2004 à 14:19:58
Je crois que tu es débutant et que tu ne sais pas utiliser les variables de session. Arrête de poser cette question sur ce forum et te conseil de faire un tour sur www.phpdebutant.org http://www.phpdebutant.org/article69.php il va t'expliquer et après tu vas comprendre ton erreur. Ne le prend pas mal mais c'est le seul conseil que je puisse donner parce que si tu luttes sur ça tu vas galérer sur plein de chose simple en php.
Marsh Posté le 06-12-2004 à 14:20:14
Berceker United a écrit : xelad : un code commençant par <?php c'est obselete et par defaut le php.ini n'est pas configuré pour accepter que cela. Si le probleme venait de là il aurait vu le code php sur son navigateur. |
je ne peux que te conseiller d'aller à cette page : http://www.phpdebutant.org/article14.php
d'autre part, notre ami FTG utilise un hebergeur (laposte), il ne peux donc peut être pas acceder au php.ini, cela dit, le dossier contenant les fichiers tmp créés pour les sessions se trouve generalement à la racine du repertoire du l'utilisateur. Cela dépend des hebergeurs.
Marsh Posté le 06-12-2004 à 14:20:58
Enore mieux si je fais:
<? session_start();
?>
dans le premier et
<?php
session_start();
if(isset($_SESSION['test'])):
echo "deja fait";
else:
$bonjour="hello";
$_SESSION['test']=$bonjour;
endif;
echo "test : {$_SESSION['test']}";
?>
Et bien "deja fait" ne s affiche jamais, pourquoi ca??
Marsh Posté le 06-12-2004 à 14:24:15
Je pense sincèrement que tu ne comprends rien à ce que tu fais. Suis le conseil de Berceker United et reprends un tutoriel depuis le début.
Marsh Posté le 06-12-2004 à 14:25:05
xelad a écrit : je ne peux que te conseiller d'aller à cette page : http://www.phpdebutant.org/article14.php |
Ok, donc s'il est chez un hebergeur cela doit fonctionner correctement, mais je constate qu'en faite il ne savait pas utiliser les sessions.
Marsh Posté le 06-12-2004 à 14:26:40
FTG a écrit : Tu vois typiquement la: |
si tu executes ton code, tu vas acceder à une variable $bonjour qui n'existe pas (laposte désactive les messages Warning pour des raisons de sécurité, c'est pour cela que ça n'affiche rien) mais si ces messages étaient activés cela te mettrait "Warning : undefined variable..." ou un truc comme ça parce que ta variable $bonjour n'a pas de valeur.
Code :
|
Marsh Posté le 06-12-2004 à 14:27:33
bah si je crois que je comprends un peu pourtant.
Mais peux tu me preciser un truc: si je passe d un fichier php a un autre, si j ai declare une variable de session et si je ferm pas la session, elle est sensee etre globale cette varaible non??
Marsh Posté le 06-12-2004 à 14:30:40
c'est la tout l'interet du tableau associatif $_SESSION, c'est qu'il est global partout où tu mets session_start();
Marsh Posté le 06-12-2004 à 14:33:38
bon ben alors c pas normal que la variable $_SESSION['nomsession'] ne soit pas reconnu quand je fais un isset($_SESSION['nomsession'])...est ce que y a des options dans le php.ini qui pourrait bloquer quleque chose?
Marsh Posté le 06-12-2004 à 14:34:04
FTG a écrit : bah si je crois que je comprends un peu pourtant. |
$_SESSION['test'] oui elle sera global.
$test = $_SESSION['test']; $test ne sera pas global. Xelad te donne un bonne exemple. Mais regarde cette exemple tu va vite comprendre. http://www.phpdebutant.org/article69.php
Marsh Posté le 06-12-2004 à 10:53:11
Bonjour a tous,
est ce que quelqu un peut me dire pourquoi mon code de session ne marche pas:
2 fichiers: index.php et identification.php
Pour info mon hebergeur est laposte!
Merci a tous!
Voila le debut de index.php:
------------------------------------------------
<? session_start();
ini_set("session.use_cookies","0" );
ini_set("session.register_globals","On" );
?>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="styles.css" />
<link rel="stylesheet" type="text/css" href="menus.css" />
-----------------------------------------------------------
et le fichier identification.php:
-----------------------------------------------------------
<? session_start();
if(isset( $nomsession)) :
?> bonjour <?
else:
if(isset($soumettre)) :
if(empty($nom) OR empty($motdepasse)) :
else:
$db=mysql_connect("localhost","xxx","xxx" );
mysql_select_db("xxx",$db);
$sql="select*from motsdepasse";
$resultat=mysql_query($sql);
while($ligne=mysql_fetch_array($resultat)) {
if($ligne['Auteur'] == $nom AND $ligne['Password'] == $motdepasse):
$_SESSION['nomsession']=$nomsession;
$_SESSION['motdepassesession']=$motdepasse;
$nomsession=$nom;
$motdepassesession=$motdepasse;
break;
endif;
}
if(!isset($nomsession)) :
endif;
endif;
else:
?>
<html>
<body>
<form action="index.php?page=identification" method="post">
Veuillez vous identifier! <br>
Login: <input type="text" name="nom">
Mot de passe: <input type="text" name="motdepasse">
<input type="submit" name="soumettre" value="Soumettre">
</form>
<? endif; endif; ?>
</body>
</html>
-----------------------------------------------------------
Message édité par FTG le 09-12-2004 à 22:30:46