Probleme d'inscription

Répondre
Lrp
le 31/07/2009 à 22:11
Lrp
Bonjour, voila mon problème je fais un system access membre qui mais juste un suffixe a coter du pseudo

Voila la table:
CREATE TABLE IF NOT EXISTS `membre` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` text NOT NULL,
`access` text NOT NULL,
`pass_md5` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;


Voila le script d'inscription:
<?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', 'root', '');
mysql_select_db ('message', $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());

if ($nb == 2) {
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.access(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 = 'Un membre possède déjà ce access.';
}
}
}
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 />
Access : <input type="text" name="access" value="<?php if (isset($_POST['access'])) echo stripslashes(htmlentities(trim($_POST['access']))); ?>"><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>


Quand j'essaye de m'inscrire voila ce qui m'écrit

Erreur SQL !INSERT INTO membre VALUES("", "truk", "768957a081cf27da9c4ddab74aadc7d2")
Column count doesn't match value count at row 1


Voila si quelqu'un pourrais m'expliquer mon erreur vous me serrais d'une grande aide !!!

Cordialement Lrp
Lrp
le 01/08/2009 à 12:15
Lrp
C'est ce que j'ai fais il s'appelle "Access" après je les mis dans le formulaire d'inscription mais sa marche pas
LA GLOBULE
le 01/08/2009 à 12:45
LA GLOBULE
Il te faut modifier ta requete SQL pour y insérer ton "accès" que tu recupereras avec la variable $_POST['acces'].
Lrp
le 01/08/2009 à 15:02
Lrp
Voila ce que j'ai fait mais sa marche pas. Esque vous pouvez m'expliquer mon svp. J'ai fait ce que vous aviez dit

<?php
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['access']) && !empty($_POST['access'])) && (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', 'root', '');
mysql_select_db ('message', $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);

$sql = 'SELECT access 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['access'])).'")';
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 />
Access : <input type="text" name="access" value="<?php if (isset($_POST['access'])) echo stripslashes(htmlentities(trim($_POST['access']))); ?>"><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 02/08/2009 à 13:55
LA GLOBULE
Oula.

Je te suggère de relire les cours sur les insertions SQL et surtout de lire le manuel PHP sur les fonctions PHP que tu ne connais pas.
Parce que ce que tu nous montres la montre clairement tu ne comprends pas ce que tu fais, et en programmation rien n'est lié au hasard.

En effet :
- à quoi cela sert il de faire un md5 sur ton suffixe ?
- est ce normal que le mot de passe de la personne disparaisse de ton INSERT SQL ?
- Pourquoi vouloir éviter que 2 personnes aient le même suffixe ? (un site peut avoir X modérateurs)

Mais bon, je suis en vacances, je n'ai pas envie de me prendre la tête, essaye ceci, cela peut fonctionner :

<?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', 'root', '');
mysql_select_db ('message', $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']).'", "'.mysql_escape_string($_POST['access']).'", "'.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 />
Access : <input type="text" name="access" value="<?php if (isset($_POST['access'])) echo stripslashes(htmlentities(trim($_POST['access']))); ?>"><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>
Lrp
le 02/08/2009 à 17:06
Lrp
Un grand merci

PS: Désoler si je vous ais pris la tete !!! Encore merci
Lrp
le 02/08/2009 à 17:29
Lrp
Derniere petit question. Je veux mettre le Access des personne qui l'on voici ce que j'ai mis
<?php
// on alimente le menu déroulant avec les login des différents membres du site
while ($data = mysql_fetch_array($req)) {
echo '<option value="' , $data['id_destinataire'] , '">' , stripslashes(htmlentities(trim($data['access']))) , stripslashes(htmlentities(trim($data['nom_destinataire']))) , '</option>';
}
?>


Mais sa marche pas!!! Pourquoi ???
LA GLOBULE
le 02/08/2009 à 20:13
LA GLOBULE
Est ce que tu selectionnes le champs access quand tu recupères tes données ?
Lrp
le 02/08/2009 à 20:26
Lrp
désoler je comprend pas je suis noveau dans le pc
Répondre
LoadingChargement en cours