Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1606 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme espace membre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme espace membre

n°2177449
melxm
Posté le 25-02-2013 à 20:00:53  profilanswer
 

Bonjour à tous!  :)  
J'ai crée un espace membre qui fonctionne à la perfection en local sur "Wamp Serveur" mais envoyé sur le serveur, celui-ci me renvoie une erreur: (Je travail sous encodage AINSI, le problème est le même que ce soit pour l'inscription comme pour la connexion):
 session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/lanceyeq/public_html/page3.php:4) in /home/lanceyeq/public_html/page3.php
 
et
 
Cannot modify header information - headers already sent by (output started at /home/lanceyeq/public_html/page3.php:4) in /home/lanceyeq/public_html/page3.php
 
Une copie d'écran vous est ci-jointe.
http://www.hostingpics.net/viewer.php?id=681347erreur.png
 
Cordialement
En espérant que vous puissiez m'éclairer.
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <?php
  3. // on teste si le visiteur a soumis le formulaire de connexion
  4. if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
  5. if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
  6.  $base = mysql_connect ('localhost', 'lanceyeq', 'C9h1x32mxP');
  7.  mysql_select_db ('lanceyeq_lancey', $base);
  8.  // on teste si une entrée de la base contient ce couple login / pass
  9.  $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass="'.mysql_escape_string($_POST['pass']).'"';
  10.  $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  11.  $data = mysql_fetch_array($req);
  12.  mysql_free_result($req);
  13.  mysql_close();
  14.  // si on obtient une réponse, alors l'utilisateur est un membre
  15.  if ($data[0] == 1) {
  16.   session_start();
  17.   $_SESSION['login'] = $_POST['login'];
  18.   header('Location: membre.php');
  19.   exit();
  20.  }
  21.  // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
  22.  elseif ($data[0] == 0) {
  23.   $erreur = 'Compte non reconnu.';
  24.  }
  25.  // sinon, alors la, il y a un gros problème :)
  26.  else {
  27.   $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
  28.  }
  29. }
  30. else {
  31.  $erreur = 'Au moins un des champs est vide.';
  32. }
  33. }
  34. ?>
  35. <?php
  36. // on teste si le visiteur a soumis le formulaire
  37. if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
  38. // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
  39. if ((isset($_POST['login']) && !empty($_POST['login']))
  40.  && (isset($_POST['pass']) && !empty($_POST['pass']))
  41.  && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))   
  42.  && (isset($_POST['nom']) && !empty($_POST['nom']))   
  43.  && (isset($_POST['prenom']) && !empty($_POST['prenom']))   
  44.  && (isset($_POST['mail']) && !empty($_POST['mail']))   
  45.  && (isset($_POST['galop']) && !empty($_POST['galop']))    ) {
  46.  // on teste les deux mots de passe
  47.  if ($_POST['pass'] != $_POST['pass_confirm']) {
  48.   $erreur = 'Les 2 mots de passe sont différents.';
  49.  }
  50.  else {
  51.   $base = mysql_connect ('localhost', 'lanceyeq', 'C9h1x32mxP');
  52.   mysql_select_db ('lanceyeq_lancey', $base);
  53.   // on recherche si ce login est déjà utilisé par un autre membre
  54.   $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
  55.   $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  56.   $data = mysql_fetch_array($req);
  57.   if ($data[0] == 0) {
  58. try
  59. {
  60.     $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  61.     $bdd = new PDO('mysql:host=localhost;dbname=lanceyeq_lancey', 'lanceyeq', 'C9h1x32mxP', $pdo_options);
  62.    
  63.     // On ajoute une entrée dans la table
  64.     $req = $bdd->prepare('INSERT INTO membre(login,pass,nom, prenom, mail, galop) VALUES(:login,:pass,:nom,:prenom, :mail,:galop) ');
  65.    $req->execute(array(
  66.    'login' => $_POST['login'],
  67.    'pass' => $_POST['pass'],
  68.    'nom' => $_POST['nom'],
  69.    'prenom' => $_POST['prenom'],
  70.    'mail' => $_POST['mail'],
  71.    'galop' => $_POST['galop'],
  72.    ));
  73.  
  74. }
  75. catch(Exception $e)
  76. {
  77.     die('Erreur : '.$e->getMessage());
  78. }
  79.    session_start();
  80.    $_SESSION['login'] = $_POST['login'];
  81.    header('Location: membre.php');
  82.    exit();
  83.   }
  84.   else {
  85.    $erreur = 'Un membre possède déjà ce login.';
  86.   }
  87.  }
  88. }
  89. else {
  90.  $erreur = 'Au moins un des champs est vide.';
  91. }
  92. }
  93. ?>

mood
Publicité
Posté le 25-02-2013 à 20:00:53  profilanswer
 

n°2177450
melxm
Posté le 25-02-2013 à 20:03:41  profilanswer
 
n°2177469
xaeon
Profil: TT
Posté le 26-02-2013 à 00:02:36  profilanswer
 

Hello,  
 
En premier lieu et comme l'indique ta capture, ton session_start() doit se situer avant tout rendu, donc en tête de page avant que le contenu (ici ton DOCTYPE) ne soit envoyé.
Ensuite, tu utilises des header('Location : xxx'), de la même façon que pour le session_start(), il me semble qu'aucun rendu ne doit être fait avant de les envoyer, le mieux alors serait pour toi d'effectuer tous tes traitements, de les stocker dans des variables si besoin et de les inclure dans le contenu HTML en toute fin de ta page.
Enfin, essaie de rester cohérent avec ta facon de te connecter à ta base, mélanger mysql_connect et du PDO, tu pourrais juste avoir une instance PDO qui te permettrai de gérer l'ensemble de tes requêtes et qui rendrait ton code bien plus lisible.
 
En espérant que cela puisse t'aider, d'autres t'aideront sans doute :)
 
Edit ::
 
Pour l'image

Code :
  1. <?php
  2. session_start();
  3. // création instance PDO
  4. // code et variables (tableaux, erreurs) et redirections
  5. ?>
  6. <!DOCTYPE html>
  7. <!-- code html -->


Message édité par xaeon le 26-02-2013 à 00:05:01

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme espace membre

 

Sujets relatifs
problème avec la console et la commande "php"Problème programme C
Problème connexion DBF[Access] Problème formulaire requête
Fancybox > problème flècheProblème avec JOptionPane
[Android] Probleme video (pas d'image)problème de condition
Problème de compatibilité: Sessions espace membre + Quiz Self Page!Probleme avec espace membre...
Plus de sujets relatifs à : Probleme espace membre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR