Jump to content

[php]j'ai un *** de probleme!

Featured Replies

Posted

voila, ca fait 1 semaine que je suis bloqué sur ce code(oui enfin...je l'ai pas touché depuis 4 jours...)

$i = ( isset($_GET['i']) ) ? intval($_GET['i']) : 0;

$p = ( isset($_GET['p']) ) ? $_GET['p'] : 0;

echo "$p<br>";

if ($i != 0 && $p != 0)

   {

   connect_to_db();

   $query = 'SELECT * FROM membres WHERE id=' .$i . ' AND pwd=' .$p;

   $result = mysql_query($query) or die("Query failed");

   } else {echo"le premier if passe pas<BR>";}

if ($result==false || @mysql_numrows($result)!=1){

 //include("login.php");

 echo "tu devrais te logguer <br>";

}else{

 //include("admin_index.php");

 echo "bienvenue admin<br>";

}

echo "requete :<br>$query<br>erreur : (".mysql_errno().")".mysql_error();

Ce script sort les variables i et p de l'url et va verifier s'il existe un champ mysql qui les contient les 2. Si c'est le cas, il affiche "bienvenue admin".

Et si ce champ n'existe pas, donc si le login est faux, il affiche "tu devrais te logguer".

Le probleme est que cela ne marche que si $i et $p sont constitués de chiffres. Si je veux que $p soit un mot constitué de lettres, le script de parvient pas a sortir la variable. C'est cela que je cherche a faire avec la fonction parse_url().

vous arrivez a m'aider? j'espere que j'ai bien expliqué mon probleme...

if ($i != 0 && $p != 0)

{

connect_to_db();

Le probleme est que cela ne marche que si $i et $p sont constitués de chiffres. Si je veux que $p soit un mot constitué de lettres, le script de parvient pas a sortir la variable. C'est cela que je cherche a faire avec la fonction parse_url().

Je pense que le problème viens de la ligne if($i != 0 ...

Mais je n'ai pas fait de PHP depuis très longtemps.

Tu devrais vérifier que si $i vaut "A", tu atteins bien la ligne connect_to_db(), et tu sauras si c'est ta condition qui est mauvaise!

  • Author

c'etait presque trop facile.

maintenant j'ai mis ca

if ($i != FALSE && $p != FALSE)

   {

   connect_to_db();

   $query = 'SELECT * FROM membres WHERE id=' .$i . ' AND pwd=''.$p.''';

   $result = mysql_query($query) or die("Query failed");

   }

FALSE marche avec chiffres et nombres alors que 0 seulement avec les chiffres. J'ai aussi rajouté les quotes dans la requete vu que c'est des lettres.

merci brice.wernet de m'avoir mis sur la piste apres une semaine :francais:

hum je rajouterais aussi des "addslashes" pour éviter que ton SQL soit pollué/hacké...

Je testeraisaussi le champ Password AVANT le champ user pour la même raison. Je m'explique : si on interromp ta requête au niveau de la vérif de l'user, on peut rentrer sans le pass; or il est facile de trouver un nom de user... Si tu testes le password avant, cette astuce de hacking ne fonctionne plus...

Au fait c'est quoi l'URL de ton site ? :francais:

  • Author

heu..pour le moment mon site est sur mon serveur local car il est en developpement. Tu verra un petit message dans ma signature quand je l'ouvrirai. D'ici 3-4 semaines je pense.

Sinon, bonne idée pour le coup de la verification. Je vais le faire.

Archived

This topic is now archived and is closed to further replies.