Espace membre pb création

Résolu/Fermé
Maskk Messages postés 89 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 23 décembre 2010 - Modifié par Maskk le 2/08/2010 à 13:36
Maskk Messages postés 89 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 23 décembre 2010 - 2 août 2010 à 17:00
Bonjour à tous,

J'ai suivi plusieur tutoriel dont
http://www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php#h11

Mais au test de la page inscription ou meme de login , l'erreur du genre:Erreur SQL !
SELECT count(*) FROM membre WHERE login="jean" m'apparait je ne comprends vraiment pas mon soucis ...
Je precise que je travaille sur un serveur MSSQL (sql serveur) , avec une liaison ODBC ...
Si vous pouviez m'aider je vous serais extrêmement reconnaissant...


<?php
function odbc_real_escape_string($string)
{
$chars = array('NULL', '\x00', '\n', '\r', '\\', "'", '"', '\x1a');
$escapes = array('\NULL', '\\x00', '\\n', '\\r', '\\\\', "''", '\"', '\\x1a');

return str_replace($chars, $escapes, $string);
}
// 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 {

$username="machin"; //Représente le user sur ta base
$password="truc"; // Représente le passwd de la base
$odbc="Demandes_informatiques"; // Représente le nom du driver ODBC pour SQL Server

$connexion=odbc_pconnect("Demandes_informatiques","demandes_info","info") or die("Impossible de se connecter à la bas de donnée") ;


// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*) FROM membre WHERE login="'.odbc_real_escape_string($_POST['login']).'"';

$req =odbc_do($connexion,$sql) or die('Erreur SQL !<br />'.$sql.'<br />'.odbc_error($sql));

$data = odbc_fetch_array($connexion,$req);

if ($data[0] == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.odbc_real_escape_string($_POST['login']).'", "'.odbc_real_escape_string(md5($_POST['pass'])).'")';
odbc_do($connexion,$sql) or die('Erreur SQL !'.$sql.'<br />'.odbc_error($sql));

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.';
}
}
?>

A voir également:

2 réponses

vincent170186 Messages postés 316 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 28 septembre 2012 52
2 août 2010 à 15:26
salut !

y a un truc qui me parait louche au niveau des quotes de ta requetes

essaye :

$sql = "SELECT count(*) FROM membre WHERE login=".odbc_real_escape_string($_POST['login']);

dis moi si ça change qqchose !
1
Maskk Messages postés 89 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 23 décembre 2010 2
Modifié par Maskk le 2/08/2010 à 15:39
Bonjour vincent ,
Erreur SQL !
SELECT count(*) FROM membre WHERE login=rt
Voici le message qu'il m'adresse apres avoir inséré ton code..
0
vincent170186 Messages postés 316 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 28 septembre 2012 52
2 août 2010 à 15:46
ok !
et si on essayé un truc genre :
$condition_req=odbc_real_escape_string($_POST['login'];
$sql = "SELECT count(*) FROM membre WHERE login='$condition_req' ";
0
Maskk Messages postés 89 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 23 décembre 2010 2
2 août 2010 à 15:55
$condition_req=odbc_real_escape_string($_POST['login']);
$sql = "SELECT count(*) FROM membre WHERE login='$condition_req' ";
$req =odbc_do($connexion,$sql) or die('Erreur SQL !<br />'.$sql.'<br />'.odbc_error($sql));

Et ca me donne : Erreur SQL !INSERT INTO membre VALUES("", "rt", "trr") malheuresement
0
Maskk Messages postés 89 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 23 décembre 2010 2
Modifié par Maskk le 2/08/2010 à 16:02
Je suis desolé Vincent j'ai fait mon imbecile , j'ai nommé deux test erreurs pareil en fait mon erreur point sur mon INSERT

if ($data[0] == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.odbc_real_escape_string($_POST['login']).'", "'.odbc_real_escape_string($_POST['pass']).'")';
odbc_do($connexion,$sql) or die('Erreur SQL insert!'.$sql.'<br />'.odbc_error($sql));

Je sui ton exemple pour l'insert j'ai fait:
$condition_pass=odbc_real_escape_string($_POST['pass']);
et
if ($data[0] == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.$condition_req.'", "'.$condition_pass.'")';
odbc_do($connexion,$sql) or die('Erreur SQL insert!'.$sql.'<br />'.odbc_error($sql));
Mais toujours la meme erreur...
0
Maskk Messages postés 89 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 23 décembre 2010 2
2 août 2010 à 16:29
Peut etre qu'a toi ca te parle mais j'ai testé dans un fichier vierge
<?php
$sql = 'INSERT INTO membre VALUES("","toto", "tutu")';
odbc_do($connexion,$sql) or die('Erreur SQL insert! '.$sql.'<br />'.odbc_error($sql));
?>
ca ne marche pas ... se doit etre sql serveur qui doit demander une autre syntaxe j'imagine ..
0
Maskk Messages postés 89 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 23 décembre 2010 2
Modifié par Maskk le 2/08/2010 à 17:02
Re , probleme resolu pour l'insert c'etait tout simple il fallait faire tres attention a la syntaxe ;

$sql = "INSERT INTO membre VALUES('toto','tutu')";
$resultat=odbc_do($connexion,$sql); //or die('Erreur SQL insert! '.$sql.'<br />'.odbc_error($sql));
if ($resultat==0) {
die("<br><font color='red'>Champ de saisie vide</font><br>".odbc_error());
}
else echo "<p><br><font color='#33CC66'>Vous avez envoyé une demande informatique.</font><br></p>";

Et puis bien mettre guillemet " " et pas cote ' ' ... pour l'insert...
0