Espace membre pb création

Résolu
Maskk Messages postés 89 Statut Membre -  
Maskk Messages postés 89 Statut Membre -
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&eacutee") ;

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

2 réponses

  1. vincent170186 Messages postés 329 Statut Membre 52
     
    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
    1. Maskk Messages postés 89 Statut Membre 2
       
      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
    2. vincent170186 Messages postés 329 Statut Membre 52
       
      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
    3. Maskk Messages postés 89 Statut Membre 2
       
      $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
    4. Maskk Messages postés 89 Statut Membre 2
       
      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
    5. Maskk Messages postés 89 Statut Membre 2
       
      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
  2. Maskk Messages postés 89 Statut Membre 2
     
    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