COOKIE

COOKIE - PHP - Programmation

Marsh Posté le 05-03-2007 à 13:36:22    

Bonjour,
 
Je fait un espace membre, voilà ma page connexion.php qui traite le formule de la page index.phpl:
 

Code :
  1. <HEAD>
  2. <TITLE>
  3. 1Kits v0.1 - Index
  4. </TITLE>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso=8859-1">
  6. </HEAD>
  7. <BODY bgcolor="grey">
  8. <link rel="stylesheet" type="text/css" href="style.css">
  9. </BODY>
  10. <DIV ALIGN="CENTER">
  11. <table width="589" cellspacing="0">
  12. <TR>
  13. <TD background="images/up.png" height="204">
  14. <H2>
  15. <div align="center">
  16. <?php include("header.php" ) ?>
  17. </div>
  18. </H2>
  19. </TD>
  20. </TR>
  21. <TR>
  22. <TD background="images/center.png" valign="top">
  23. <table width="584">
  24. <TR>
  25. <TD>
  26. <H1>
  27. Connexion au panel d'administration
  28. <br>
  29. <H3>
  30. <?php
  31. // On appelle la page de configuration
  32. include("config.php" );
  33. // Définition des valeurs
  34. $pseudo = $_POST['pseudo'];
  35. $pass = $_POST['pass'];
  36. // On verifie si les champs PSEUDO et PASSsont correctement remplis
  37. if (empty($pseudo) || empty($pass))
  38. {
  39. echo $msg1;
  40. echo "<br>";
  41. echo "Redirection dans 5 secondes<br>";
  42. echo "<meta http-equiv=\"refresh\" content=\"5;URL=index.php\">";
  43. }
  44. else
  45. {
  46. // Connexion à la base de donnée
  47. $db = @mysql_connect($nom_host,$nom_utilisateur,$mot_pass);
  48. if(!$db) { echo $msg3;exit;}
  49. //Requète pour la connexion à la base de donnée et la table membre et on vérifie si le contenu des champs pseudo et pass éxiste dans la base
  50. $req     = mysql_db_query($nom_base,"select * FROM $table1 WHERE pseudo = '".$_POST['pseudo']."' AND pass = '".md5($_POST['pass'])."'",$db) or die(mysql_error());
  51. //Si le nom d'utilisateur ou le mot de passe ne sont pas trouvés dans la base, on affiche un message d'erreur
  52. if(mysql_num_rows($req)==0)
  53. {
  54. echo $msg2;
  55. }
  56. else
  57. {
  58. //Création des cookies
  59. setcookie('pass', 'md5($_POST[\'pass\'])', (time() + 3600));
  60. setcookie('pseudo', '$_POST[\'pseudo\']', (time() + 3600));
  61. //Redirection
  62. redirection("membre.php" );
  63. }
  64. }
  65. ?>
  66. </H3>
  67. </H1>
  68. </TD>
  69. </TR>
  70. </table>
  71. </TD>
  72. </TR>
  73. <TR>
  74. <TD background="images/down.png" height="204">
  75. <H1>
  76. <div align="center">
  77. <?php include("copyright.php" ) ?>
  78. </div>


 
Voici ma page membre.php:

Code :
  1. <?php
  2. include("protection.php" )
  3. ?>
  4. Bienvenue !


 
Et voici ma page protection.php:

Code :
  1. <?php
  2. // On appelle la page config
  3. include("config.php" );
  4. // Protection des pages
  5. if(empty($_COOKIE['pseudo']))
  6. {
  7. echo $msg4; exit();
  8. }
  9. ?>


 
Vous voyez les nom des cookies?
Normalement ça doit marcher mais non ça ne marche pas lorsque je me connecte ça les ignores:
http://www.crystal-webmaster.info/1kits/index.php
PS: Ca fonctionne mieux sous firefox(surtout pour le css) que sous IE...
 
Merci de m'aider!^^
 :bounce:

Reply

Marsh Posté le 05-03-2007 à 13:36:22   

Reply

Marsh Posté le 05-03-2007 à 13:39:04    

:bounce:

Reply

Marsh Posté le 05-03-2007 à 13:39:22    

:bounce:

Reply

Marsh Posté le 05-03-2007 à 14:12:27    

Les setcookie doivent être fait avant toute sortie html...
 
Mets un error_reporting(E_ALL | E_STRICT) en haut de ton script et lis la doc (http://fr.php.net/setcookie notamment).


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 05-03-2007 à 17:42:56    

Je pige pas, comment je dois faire et c'est quoi le problème?
Tu peux pas le placer dans le code?

Reply

Marsh Posté le 05-03-2007 à 17:43:07    

S'il te plaît?:D

Reply

Marsh Posté le 05-03-2007 à 17:43:19    

:bounce:

Reply

Marsh Posté le 05-03-2007 à 17:57:26    

Faut se calmer, on n'est pas là pour ça...
 
error_reporting(E_ALL | E_STRICT) en haut de chaque .php, tu relances tout ça et ça devrait t'éclairer. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 05-03-2007 à 18:07:40    

Je sais mais il n'y a pas d'erreur aperçues, ça affiche juste le message derreur de si je suis pas connecté:
Vous n'avez pas l'autorisation d'accéder à cette page sans vous identifier.

Reply

Marsh Posté le 05-03-2007 à 18:07:55    

Svp aidez-moi! ;)

Reply

Marsh Posté le 05-03-2007 à 18:07:55   

Reply

Marsh Posté le 05-03-2007 à 18:14:02    

:bounce:

Reply

Marsh Posté le 05-03-2007 à 18:29:37    

:bounce:

Reply

Marsh Posté le 05-03-2007 à 18:39:38    

Finalement,
J'ai reussi avec les SESSIONS plutôt que les cookies mais un pb juste comment faire enlever le message:

Code :
  1. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\FTP\Nardoum\1Kits\connexion.php:19) in D:\FTP\Nardoum\1Kits\connexion.php on line 59
  2. Warning: Cannot modify header information - headers already sent by (output started at D:\FTP\Nardoum\1Kits\connexion.php:19) in D:\FTP\Nardoum\1Kits\connexion.php on line 62


 
Ca marche pour protégé les pages etc mais je veux juste que ça affiche pas ça et que ça laisse déroulé les autres fonctions que je veut comme le header location etc:

Code :
  1. <?php
  2. error_reporting(E_ALL | E_STRICT);
  3. ?>
  4. <HEAD>
  5. <TITLE>
  6. 1Kits v0.1 - Index
  7. </TITLE>
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso=8859-1">
  9. </HEAD>
  10. <BODY bgcolor="grey">
  11. <link rel="stylesheet" type="text/css" href="style.css">
  12. </BODY>
  13. <DIV ALIGN="CENTER">
  14. <table width="589" cellspacing="0">
  15. <TR>
  16. <TD background="images/up.png" height="204">
  17. <H2>
  18. <div align="center">
  19. <?php include("header.php" ) ?>
  20. </div>
  21. </H2>
  22. </TD>
  23. </TR>
  24. <TR>
  25. <TD background="images/center.png" valign="top">
  26. <table width="584">
  27. <TR>
  28. <TD>
  29. <H1>
  30. Connexion au panel d'administration
  31. <br>
  32. <H3>
  33. <?php
  34. // On appelle la page de configuration
  35. include("config.php" );
  36. // On verifie si les champs PSEUDO et PASSsont correctement remplis
  37. if (empty($_POST['pseudo']) || empty($_POST['pass']))
  38. {
  39. echo $msg1;
  40. echo "<br>";
  41. echo "Redirection dans 5 secondes<br>";
  42. echo "<meta http-equiv=\"refresh\" content=\"5;URL=index.php\">";
  43. }
  44. else
  45. {
  46. // Connexion à la base de donnée
  47. $db = @mysql_connect($nom_host,$nom_utilisateur,$mot_pass);
  48. if(!$db) { echo $msg3;exit;}
  49. //Requète pour la connexion à la base de donnée et la table membre et on vérifie si le contenu des champs pseudo et pass éxiste dans la base
  50. $req     = mysql_db_query($nom_base,"select * FROM $table1 WHERE pseudo = '".$_POST['pseudo']."' AND pass = '".md5($_POST['pass'])."'",$db) or die(mysql_error());
  51. //Si le nom d'utilisateur ou le mot de passe ne sont pas trouvés dans la base, on affiche un message d'erreur
  52. if(mysql_num_rows($req)==0)
  53. {
  54. echo $msg2;
  55. }
  56. else
  57. {
  58. //Création de sessions
  59. session_start();
  60. $_SESSION['pseudo'] = $_POST['pseudo'];
  61. // Redirection
  62. header('Location: membre.php');
  63. exit();
  64. }
  65. }
  66. ?>
  67. </H3>
  68. </H1>
  69. </TD>
  70. </TR>
  71. </table>
  72. </TD>
  73. </TR>
  74. <TR>
  75. <TD background="images/down.png" height="204">
  76. <H1>
  77. <div align="center">
  78. <?php include("copyright.php" ) ?>
  79. </div>

Reply

Marsh Posté le 05-03-2007 à 19:11:53    

Oh nan pas encore cette erreur :'(
 
C'est logique que tu ne puisses pas toucher aux headers, vu que t'as déjà envoyé du contenu... Y'a un problème de conception de la page : tout est mélangé, le code HTML, l'accès aux données, et tout. Et y'a une belle faille de sécurité si magic_quotes_gpc est à off.
 
Le mieux est de d'abord faire le traitement (contrôle de $_POST, vérification, etc.), et suivant le cas faire un include de la page à afficher.
 
Attention aussi, on ne fait jamais (ou alors rarement) de redirection via une meta refresh, on utilisera plutôt un vrai header Http

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed