Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1879 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Injections SQL et htmlspecialchars() + sécurité de mon appli

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Injections SQL et htmlspecialchars() + sécurité de mon appli

n°1691909
Profil sup​primé
Posté le 25-02-2008 à 14:14:14  answer
 

Bonjour, comme la version de PHP de mon site ne reconnait ni :
-mysqli_escape_string ni
-mysqli_real_escape_string,  
je vais utiliser htmlspecialchars. Est-ce suffisant ?


Message édité par Profil supprimé le 26-02-2008 à 18:45:18
mood
Publicité
Posté le 25-02-2008 à 14:14:14  profilanswer
 

n°1691914
FlorentG
Posté le 25-02-2008 à 14:16:37  profilanswer
 

C'est surtout qu'il n'y a pas l'extension mysqli d'installée, nan ?
 
htmlspecialchars est à ne surtout pas utiliser, parce qu'elle n'escape pas les quotes (') de la même manière qu'il faudrait. Elle va remplacer les quotes par " alors qu'il faut un \'.
 
Dirige-toi alors vers les PDO (si installé) ou l'extension mysql et la fonction mysql_real_escape_string

n°1691915
masklinn
í dag viðrar vel til loftárása
Posté le 25-02-2008 à 14:16:59  profilanswer
 

non, ça n'a strictement aucun rapport. Le fait même que tu poses cette question montre que tu ne comprends absolument pas les problèmes que ces diverses fonctions tentent de résoudre :/

FlorentG a écrit :

C'est surtout qu'il n'y a pas l'extension mysqli d'installée, nan ?

 

htmlspecialchars est à ne surtout pas utiliser, parce qu'elle n'escape pas les quotes (') de la même manière qu'il faudrait. Elle va remplacer les quotes par " alors qu'il faut un \'.

 

Dirige-toi alors vers les PDO (si installé) ou l'extension mysql et la fonction mysql_real_escape_string


[:mlc]

 

htmlspecialchars est à ne pas utiliser parce qu'elle n'a aucun putain de rapport avec le SQL surtout [:mlc]

 

On s'en fout qu'elle escape "caca" ou "culcul" [:mlc]

Message cité 1 fois
Message édité par masklinn le 25-02-2008 à 14:17:57

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1691918
Profil sup​primé
Posté le 25-02-2008 à 14:19:10  answer
 

mysql_real_escape_string => Merci, cette fonction marche...

n°1691923
FlorentG
Posté le 25-02-2008 à 14:20:24  profilanswer
 

masklinn a écrit :

htmlspecialchars est à ne pas utiliser parce qu'elle n'a aucun putain de rapport avec le SQL surtout [:mlc]


C'était sous-entendu, fouille-caca

n°1691935
masklinn
í dag viðrar vel til loftárása
Posté le 25-02-2008 à 14:25:35  profilanswer
 

FlorentG a écrit :


C'était sous-entendu, fouille-caca


Vas te faire sous-entendre ailleurs, franchement, tu réponds à un mec qui n'a même pas suffisament lu la doc de php pour réaliser que "htmlspecialchars" ça s'applique dans de la manipulation de html et non dans de la manipulation de sql, qu'est-ce qu'il pourrait bien biter d'un sous-entendu pareil [:pingouino]

 

Surtout quand en réalité ya rien de sous-entendu, juste des trucs qui sont pas dits et une justification totalement foireuse dont tout le monde se contrefout [:pingouino]

Message cité 1 fois
Message édité par masklinn le 25-02-2008 à 14:26:24

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1691936
FlorentG
Posté le 25-02-2008 à 14:26:54  profilanswer
 

masklinn a écrit :

Vas te faire sous-entendre ailleurs, franchement, tu réponds à un mec qui n'a même pas suffisament lu la doc de php pour réaliser que "htmlspecialchars" ça s'applique dans de la manipulation de html et non dans de la manipulation de sql [:pingouino]


Mais c'est justement ce que je lui explique [:johneh]
 
Oh et pis merde pourquoi je répond encore [:sadnoir]

n°1691941
masklinn
í dag viðrar vel til loftárása
Posté le 25-02-2008 à 14:28:45  profilanswer
 

FlorentG a écrit :


Mais c'est justement ce que je lui explique [:johneh]


C'est marrant, j'ai compté, le token "html" est présent très exactement 0 fois dans ton post. Idem pour le token "SQL" [:dawak]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1691944
FlorentG
Posté le 25-02-2008 à 14:29:28  profilanswer
 

masklinn a écrit :

C'est marrant, j'ai compté, le token "html" est présent très exactement 0 fois dans ton post. Idem pour le token "SQL" [:dawak]


Dans htmlspecialchars, y'a 'html' et dans mysql_real_escape_string, y'a 'sql'. J'y peux rien si ton parser est merdique :o

n°1691964
masklinn
í dag viðrar vel til loftárása
Posté le 25-02-2008 à 14:37:05  profilanswer
 

FlorentG a écrit :


Dans htmlspecialchars, y'a 'html' et dans mysql_real_escape_string, y'a 'sql'. J'y peux rien si ton parser est merdique :o


Je crois que t'as du mal avec le concept de "token" [:dawak]
 
En même temps, tu viens de PHP donc ça m'étonne pas tant que ça [:dawak]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
mood
Publicité
Posté le 25-02-2008 à 14:37:05  profilanswer
 

n°1691968
FlorentG
Posté le 25-02-2008 à 14:38:28  profilanswer
 

masklinn a écrit :

Je crois que t'as du mal avec le concept de "token" [:dawak]
 
En même temps, tu viens de PHP donc ça m'étonne pas tant que ça [:dawak]


Bon ok, peut-être que j'ai pas été assez explicite dans mon post, peut-être que j'ai oublié de mentionné le rôle clair de chaque fonction. Mais au moins j'ai expliqué par un cas concret pourquoi c'était pas bien ce qu'il faisait. Après désolé de pas avoir ta rigueur légendaire [:spamafote]

n°1691975
masklinn
í dag viðrar vel til loftárása
Posté le 25-02-2008 à 14:40:59  profilanswer
 

FlorentG a écrit :


Bon ok, peut-être que j'ai pas été assez explicite dans mon post, peut-être que j'ai oublié de mentionné le rôle clair de chaque fonction. Mais au moins j'ai expliqué par un cas concret pourquoi c'était pas bien ce qu'il faisait. Après désolé de pas avoir ta rigueur légendaire [:spamafote]


C'est pas un problème de rigueur ou de clarté, mais de réponse qui n'a aucun rapport avec l'expréssion des besoins [:dawak]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1691977
FlorentG
Posté le 25-02-2008 à 14:42:11  profilanswer
 

masklinn a écrit :

mais de réponse qui n'a aucun rapport avec l'expréssion des besoins [:dawak]


Whut ? [:johneh] Je lui ai expliqué pourquoi ça allait pas, les raisons pour lesquelles la fonction qu'il voulait utiliser n'était pas dispo, et quelle fonction utiliser à la place. J'vois pas en quoi il n'y a aucun rapport avec ses besoins...

n°1692614
sircam
I Like Trains
Posté le 26-02-2008 à 10:31:04  profilanswer
 

Non mais vous avez pas bientôt fini, vous deux? [:mlc]
 
Toujours en train de vous chamailler. On dirait les deux vieux du muppet show.
 
L'auteur du post, ça fait longtemps qu'il est parti, tout content avec sa belle appli PHP passoire standard qui fera grossir les stats OWASP.
 
[:dawa]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1692779
CyberDenix
Posté le 26-02-2008 à 13:30:42  profilanswer
 

:lol:


---------------
Directeur Technique (CTO)
n°1692915
Profil sup​primé
Posté le 26-02-2008 à 17:45:00  answer
 

sircam a écrit :

Non mais vous avez pas bientôt fini, vous deux? [:mlc]

 

Toujours en train de vous chamailler. On dirait les deux vieux du muppet show.

 

L'auteur du post, ça fait longtemps qu'il est parti, tout content avec sa belle appli PHP passoire standard qui fera grossir les stats OWASP.

 

[:dawa]


 :o
Bon au lien de vous engueuler pour rien, dites-moi plutôt si il y a des problèmes de sécurité maintenant :
Index (index.php):

Code :
  1. <?php include('mysql.php');
  2. if(isset($_COOKIE['user_name']))
  3. {
  4.     $table = mysql_query("SELECT * FROM user WHERE pseudo='".mysql_escape_string($_COOKIE['user_name'])."'" );
  5.     while ($user = mysql_fetch_array($table))
  6.     {
  7.         if($user['id']==$_COOKIE['user_id'])
  8.         {
  9.             $connect=htmlspecialchars($_COOKIE['user_name']);
  10.         }
  11.     }
  12. }
  13. ?>
  14. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  15. <html xmlns="http://www.w3.org/1999/xhtml">
  16. <!-- DW6 -->
  17. <head>
  18. <!-- Copyright 2005 Macromedia, Inc. All rights reserved. -->
  19. <title>Membre</title>
  20. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  21. <link rel="stylesheet" href="http://www.montblanc-madness.com/style.css" type="text/css" />
  22. </head>
  23. <body bgcolor="#999966">
  24. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  25.     <tr>
  26.     <td width="15" nowrap="nowrap">&nbsp;</td>
  27.     <td height="60" colspan="3" class="logo" nowrap="nowrap">Montblanc Madness</td>
  28.     <td width="100%">&nbsp;</td>
  29.     </tr>
  30.  
  31.     <tr bgcolor="#ffffff">
  32.     <td colspan="5"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
  33.     </tr>
  34.  
  35.     <tr bgcolor="#a4c2c2">
  36.     <td width="15" nowrap="nowrap">&nbsp;</td>
  37.     <td height="36" colspan="2" id="navigation" class="navText"><a href="http://www.montblanc-madness.com">ACCUEIL</a> / Membres</td>
  38.     <td>&nbsp;</td>
  39.     <td width="100%">&nbsp;</td>
  40.     </tr>
  41.  
  42.     <tr bgcolor="#ffffff">
  43.     <td colspan="5"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
  44.     </tr>
  45.  
  46.     <tr bgcolor="#ffffff">
  47.     <td valign="top" width="15"><img src="mm_spacer.gif" alt="" width="15" height="1" border="0" /></td>
  48.     <td valign="top" width="140"><img src="mm_spacer.gif" alt="" width="140" height="1" border="0" /></td>
  49.     <td width="505" valign="top"><br />
  50.     <table border="0" cellspacing="0" cellpadding="2" width="440">
  51.         <tr>
  52.         <td class="pageName"><div align="center">Bienvenue<?php if(@$connect) echo ', '.@$connect ?> </div></td>
  53.         </tr>
  54.  
  55.         <tr>
  56.         <td class="bodyText">
  57.        <p></p>
  58.        <?php
  59.         if(!isset($connect))
  60.         {
  61.             ?><p align="center"><a href="connect.php">Connexion</a> | <a href="register.php">Inscription</a></p><?php
  62.         }
  63.         else
  64.         {
  65.             ?><p align="center"><a href="topo.php">Ecrire un topo</a> | <a href="connect.php?disconnect">Deconnexion</a></p><?php
  66.         }
  67.         ?>
  68.  <p align="center">
  69.    <a href="http://validator.w3.org/check?uri=referer" title="Page xHTML validated"><img
  70.        src="http://www.w3.org/Icons/valid-xhtml10-blue"
  71.        alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
  72.  </p>
  73.         <br /></td>
  74.         </tr>
  75.     </table>
  76.      <br />
  77.     &nbsp;<br />    </td>
  78.     <td valign="top">&nbsp;</td>
  79.     <td width="100%">&nbsp;</td>
  80.     </tr>
  81.  
  82.     <tr>
  83.     <td width="15">&nbsp;</td>
  84.    <td width="140">&nbsp;</td>
  85.    <td width="505">&nbsp;</td>
  86.    <td width="100">&nbsp;</td>
  87.    <td width="100%">&nbsp;</td>
  88.  </tr>
  89. </table>
  90. </body>
  91. </html>


Connexion (connect.php)

Code :
  1. <?php
  2. $connect=false;
  3. include('mysql.php');
  4. if(isset($_GET['disconnect']))
  5. {
  6.     setcookie('user_name',false);
  7.     setcookie('user_id',false);
  8.     header('location: index.php');
  9. }
  10.     $table = mysql_query("SELECT * FROM user" );
  11.     while ($user = mysql_fetch_array($table))
  12.     {
  13.         if($user['id']==$_COOKIE['user_id'] && $user['pseudo']==$_COOKIE['user_name'])
  14.         {
  15.             header('location: index.php');
  16.         }
  17.         else
  18.         {
  19.             if(@$_POST['pseudo']==$user['pseudo'] && @$_POST['password']==$user['password'])
  20.             {
  21.                 setcookie('user_name',$user['pseudo']);
  22.                 setcookie('user_id',$user['id']);
  23.                 header('location: index.php');
  24.             }
  25.         }
  26.             
  27.     }
  28. ?>    
  29. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  30. <html xmlns="http://www.w3.org/1999/xhtml">
  31. <!-- DW6 -->
  32. <head>
  33. <!-- Copyright 2005 Macromedia, Inc. All rights reserved. -->
  34. <title>Connexion</title>
  35. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  36. <link rel="stylesheet" href="http://www.montblanc-madness.com/style.css" type="text/css" />
  37. </head>
  38. <body bgcolor="#999966">
  39. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  40.     <tr>
  41.     <td width="15" nowrap="nowrap">&nbsp;</td>
  42.     <td height="60" colspan="3" class="logo" nowrap="nowrap"><br />
  43.     Montblanc Madness</td>
  44.     <td width="100%">&nbsp;</td>
  45.     </tr>
  46.  
  47.     <tr bgcolor="#ffffff">
  48.     <td colspan="5"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
  49.     </tr>
  50.  
  51.     <tr bgcolor="#a4c2c2">
  52.     <td width="15" nowrap="nowrap">&nbsp;</td>
  53.     <td height="36" colspan="2" id="navigation" class="navText"><a href="http://www.montblanc-madness.com/">ACCUEIL</a> / <a href="index.php">Membres</a> / Connexion</td>
  54.     <td>&nbsp;</td>
  55.     <td width="100%">&nbsp;</td>
  56.     </tr>
  57.  
  58.     <tr bgcolor="#ffffff">
  59.     <td colspan="5"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
  60.     </tr>
  61.  
  62.     <tr bgcolor="#ffffff">
  63.     <td valign="top" width="15"><img src="mm_spacer.gif" alt="" width="15" height="1" border="0" /></td>
  64.     <td valign="top" width="140"><img src="mm_spacer.gif" alt="" width="140" height="1" border="0" /></td>
  65.     <td width="505" valign="top"><br />
  66.     <table border="0" cellspacing="0" cellpadding="2" width="440">
  67.         <tr>
  68.         <td class="pageName"><div align="center">Connectez vous !</div></td>
  69.         </tr>
  70.  
  71.         <tr>
  72.         <td class="bodyText">
  73.        <?php
  74.         if($connect==false)
  75.         {
  76.             if(!empty($_POST['pseudo']) && !empty($_POST['password']))
  77.              {
  78.                 echo '<div align="center">Mot de passe ou nom d\'utilisateur incorrect</div>';
  79.             }
  80.              ?>
  81.                 <form method="post" action="register.php">
  82. <div align="center"><input type="text" name="pseudo" /> | <input type="password" name="password" /></div>
  83. <p align="center"><input type="submit" value="S'inscrire" /></p>
  84. </form>
  85.            <?php } ?>
  86.              <p align="center">
  87.    <a href="http://validator.w3.org/check?uri=referer" title="Page xHTML validated"><img
  88.        src="http://www.w3.org/Icons/valid-xhtml10-blue"
  89.        alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
  90.                  </p>
  91.  
  92.         <br /></td>
  93.         </tr>
  94.     </table>
  95.      <br />
  96.     &nbsp;<br />    </td>
  97.     <td valign="top">&nbsp;</td>
  98.     <td width="100%">&nbsp;</td>
  99.     </tr>
  100.  
  101.     <tr>
  102.     <td width="15">&nbsp;</td>
  103.    <td width="140">&nbsp;</td>
  104.    <td width="505">&nbsp;</td>
  105.    <td width="100">&nbsp;</td>
  106.    <td width="100%">&nbsp;</td>
  107.  </tr>
  108. </table>
  109. </body>
  110. </html>


Inscription (register.php)

Code :
  1. <?php
  2. include('mysql.php');
  3. if(isset($_COOKIE['user_name']))
  4. {
  5.     $table = mysql_query("SELECT * FROM user WHERE pseudo='".mysql_escape_string($_COOKIE['user_name'])."'" );
  6.     while ($user = mysql_fetch_array($table))
  7.     {
  8.         if($user['id']==$_COOKIE['user_id'] && $user['pseudo']==$_COOKIE['user_name'])
  9.         {
  10.             header('location: index.php');
  11.         }
  12.     }
  13. }
  14. ?>
  15. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  16. <html xmlns="http://www.w3.org/1999/xhtml">
  17. <!-- DW6 -->
  18. <head>
  19. <!-- Copyright 2005 Macromedia, Inc. All rights reserved. -->
  20. <title>Inscription</title>
  21. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  22. <link rel="stylesheet" href="http://www.montblanc-madness.com/style.css" type="text/css" />
  23. </head>
  24. <body bgcolor="#999966">
  25. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  26.     <tr>
  27.     <td width="15" nowrap="nowrap">&nbsp;</td>
  28.     <td height="60" colspan="3" class="logo" nowrap="nowrap"><br />
  29.     Montblanc Madness</td>
  30.     <td width="100%">&nbsp;</td>
  31.     </tr>
  32.  
  33.     <tr bgcolor="#ffffff">
  34.     <td colspan="5"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
  35.     </tr>
  36.  
  37.     <tr bgcolor="#a4c2c2">
  38.     <td width="15" nowrap="nowrap">&nbsp;</td>
  39.     <td height="36" colspan="2" id="navigation" class="navText"><a href="http://www.montblanc-madness.com/">ACCUEIL</a> / <a href="index.php">Membres</a> / Inscription</td>
  40.     <td>&nbsp;</td>
  41.     <td width="100%">&nbsp;</td>
  42.     </tr>
  43.  
  44.     <tr bgcolor="#ffffff">
  45.     <td colspan="5"><img src="mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
  46.     </tr>
  47.  
  48.     <tr bgcolor="#ffffff">
  49.     <td valign="top" width="15"><img src="mm_spacer.gif" alt="" width="15" height="1" border="0" /></td>
  50.     <td valign="top" width="140"><img src="mm_spacer.gif" alt="" width="140" height="1" border="0" /></td>
  51.     <td width="505" valign="top"><br />
  52.     <table border="0" cellspacing="0" cellpadding="2" width="440">
  53.         <tr>
  54.         <td class="pageName"><div align="center">Inscrivez vous !</div></td>
  55.         </tr>
  56.  
  57.         <tr>
  58.         <td class="bodyText">
  59.        <?php if(!empty($_POST['pseudo']) || !empty($_POST['password']))
  60.                 {
  61.                     $liste=mysql_query('SELECT * FROM user');
  62.                     $i=0;
  63.                     while($nom=mysql_fetch_array($liste))
  64.                     {
  65.                         if($_POST['pseudo']==$nom['pseudo'])
  66.                         $i++;
  67.                     }
  68.                     if($i==0)
  69.                     {
  70.                         mysql_query("INSERT INTO user VALUES ('".mysql_escape_string($_POST['pseudo'])."','".mysql_escape_string($_POST['password'])."','".md5(mysql_escape_string($_POST['pseudo']).':'.mysql_escape_string($_POST['password']))."')" );
  71.                         echo 'Inscription r&eacute;ussie';
  72.                     }
  73.                     else
  74.                     {
  75.                         echo '<div align="center">Nom d\'utilisateur occup&eacute;<br />';
  76.                         echo '<a href="register.php">Recommencer</a></div>';
  77.                     }
  78.                 }
  79.               else
  80.                 {
  81.     ?>
  82. <form method="post" action="register.php">
  83. <div align="center"><input type="text" name="pseudo" /> | <input type="password" name="password" /></div>
  84. <p align="center"><input type="submit" value="S'inscrire" /></p>
  85. </form>
  86. <h2 align="center">L'inscription vous permet de cr&eacute;er des topos !</h2>
  87. <br />
  88.    <?php
  89. }
  90. ?>    
  91.  <p align="center">
  92.    <a href="http://validator.w3.org/check?uri=referer" title="Page xHTML validated"><img
  93.        src="http://www.w3.org/Icons/valid-xhtml10-blue"
  94.        alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
  95.  </p>
  96.      <br /></td>
  97.         </tr>
  98.     </table><br />
  99.     &nbsp;<br />    </td>
  100.     <td valign="top">&nbsp;</td>
  101.     <td width="100%">&nbsp;</td>
  102.     </tr>
  103.  
  104.     <tr>
  105.     <td width="15">&nbsp;</td>
  106.    <td width="140">&nbsp;</td>
  107.    <td width="505">&nbsp;</td>
  108.    <td width="100">&nbsp;</td>
  109.    <td width="100%">&nbsp;</td>
  110.  </tr>
  111. </table>
  112. </body>
  113. </html>
 

EDIT : fermeture d'une Div (pourtant la page était valide XHTML Transitional :o)


Message édité par Profil supprimé le 26-02-2008 à 18:04:03
n°1693001
FlorentG
Posté le 26-02-2008 à 18:56:50  profilanswer
 

C'est pas qu'il y a des problèmes de sécurité, mais c'est le bordel à mort [:pingouino] Y'a tout qui est mélangé, et y'a plein de tableaux :(

n°1693002
Profil sup​primé
Posté le 26-02-2008 à 18:59:25  answer
 

Donc c'est le HTML qui va pas ?

n°1693005
dwogsi
Défaillance cérébrale...
Posté le 26-02-2008 à 19:03:24  profilanswer
 

Oui parce que 1 il est douteux et 2 il est pas séparé du php!

 

Edit :
Pourquoi faire du SELECT * pour ne récupérer qu'une seule donnée?!
Et puis coller des exit(); après des header('location: ...'); parce qu'a priori c'est plus la peine d'envoyer le contenu de la page!

 

Edit2:
Ouai en fait ya le php qui va pas non plus globalement, parce que des conditions de ce genre c'est louche :
if(!empty($_POST['pseudo']) || !empty($_POST['password']))

 

Edit3:
Non et puis c'est quoi ce test pour vérifier si le pseudo est déjà pris?! T'as jamais entendu parler de mysql_num_rows()?


Message édité par dwogsi le 26-02-2008 à 19:12:00

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1693009
med365
Posté le 26-02-2008 à 19:06:26  profilanswer
 

Non c'est le php :o

 

Edit : J'éclaire mes dires : http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0  Le MVC ;)

 

Edit 2 : if(!empty($_POST['pseudo']) || !empty($_POST['password'])) cette condition vérifie que les champs ne sont pas vides non ? pourquoi ne pas plutot faire un test si les champs sont vides et retourner un message d'erreur dans le cas ou ?


Message édité par med365 le 26-02-2008 à 19:12:30
n°1693013
dwogsi
Défaillance cérébrale...
Posté le 26-02-2008 à 19:13:01  profilanswer
 

Ouai enfin sans dire d'aller jusqu'au MVC, un peu de séparation ça fait pas d'mal.
Et puis un peu de logique non plus hein :o

 

La condition sus cité, vérifie si l'un ou l'autre champ n'est pas vide. En toute logique on test si les deux ne sont pas vides.


Message édité par dwogsi le 26-02-2008 à 19:14:20

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1693014
med365
Posté le 26-02-2008 à 19:16:48  profilanswer
 

Son site semble un projet voué à accueillir des inscriptions de membres etc... Séparer les couches ce serait pas mal ;)
 

Citation :


La condition sus cité, vérifie si l'un ou l'autre champ n'est pas vide. En toute logique on test si les deux ne sont pas vides.


 
Un login foirera dès qu'un des deux champs est vide non ? :D

n°1693017
Profil sup​primé
Posté le 26-02-2008 à 19:19:53  answer
 

Excusez moi mais c'est ma première appli qui utilise MySql :|  

Citation :


Edit 2 : if(!empty($_POST['pseudo']) || !empty($_POST['password'])) cette condition vérifie que les champs ne sont pas vides non ? pourquoi ne pas plutot faire un test si les champs sont vides et retourner un message d'erreur dans le cas ou ?


Ok

Citation :


Non et puis c'est quoi ce test pour vérifier si le pseudo est déjà pris?! T'as jamais entendu parler de mysql_num_rows()?


Non.

n°1693019
dwogsi
Défaillance cérébrale...
Posté le 26-02-2008 à 19:23:24  profilanswer
 

med365 a écrit :

Son site semble un projet voué à accueillir des inscriptions de membres etc... Séparer les couches ce serait pas mal ;)
 

Citation :


La condition sus cité, vérifie si l'un ou l'autre champ n'est pas vide. En toute logique on test si les deux ne sont pas vides.


 
Un login foirera dès qu'un des deux champs est vide non ? :D


Si tu regardes bien, son code vérifie le pseudo et ajoute le compte si un des deux champs est rempli.
Ça veut dire que si seul le mot de passe est rempli ou va pouvoir créer un compte dont le pseudo est vide.
 
 
http://fr.php.net/mysql_num_rows
Une query style SELECT machin FROM truc WHERE pseudo = [pseudo-saisi]
Ensuite
if(mysql_num_rows($query)==0) on insert
else on gueule pseudo déjà pris


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1693027
Profil sup​primé
Posté le 26-02-2008 à 19:32:04  answer
 

Connexion MySQL (mysql.php)
http://www.miraclesalad.com/webtoo [...] ?clip=1111
Index (index.php) :
http://www.miraclesalad.com/webtoo [...] ?clip=1113
Connexion (connect.php)
http://www.miraclesalad.com/webtoo [...] ?clip=1112
Inscription (register.php)
http://www.miraclesalad.com/webtoo [...] ?clip=1114

Message cité 1 fois
Message édité par Profil supprimé le 27-02-2008 à 16:09:26
n°1693626
med365
Posté le 27-02-2008 à 14:53:31  profilanswer
 

Euh... Tu peux utiliser des trucs comme les clipboards en ligne pour poster des pages entières stp ?
Y en a une de bien : http://www.miraclesalad.com/webtools/clip.php
 
++

n°1693654
sircam
I Like Trains
Posté le 27-02-2008 à 15:17:20  profilanswer
 


Commence peut-être par réduire la portée en ne gardant que ce qui est nécessaire.
 
http://forum.hardware.fr/hfr/Progr [...] m#t1654270
 

Citation :

Il n'est pas rare que quelqu'un poste un "script" ou un "bout de code" de plusieurs centaines de lignes, en demandant à la communauté d'identifier ce qui ne va pas. Un tel pavé est rebutant et risque même de détourner des personnes motivées de votre problème.
(...)
Ce qui précède impliquera souvent un effort de votre part, parce qu'au lieu de poster le code qui pose problème, vous devriez poster le cas le simple pour reproduire votre problème.
 
Oui, cela demande du travail en plus pour vous, mais c'est une bonne chose pour ceux qui vous répondent, et c'est ce qui compte.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1693693
Profil sup​primé
Posté le 27-02-2008 à 16:10:55  answer
 


Je ne comprends pas pourquoi le système est lent... Pourtant d'habitude PHP est assez rapide sur mon site!
Voila ! (j'ai aussi édité mon post plus haut)


Message édité par Profil supprimé le 27-02-2008 à 16:19:57
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Injections SQL et htmlspecialchars() + sécurité de mon appli

 

Sujets relatifs
Erreur de sécurité avec URLLoaderD'une requête SQL au VBA
Fonction SQL tte simpleUtiliser une Calculatrice dans mon appli Winform
[SQL server] Transferer une base SQL sharepoint sur un nouveau serveur[SQL] Besoin d'aide pour un Update
Problème Requete SQL[Oracle SQL] problème de script Settings
PHP, SQL Server et la langue arabe[SQL Serveur] probleme requete avec calcul (tout bete)
Plus de sujets relatifs à : Injections SQL et htmlspecialchars() + sécurité de mon appli


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR