Messagerie interne (Espace membre)

Répondre
papouche
le 01/01/2009 à 23:29
papouche
J'ai utilisé le script de la globule.
L'inscription se déroule bien mais la connexion du membre échoue.
Un message d'erreur s'affiche:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\vhosts\xx.FR\xx\xx\xx\index.php:1) in D:\vhosts\xx.FR\xx\xx\xx\index.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at D:\vhosts\xx.FR\xx\xx\xx\index.php:1) in D:\vhosts\xx.FR\xx\xx\xx\index.php on line 17
Qui pourrait m'aider SVP
Merci
toijan
le 01/01/2009 à 23:46
toijan
Bonjour,

il faut mettre la session_start() à la premiere ligne de ton fichier php ensuite tu fait un include de ce fichier avant le tag <html> de ton fichier html
j'en ai pas
papouche
le 02/01/2009 à 06:58
papouche
Bonjour et merci de m'aider.
En fait, le session start se situe au milieu d'une condition dans le fichier "index.php".

  1. <?php
  2. if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
  3. if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

  4. $base = mysql_connect ('serveur', 'login', 'password');
  5. mysql_select_db ('nom_base', $base);

  6. $sql = 'SELECT id FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"';
  7. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  8. $nb = mysql_num_rows($req);

  9. if ($nb == 1) {
  10. $data = mysql_fetch_array($req);
  11. session_start();
  12. $_SESSION['login'] = $_POST['login'];
  13. // on enregistre en plus l'id du membre dans une variable de session
  14. $_SESSION['id'] = $data['id'];
  15. mysql_free_result($req);
  16. mysql_close();
  17. header('Location: membre.php');
  18. exit();
  19. }
  20. elseif ($nb == 0) {
  21. $erreur = 'Compte non reconnu.';
  22. }
  23. else {
  24. $erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
  25. }
  26. mysql_free_result($req);
  27. mysql_close();
  28. }
  29. else {
  30. $erreur = 'Au moins un des champs est vide.';
  31. }
  32. }
  33. ?>

  34. <html>
  35. <head>
  36. <title>Accueil</title>
  37. </head>

  38. <body>
  39. Connexion à l'espace membre :<br />
  40. <form action="index.php" method="post">
  41. Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>"><br />
  42. Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>"><br />
  43. <input type="submit" name="connexion" value="Connexion">
  44. </form>
  45. <a href="inscription.php">Vous inscrire</a>
  46. <?php
  47. if (isset($erreur)) echo '<br /><br />',$erreur;
  48. ?>
  49. </body>
  50. </html>


Faut-il créer un autre fichier pour l'include ?
toijan
le 02/01/2009 à 09:28
toijan
déplace la session_start de la ligne 13 à la ligne 1


ton code deviendra :

<?php
session_start();

if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
.....
j'en ai pas
LA GLOBULE
le 02/01/2009 à 09:38
LA GLOBULE
A mon avis, tu dois avoir une ligne vide ou un espace avant le <?php de l'index.php.
papouche
le 02/01/2009 à 11:07
papouche
Merci à vous pour l'attention que vous avez portée à ma question.En effet,Il y avait un espace au début du fichier Index.php avant <?php.
Tout fonctionne sauf la suppression des messages... je vais y travailler.
A +
papouche
le 02/01/2009 à 14:46
papouche
Bonjour,
Je suis toujours sur la messagerie interne, tout fonctionne... lorsque j'effectue une suppression de message,j'ai le message suivant:
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in D:\vhosts\xx.FR\xx\xx\xx\supprimer.php on line 25

Warning: Cannot modify header information - headers already sent by (output started at D:\vhosts\xx.FR\xx\xx\xx\supprimer.php:25) in D:\vhosts\xx.FR\xx\xx\xx\supprimer.php on line 28
Lorsque j'enl
papouche
le 02/01/2009 à 14:48
papouche
lorsque j'enlève le code:
mysql_free_result()... ça marche!
Cette fonction est-elle vraiment utile?
Répondre
LoadingChargement en cours