comment faire une messagerie interne
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
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.
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>
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 ?
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.
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: