Problème avec un système d'inscription
Résolu
Somario
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Xavierdu34 Messages postés 216 Date d'inscription Statut Membre Dernière intervention -
Xavierdu34 Messages postés 216 Date d'inscription Statut Membre Dernière intervention -
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 :/
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:
- Problème avec un système d'inscription
- Restauration systeme windows 10 - Guide
- Wetransfer gratuit sans inscription - Guide
- Twitter inscription - Guide
- Vinted inscription - Guide
- Paypal inscription - Guide
3 réponses
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.
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
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