Espace membre pb création
Résolu
Maskk
Messages postés
89
Date d'inscription
Statut
Membre
Dernière intervention
-
Maskk Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
Maskk Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
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.';
}
}
?>
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:
- Espace membre pb création
- Espace insécable - Guide
- Espace de stockage gmail plein - Guide
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
2 réponses
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 !
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 !
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...
$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...
Erreur SQL !
SELECT count(*) FROM membre WHERE login=rt
Voici le message qu'il m'adresse apres avoir inséré ton code..
et si on essayé un truc genre :
$condition_req=odbc_real_escape_string($_POST['login'];
$sql = "SELECT count(*) FROM membre WHERE login='$condition_req' ";
$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
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...
<?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 ..