comment faire une messagerie interne

Répondre
abkm
le 27/05/2010 à 12:09
abkm
Problème sur le tuto comment faire une messagerie interne basée sur le comment faire un espace membre.
Quand je m'inscris sur la page inscription voila le mssage d'erreur: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/multiserv/users/369144/projects/629299/www/essai/inscription.php:1) in /data/multiserv/users/369144/projects/629299/www/essai/inscription.php on line 22

Warning: Cannot modify header information - headers already sent by (output started at /data/multiserv/users/369144/projects/629299/www/essai/inscription.php:1) in /data/multiserv/users/369144/projects/629299/www/essai/inscription.php on line 27
voilà j'y arrive pas as allez dans la page membre
LA GLOBULE
le 27/05/2010 à 12:17
LA GLOBULE
C'est parce que tu affiches quelque chose à la ligne 1 du fichier /data/multiserv/users/369144/projects/629299/www/essai/inscription.php alors que tu fais un session_start à la ligne 22 du fichier /data/multiserv/users/369144/projects/629299/www/essai/inscription.php.

Or il ne faut rien afficher avant l'appel d'un session_start.

Tu n'aurais pas un espace ou un retour chariot avant le <?php de inscription.php ? Si oui, vire le.
abkm
le 27/05/2010 à 13:26
abkm
Et pour tant voila le code
<?php
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
else {
$base = mysql_connect ('localhost', 'user', 'password');
mysql_select_db ('basenam', $base);

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

if ($nb == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on récupère l'id de notre nouveau membre
$id = mysql_insert_id();

session_start();
$_SESSION['login'] = $_POST['login'];

// on stocke cet id dans une variable de session
$_SESSION['id'] = $id;
header('Location: membre.php');
exit();
}
else {
$erreur = 'Un membre possède déjà ce login.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
<html>
<head>
<title>Inscription</title>
</head>

<body>
Inscription à l'espace membre :<br />
<form action="inscription.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 />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo stripslashes(htmlentities(trim($_POST['pass_confirm']))); ?>"><br />
<input type="submit" name="inscription" value="Inscription">
</form>
<?php
if (isset($erreur)) echo '<br />',$erreur;
?>
</body>
</html>
LA GLOBULE
le 27/05/2010 à 14:03
LA GLOBULE
Pas besoin du code pour répondre au problème puisque l'erreur dit clairement ce qu'il se passe.

As tu lu mon précédent message ? (car il contient la solution à ton problème)
Si non, ben lis le...
Si oui, que ne comprends tu pas dans ce que j'ai écris ?
dark_nemo
le 28/05/2010 à 23:05
dark_nemo
Soit tu affiches quelque chose avant de démarrer tes sessions donc php te jète soit tu as un espace qui traine quelque pas avant ton session_start.

Une astuce : Dans un fichier en php pur, la balise fermente ?> n'est pas obligatoire. ça évite même pas mal de problème d'espace oubliés.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours