Besoin de validation (php)

Bonjour,

Je suis actuellement loin de chez moi et j'ai eu une idée (-_-) ...

Je me suis donc procuré un pc pour rédiger ce petit code sous bloc-note.

Y aurait il quelqu'un qui puisse regarder s'il fonctionne ? J'ai vraiment envie de savoir (pauvre geek qui est en moi).

/**********************************************************/

Effectue une requete SELECT à N-nom de colonne dans une base de donnée deja ouverte

/**********************************************************/

<?php 
function Select_Mysql() 
{ 
/*récupération du nom des valeurs à récupérer (les n-2 premieres valeurs) + nom de la table (avant derniere valeur) + argument de connection(con)(derniere valeur)*/ 
$arguments = func_get_args(); 
$nb = sizeof($arguments); 

/*recupération des noms de colonnes*/ 
/*creation de la requete*/ 
$requete = "SELECT";  
if($nb>2) 
{ 
for($i=0;$i <=$nb-2;$i++) 
{ 

$requete.= $arguments[$i]; 


} 
} 

$requete.= "FROM $arguments[$nb-1]"; 



/* Envoie d'une requête */ 
mysql_query($requete, $argument[$nb]); 
} 

?>


Bonne vacance a tous sous ce beau soleil.

2 réponses

  1. Bonjour

    Je n'ai pas essayé, mais à vue d'oeil, comme ça :
    - ça manque d'espaces un peu partout, entre autres après SELECT et avant FROM
    - ça manque de virgules entre les paramètres.
    - c'est bien joli de faire un SELECT, mais tu fais quoi du résultat ?
    - ça dépend des contrôles que tu fais avant, mais c'est une jolie porte ouverte aux injections SQL.

    Laisse le pauvre geek qui est en toi bronzer tranquillement, il arrivera bien à survivre quelque temps sans informatique.
    1. Merci pour ta réponse
      Effectivement niveau securité c'est pas top va falloir blinder

      Peut etre est ce mieux ?

      <?php 
      function Select_Mysql() 
      { 
      /*récupération du nom des valeurs à récupérer (les n-2 premieres valeurs) + nom de la table (avant derniere valeur) + argument de connection(con)(derniere valeur)*/ 
      $arguments = func_get_args(); 
      $nb = sizeof($arguments); 
      
      /*recupération des noms de colonnes*/ 
      /*creation de la requete*/ 
      $requete = "SELECT "; 
      /*creation de la validation des noms colonnes*/ 
      $tab = "array( "; 
      
      
      if($nb>2) 
      { 
      for($i=0;$i <=$nb-2;$i++) 
      { 
      $tab .= $arguments[$i]; 
      $requete.= $arguments[$i].", "; 
      
      
      } 
      } 
      $tab .= ");"; 
      $requete.= " FROM $arguments[$nb-1]"; 
      
      
      /*securite nom de colonne*/ 
      $valide=0; 
      
      $rows = mysql_query("describe $arguments[$nb-1]"); 
      while ($row = mysql_fetch_assoc($rows)) 
      { 
       for($i=0;$i<=$nb-2) 
       { 
        if(in_array($arguments[$i], $rows) || $arguments[$i] == "*")  
        { 
        $valid ++; 
        } 
       } 
      } 
      
      /*securite nom de table*/ 
      
      $sql = "SHOW TABLES"; 
      $rows = mysql_query($sql); 
      while ($row = mysql_fetch_assoc($rows)) 
      { 
      
       if(in_array($arguments[$nb-1], $rows)) && $valid == $nb-2)  
       { 
       /* Envoie d'une requête */ 
       mysql_query($requete, $argument[$nb]); 
       }   
      
      } 
      
      
      } 
      
      ?>