Votre question

Besoin d'aide sur session_start(); (php)

Tags :
  • Html
  • Programmation
Dernière réponse : dans Programmation
29 Avril 2010 20:37:26

bonjour a tous, je fais appelle a vous car j'ai un soucis avec mon session start qui ne veut pas fonctionner et je ne comprend pas pourquoi voici mon code
  1. <?php session_start(); ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
  3. <html xmlns="<a href="http://www.w3.org/1999/xhtml" rel="nofollow" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" >
  4. <head>
  5. <title>Bienvenue sur mon site !</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  7. <link rel="stylesheet" media="screen" type="text/css" title="deco_banniere" href="deco_banniere.css" />
  8. </head>
  9. <body>
  10. <div id="imagebanniere"><img src="images/street_fighter.png" alt="image banniere du site" title="les jeux video, une vraie passion !" /></div><br/><br/>
  11. <div id="menu">
  12. <?php
  13. if ( !empty ($_SESSION['loginauthentification']))
  14. {
  15. echo 'vous êtes connecté : '.$_SESSION['loginauthentification'];
  16. }
  17. else
  18. {
  19. echo 'non connecté';
  20. }
  21.  
  22. define('login3', 'momo-ben2A'); //constantes
  23. define('mdp2', 'coco');
  24. ?>
  25. <ul id="onglets">
  26. <li class="active"><a href="acceuil.php"> Acceuil</a></li>
  27. <li><a href="playstation3.php"> Playstation 3 </a></li>
  28. <li><a href="xbox360.php"> Xbox 360</a></li>
  29. <li><a href="wii.php"> Wii</a></li>
  30. <li><a href="nintendods.php"> Nintendo ds </a></li>
  31. <li><a href="inscription.php"> Inscription</a></li>
  32. </ul>
  33. </div>
  34.  
  35. <?php if (login3 == $_POST['login2'] AND mdp2 == $_POST['motDePasse2'])
  36. {
  37.  
  38. $_SESSION['loginauthentification'] = login3;
  39. alert('vous êtes à présent connecté');
  40. }
  41. else
  42. {
  43. ?>
  44. <fieldset>
  45. <legend> Authentification</legend>
  46. <form method="post" action="authentification.php">
  47. Entrez votre pseudo : <input type="text" name="login2"/><br/><br/>
  48. Entrez votre mot de passe : <input type="password" name="motDePasse2"/><br/><br/>
  49. <input type="submit" value="Envoyer"/>
  50. </form>
  51. </fieldset>
  52. <?php
  53. }
  54. ?>
  55. </body>
  56. </html>

Autres pages sur : besoin aide session start php

29 Avril 2010 21:18:00

peut tu donné l'erreur retourné ?
m
0
l
29 Avril 2010 21:21:36

il me donne ceci :
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\site ap jeu\authentification.php:1) in C:\wamp\www\site ap jeu\authentification.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\site ap jeu\authentification.php:1) in C:\wamp\www\site ap jeu\authentification.php on line 1
m
0
l
Contenus similaires
Pas de réponse à votre question ? Demandez !
29 Avril 2010 21:22:59

ensuite, ceci m'inquiete :

# define('login3', 'momo-ben2A'); //constantes
# define('mdp2', 'coco');

puis ceci est incorrect :

# <?php if (login3 == $_POST['login2'] AND mdp2 == $_POST['motDePasse2'])
# {
#
# $_SESSION['loginauthentification'] = login3;
# alert('vous êtes à présent connecté');
# }
# else
# {
# ?>

tu as beaucoup de variable sans $ pour les variable php, tu as aussi le "alert" qui n'est pas intégré correctement.

Vu ton code et le formulaire en bas et le reste présent, je dirais que tu as copier/coller plusieurs bout de tuto ou code trouvé et que tu n'as pas chercher à comprendre ?!

Ton code ne vaut rien pour le moment, et le fonctionnement du "script" sur la page est incohérent de haut en bas.
m
0
l
29 Avril 2010 21:24:56

Pour ton erreur, vérifie qu'avant cette ligne (donc la premiere) : <?php session_start(); ?>

que tu n'aie pas d'espace a gauche ou en haut.
m
0
l
29 Avril 2010 21:27:11

non je n'ai pas fait de bout a bout, j'ai tout appris en lisant des tuto
et pui les variables sans les $ c'est parce que ce sont des constantes et que c'est "apparament comme sa qu'on les appelles" je dit parce que c'est comme sa qu'on me la expliqué
m
0
l
29 Avril 2010 22:59:52

oui pardon, j'ai lu trop vite, il s'agit bien de constante, donc c'est bon (la fatigue).
ton probleme d'erreur est résolue ou pas ? as tu trouvé un espace en trop en haut avant ton session start ?
m
0
l
29 Avril 2010 23:05:36

cela ne sert a rien d'utiliser des constante, utilise des variable normal pour affecter les valeur de login3 et mdp2.

et ceci : alert('vous êtes à présent connecté');

te retournera une erreur "parse error" car tu n'as pas d'echo.

De plus, apparament tu cherche a faire un espace membre avec donc des inscription multiple, tu ferais bien de regarder les tuto avec espace membres qui utilise les base de donnée, cela sera beaucoup plus facile, je te conseil d'aller lire le tuto et les chapitre un à un sur lephpfacile.com et tu sera un pro ;) 
m
0
l
30 Avril 2010 14:33:43

Si ton fichier est en UTF8, il faut que ce soit sans BOM.
Sous notepad++ : Convertir en UTF8 (sans BOM)

Mais a priori non vu que tu as spécifié charset=iso-8859-1 dans le meta

Sinon avant <?php session_start(); ?> il faut vérifier qu'il n'y ait rien, même pas un espace
m
0
l
30 Avril 2010 17:49:21

oui effectivement, j'ai enlevé l'espace est tout a marché mais pas comme je le veux, je m'explique.


probleme 1 : une fois que je rentre le mot de passe et le login et que j'envoi, la page m'indique que je suis connecter mais on ne vois pas mon login, on vois seulement "non connecté". Pour que je puisse voir mon login a la place de "non connecté" il faut que je réactualise la page". Comment faire pour enlever ce probleme et faire en sorte que le login s'affiche directement apres seulement 1 envoi du formulaire ???


probleme 2 : j'ai appris qu'avec session_start(); la variable superglobale $_SESSION etait accessible sur toute les pages qui possédait "session_start();".
C'est ce que j'ai fait mais sa ne marche pas et je ne comprend pas, j'aimerai que ma variable $_SESSION s'affiche aussi sur toute les pages mais sa ne marche pas.

En gros je vois afficher ma superglobale uniquement dans ma page authentification (la page ou j'envoie le mot de passe et le login pour la connexion".
  1. <?phpsession_start();?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  4. <head>
  5. <title>Bienvenue sur mon site !</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  7. <link rel="stylesheet" media="screen" type="text/css" title="deco_banniere" href="deco_banniere.css" />
  8. </head>
  9. <body>
  10. <div id="imagebanniere"><img src="images/street_fighter.png" alt="image banniere du site" title="les jeux video, une vraie passion !" /></div><br/><br/>
  11. <div id="menu">
  12. <?php if ( !empty ($_SESSION['a']))
  13. {
  14. echo 'vous êtes connecté : '.$_SESSION['a'];
  15. }
  16. else
  17. {
  18. echo 'non connecté';
  19. }
  20. ?>
  21.  
  22. <ul id="onglets">
  23. <li class="active"><a href="acceuil.php"> Acceuil</a></li>
  24. <li><a href="playstation3.php"> Playstation 3 </a></li>
  25. <li><a href="xbox360.php"> Xbox 360</a></li>
  26. <li><a href="wii.php"> Wii</a></li>
  27. <li><a href="nintendods.php"> Nintendo ds </a></li>
  28. <li><a href="inscription.php"> Inscription</a></li>
  29. </ul>
  30. </div>
  31.  
  32. <?php
  33. if (!empty ($_SESSION['a']))
  34. {
  35. // recuperation d'une valeur de la page acceuil
  36.  
  37. if (!empty($_GET['idDeLaConsole']))
  38. {
  39. $console = $_GET['idDeLaConsole'];
  40.  
  41. $login = 'mohamed';
  42. $password = 'coco';
  43. $hote = 'localhost';
  44. $database = 'site_jeux_video_ap';
  45.  
  46.  
  47. mysql_connect ("localhost", "root", "");
  48. mysql_select_db ($database) or die("base de donnée inéxistante ou mal écrite");
  49.  
  50. echo 'le numero de la console est : '. $console ;
  51. $requete = mysql_query ("SELECT * FROM jeu, jouer_sur WHERE id_console = $console AND jouer_sur.id_jeu = jeu.id_jeu") or die ("probleme au niveau de la requete");
  52.  
  53. while ($donnees = mysql_fetch_array($requete))
  54. {
  55. ?>
  56. <table>
  57. <tr>
  58. <td>nom du jeu</td>
  59. <td>age autorisé</td>
  60. <td>prix moyen</td>
  61. <td>descritpion</td>
  62. <th> <?php echo $donnees['nom_jeu'];?></th>
  63. <th> <?php echo $donnees['age_jeu'];?></th>
  64. <th> <?php echo $donnees['prix_jeu'];?></th>
  65. <th> <?php echo $donnees['description_jeu'];?></th>
  66. </tr>
  67. </table>
  68. <?php
  69. }
  70. }
  71. else
  72. {
  73. echo 'Une information n\'a pas été saisie , veuillez retournez à la page d\'acceuil, merci';
  74. }
  75. mysql_close() or die ("la fermeture de la BDD a mal ou n'a pas été fermé");
  76. }
  77. else
  78. {
  79. echo 'vous n\'êtes pas connecté car vous ne vous êtes pas authentifier <br/>';
  80. echo ' page inscription : <a href="inscription.php">ici</a><br/>';
  81. echo 'page authentification : <a href="authentification.php">ici</a>';
  82. }
  83. ?>
  84.  
  85. </body>
  86. </html>


Comment faire pour que je puisse la voir sur toute les pages ????

PS : j'ai vraiment besoin d'aide car c'est un projet que je doit rendre avant mercredi ^^

voici la page authentification.php

  1. <?php session_start();
  2. $_SESSION['a'];?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
  4. <html xmlns="<a href="http://www.w3.org/1999/xhtml" rel="nofollow" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" >
  5. <head>
  6. <title>Bienvenue sur mon site !</title>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  8. <link rel="stylesheet" media="screen" type="text/css" title="deco_banniere" href="deco_banniere.css" />
  9. </head>
  10. <body>
  11. <div id="imagebanniere"><img src="images/street_fighter.png" alt="image banniere du site" title="les jeux video, une vraie passion !" /></div><br/><br/>
  12. <div id="menu">
  13. <?php
  14. if ( isset($_SESSION['a']))
  15. {
  16. echo 'vous êtes connecté : '.$_SESSION['a'];
  17. }
  18. else
  19. {
  20. echo 'non connecté';
  21. }
  22. define('login', 'mama');
  23. define('pass', 'tata');
  24. ?>
  25. <ul id="onglets">
  26. <li class="active"><a href="acceuil.php"> Acceuil</a></li>
  27. <li><a href="playstation3.php"> Playstation 3 </a></li>
  28. <li><a href="xbox360.php"> Xbox 360</a></li>
  29. <li><a href="wii.php"> Wii</a></li>
  30. <li><a href="nintendods.php"> Nintendo ds </a></li>
  31. <li><a href="inscription.php"> Inscription</a></li>
  32. </ul>
  33. </div>
  34. <?php if (login == $_POST['login2'] AND pass == $_POST['motDePasse2'])
  35. {
  36. $_SESSION['a'] = login;
  37. echo 'vous pouvez a present allez dans la documentation des consoles';
  38. }
  39. else
  40. {
  41. ?>
  42. <fieldset>
  43. <legend> Authentification</legend>
  44. <form method="post" action="authentification.php">
  45. Entrez votre pseudo : <input type="text" name="login2"/><br/><br/>
  46. Entrez votre mot de passe : <input type="password" name="motDePasse2"/><br/><br/>
  47. <input type="submit" value="Envoyer"/>
  48. </form>
  49. </fieldset>
  50. <?php
  51. }
  52. ?>
  53. </body>
  54. </html>


et voici une des page qui est censé aussi afficher le login de $_SESSION['a'];

  1. <?phpsession_start();?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
  3. <html xmlns="<a href="http://www.w3.org/1999/xhtml" rel="nofollow" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" >
  4. <head>
  5. <title>Bienvenue sur mon site !</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  7. <link rel="stylesheet" media="screen" type="text/css" title="deco_banniere" href="deco_banniere.css" />
  8. </head>
  9. <body>
  10. <div id="imagebanniere"><img src="images/street_fighter.png" alt="image banniere du site" title="les jeux video, une vraie passion !" /></div><br/><br/>
  11. <div id="menu">
  12. <?php if ( !empty ($_SESSION['a']))
  13. {
  14. echo 'vous êtes connecté : '.$_SESSION['a'];
  15. }
  16. else
  17. {
  18. echo 'non connecté';
  19. }
  20. ?>
  21.  
  22. <ul id="onglets">
  23. <li class="active"><a href="acceuil.php"> Acceuil</a></li>
  24. <li><a href="playstation3.php"> Playstation 3 </a></li>
  25. <li><a href="xbox360.php"> Xbox 360</a></li>
  26. <li><a href="wii.php"> Wii</a></li>
  27. <li><a href="nintendods.php"> Nintendo ds </a></li>
  28. <li><a href="inscription.php"> Inscription</a></li>
  29. </ul>
  30. </div>
  31. <?php
  32. if (!empty ($_SESSION['a']))
  33. {
  34. // recuperation d'une valeur de la page acceuil
  35. if (!empty($_GET['idDeLaConsole']))
  36. {
  37. $console = $_GET['idDeLaConsole'];
  38. $login = 'mohamed';
  39. $password = 'coco';
  40. $hote = 'localhost';
  41. $database = 'site_jeux_video_ap';
  42. mysql_connect ("localhost", "root", "" );
  43. mysql_select_db ($database) or die("base de donnée inéxistante ou mal écrite" );
  44. echo 'le numero de la console est : '. $console ;
  45. $requete = mysql_query ("SELECT * FROM jeu, jouer_sur WHERE id_console = $console AND jouer_sur.id_jeu = jeu.id_jeu" ) or die ("probleme au niveau de la requete" );
  46. while ($donnees = mysql_fetch_array($requete))
  47. {
  48. ?>
  49. <table>
  50. <tr>
  51. <td>nom du jeu</td>
  52. <td>age autorisé</td>
  53. <td>prix moyen</td>
  54. <td>descritpion</td>
  55. <th> <?php echo $donnees['nom_jeu'];?></th>
  56. <th> <?php echo $donnees['age_jeu'];?></th>
  57. <th> <?php echo $donnees['prix_jeu'];?></th>
  58. <th> <?php echo $donnees['description_jeu'];?></th>
  59. </tr>
  60. </table>
  61. <?php
  62. }
  63. }
  64. else
  65. {
  66. echo 'Une information n\'a pas été saisie , veuillez retournez à la page d\'acceuil, merci';
  67. }
  68. mysql_close() or die ("la fermeture de la BDD a mal ou n'a pas été fermé" );
  69. }
  70. else
  71. {
  72. echo 'vous n\'êtes pas connecté car vous ne vous êtes pas authentifier <br/>';
  73. echo ' page inscription : <a href="inscription.php">ici</a><br/>';
  74. echo 'page authentification : <a href="authentification.php">ici</a>';
  75. }
  76. ?>
  77. </body>
  78. </html>



PS : merci encore pour votre aide
m
0
l
a c 232 L Programmation
3 Mai 2010 17:16:42

okinou a dit :
ensuite, ceci m'inquiete :

# define('login3', 'momo-ben2A'); //constantes
# define('mdp2', 'coco');

puis ceci est incorrect :

# <?php if (login3 == $_POST['login2'] AND mdp2 == $_POST['motDePasse2'])
# {
#
# $_SESSION['loginauthentification'] = login3;
# alert('vous êtes à présent connecté');
# }
# else
# {
# ?>

tu as beaucoup de variable sans $ pour les variable php, tu as aussi le "alert" qui n'est pas intégré correctement.

Vu ton code et le formulaire en bas et le reste présent, je dirais que tu as copier/coller plusieurs bout de tuto ou code trouvé et que tu n'as pas chercher à comprendre ?!

Ton code ne vaut rien pour le moment, et le fonctionnement du "script" sur la page est incohérent de haut en bas.


@okinou: si tu veux, tu peux double-cliquer sur un bout de code pour enlever les numéros de lignes, et il n'y aura plus de # qui se mettra à chaque ligne quand tu copieras le code.

wahhh a dit :
oui effectivement, j'ai enlevé l'espace est tout a marché mais pas comme je le veux, je m'explique.


probleme 1 : une fois que je rentre le mot de passe et le login et que j'envoi, la page m'indique que je suis connecter mais on ne vois pas mon login, on vois seulement "non connecté". Pour que je puisse voir mon login a la place de "non connecté" il faut que je réactualise la page". Comment faire pour enlever ce probleme et faire en sorte que le login s'affiche directement apres seulement 1 envoi du formulaire ???


Bah tout simplement parce que tu fais la vérification des données du formulaire après avoir affiché "non connecté", donc l'utilisateur sera toujours "non connecté" la 1ère fois.
m
0
l
3 Mai 2010 22:35:52

Merci de l'astuce Omar je ne savais pas du tout ;) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS