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".

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

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

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

if ($nb == 1) {
$data = mysql_fetch_array($req);
session_start();
$_SESSION['login'] = $_POST['login'];
// on enregistre en plus l'id du membre dans une variable de session
$_SESSION['id'] = $data['id'];
mysql_free_result($req);
mysql_close();
header('Location: membre.php');
exit();
}
elseif ($nb == 0) {
$erreur = 'Compte non reconnu.';
}
else {
$erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
mysql_free_result($req);
mysql_close();
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>

<html>
<head>
<title>Accueil</title>
</head>

<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</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