PHP > Espace membre > Erreur !
94uaehd
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai créé un espace membre en m'aidant de http://www.vulgarisation-informatique.com/source-10--zone-membres--espace-membre-avec-mysql--tres-simple.php
Lors de l'inscription, le message "Column count doesn't match value count at row 1" s'affiche.
Voici le code PHP:
J'ai créé un espace membre en m'aidant de http://www.vulgarisation-informatique.com/source-10--zone-membres--espace-membre-avec-mysql--tres-simple.php
Lors de l'inscription, le message "Column count doesn't match value count at row 1" s'affiche.
Voici le code PHP:
<?php session_start(); require 'conf.php'; $erreur=0; if(isset($_GET['action'],$_POST['passe_membre'],$_POST['confirm_mdp']) AND $_POST['passe_membre']===$_POST['confirm_mdp']) { if(get_magic_quotes_gpc()===1) { $pseudo=$_POST['pseudo']; $passe=$_POST['passe_membre']; } else { $pseudo=addslashes($_POST['pseudo']); $passe=addslashes($_POST['passe_membre']); } if(!trim($pseudo) OR !trim($passe)) { header('location:inscription.php'); exit; } mysql_connect($mysql_host,$mysql_login,$mysql_passe) OR die('<p>Connexion impossible à la base de données. Réessayez plus tard.</p>'); mysql_select_db($mysql_base) OR die('<p>sélection impossible</p>'); $requete=mysql_query('SELECT COUNT(*) FROM membres WHERE pseudo="'.$pseudo.'"') OR die(mysql_error()); $r=mysql_fetch_row($requete); if($r[0]!=='0') { mysql_close(); $erreur=1; } else { mysql_query('INSERT INTO membres VALUES("","'.$pseudo.'",md5("'.$passe.'"))') OR die(mysql_error()); $_SESSION['login']=$pseudo; mysql_close(); header('location:zonemembre.php'); exit; } } if($erreur===1) { echo '<p>Ce pseudo existe déjà. Veuillez en choisir un autre</p>'; } ?> <p>L'inscription est rapide et gratuite. Elle vous permet de bénéficier de multiples avantages.</p> <hr /> <form method="post" action="inscription.php?action=ajout"> <p> <label for="log">Nom d'utilisateur (login) :</label> <input type="text" name="pseudo" size="20" id="log" /> <br /><br /> Mot de passe : <input type="password" name="passe_membre" size="20" id="mdp" /></p> <p><label for="cmdp">Confirmez votre mot de passe :</label> <input type="password" name="confirm_mdp" size="20" id="cmdp" /> <br /></p> <p><input type="submit" value="Inscription" /></p> </form> </p> </div>
A voir également:
- PHP > Espace membre > Erreur !
- Espace insécable - Guide
- Espace de stockage gmail plein - Guide
- Membre indisponible vinted - Guide
- Espace stockage google - Guide
- Liberer espace ipad - Guide
2 réponses
Voici le meme script en plus rapide !
le script membre :
et la table membre :
CREATE TABLE membres (
id int(11) NOT NULL auto_increment,
login text NOT NULL,
pass_md5 text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
le script membre :
<?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 ('serveur', 'login', 'password'); mysql_select_db ('nom_base', $base); $sql = 'SELECT id FROM membres 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 membres (id, login, pass_md5) 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>
et la table membre :
CREATE TABLE membres (
id int(11) NOT NULL auto_increment,
login text NOT NULL,
pass_md5 text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
Utilisateur anonyme
disponible ici : http://www.lephpfacile.com/howto/11-comment-faire-une-messagerie-interne-en-php
Remplace
Par
mysql_query('INSERT INTO membres VALUES("","'.$pseudo.'",md5("'.$passe.'"))') OR die(mysql_error());
Par
mysql_query('INSERT INTO membres VALUES("","'.$pseudo.'","'.md5($passe).'")') OR die(mysql_error());
fait carement
le espace pour le champ auto_incentement evite de poser des pobleme chez one et tt ca ! et precise ta sctrucure de base de donnee comme ca :
Encore une fois, ca accelere le processus et evite toutes erreures !
mysql_query('INSERT INTO membres VALUES(" ","'.$pseudo.'","'.md5($passe).'")') OR die(mysql_error());
le espace pour le champ auto_incentement evite de poser des pobleme chez one et tt ca ! et precise ta sctrucure de base de donnee comme ca :
mysql_query('INSERT INTO membres(id, pseudo, passe) VALUES(" ","'.$pseudo.'","'.md5($passe).'")') OR die(mysql_error());
Encore une fois, ca accelere le processus et evite toutes erreures !
et ici : tu fait au lieu de === tu fait == :
devient donc :
encore une acceleration et pour ton probleme fait comme j'ai dit :
$_POST['passe_membre']===$_POST['confirm_mdp'])
devient donc :
$_POST['passe_membre']==$_POST['confirm_mdp'])
encore une acceleration et pour ton probleme fait comme j'ai dit :
mysql_query('INSERT INTO membres(id, pseudo, passe) VALUES(" ","'.$pseudo.'","'.md5($passe).'")') OR die(mysql_error());
Le problème est résolu depuis le temps ...
Si tu précises la structure, inutile de mettre l'id et sa valeur.
« et ici : tu fait au lieu de === tu fait == »
Il y a une différence.
Le premier signifie "est strictement égal" et le second "est égal"
La différence, c'est que pour PHP, null, false, une chaine vide, 0, etc sont égaux mais pas strictement égaux.
Si tu précises la structure, inutile de mettre l'id et sa valeur.
« et ici : tu fait au lieu de === tu fait == »
Il y a une différence.
Le premier signifie "est strictement égal" et le second "est égal"
La différence, c'est que pour PHP, null, false, une chaine vide, 0, etc sont égaux mais pas strictement égaux.