Problème avec un système d'inscription

Résolu/Fermé
Somario Messages postés 2 Date d'inscription jeudi 1 mai 2014 Statut Membre Dernière intervention 2 mai 2014 - 1 mai 2014 à 22:51
Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 - 2 mai 2014 à 12:05
J'ai ces messages d'erreurs et j'avoue être encore trop débutant pour les comprendre et donc savoir où est le soucis. Sachant que que j'ai mon dossier "sessions" et mon fichier ".htaccess" contenant "php 1":

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/169/sda/5/e/monsite/inscription.php:1) in /mnt/169/sda/5/e/monsite/inscription.php on line 22

Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sda/5/e/monsite/inscription.php:1) in /mnt/169/sda/5/e/monsite/inscription.php on line 24

Voici "inscription.php":

<?php
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
// on teste les deux mots de passe
if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
else {
$base = mysql_connect ('ftpperso.free.fr', 'login', 'psw');
mysql_select_db ('membre', $base);

// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

if ($data[0] == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
session_start();
$_SESSION['login'] = $_POST['login'];
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 htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
<input type="submit" name="inscription" value="Inscription">
</form>
<?php
if (isset($erreur)) echo '<br />',$erreur;
?>
</body>
</html>

Le plus étrange est que les insères ce font bien dans mysql malgré les message d'erreurs :/
A voir également:

3 réponses

Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
Modifié par Xavierdu34 le 2/05/2014 à 11:43
Met ton session_start() tout en haut de ton script, vérifie qu'il n'y est pas un espace avant la première balise php, ensuite vérifie que tu es bien sur un fichier encodé en ANSI ou en UTF8 sans BOM.
0
Somario Messages postés 2 Date d'inscription jeudi 1 mai 2014 Statut Membre Dernière intervention 2 mai 2014
2 mai 2014 à 11:51
Solution trouvée merci
0
Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
Modifié par Xavierdu34 le 2/05/2014 à 12:06
si le fichier en question est inclu par d'autre fichiers, il faut que tu t'assures que tu n'as aucune sortie sur tes fichiers précédent, en réalité l'erreur que tu obtiens t'indique que tu as quelques chose qui est afficher avant de créer ta session.

dans ton exemple il semble qu'à la ligne 1 de ton fichier inscription.php il y a une sortie de faite .. surement un espace ou un retour à la ligne avant ton <?php
0