2009-07-08 8 views
2

Quelqu'un peut-il expliquer le code PHP suivant?Quelqu'un peut-il expliquer le code PHP suivant?

function get_param($param_name, $param_type = 0) 
    { 
     global $HTTP_POST_VARS, $HTTP_GET_VARS; 

     $param_value = ""; 
     if (isset($_POST)) { 
      if (isset($_POST[$param_name]) && $param_type != GET) 
      $param_value = $_POST[$param_name]; 
      elseif (isset($_GET[$param_name]) && $param_type != POST) 
      $param_value = $_GET[$param_name]; 
     } else { 
      if (isset($HTTP_POST_VARS[$param_name]) && $param_type != GET) 
      $param_value = $HTTP_POST_VARS[$param_name]; 
      elseif (isset($HTTP_GET_VARS[$param_name]) && $param_type != POST) 
      $param_value = $HTTP_GET_VARS[$param_name]; 
     } 

     return strip($param_value); 
    } 

function strip($value) 
    { 
     if (get_magic_quotes_gpc() == 0) { 
      return $value; 
     } else { 
      return stripslashes($value); 
     } 
    } 

MISE À JOUR

Il est utilisé comme ceci:

$xml = get_param('xml'); 
+1

Qu'est-ce qui vous pose problème précisément? –

+0

Je veux savoir ce que fait la fonction ci-dessus? –

Répondre

4

Le code obtient la valeur des tableaux de données get et post. Il supprime également les barres obliques sur les installations php qui ont des guillemets magiques activés. On dirait que la fonction est faite pour la rétrocompatibilité avec une ancienne version de PHP. Je ne l'utiliserais pas à moins que vous ne deviez supporter des versions plus anciennes de PHP.

Vous n'avez pas besoin de faire des changements pour que cela fonctionne en PHP 5, mais je voudrais juste faire ce qui suit: Pour obtenir des données:

if(isset($_GET['param_name'])){ 
    // What ever you want to do with the value 
} 

Pour les données post:

if(isset($_POST['param_name'])){ 
    // What ever you want to do with the value 
} 

Vous devriez également lire sur Magic Quotes car il n'était pas obsolète jusqu'à PHP 5.3.0 et vous devrez peut-être vous en préoccuper.

La fonction mise à jour peut également être écrit comme:

function get_param($param_name, $param_type = 0) 
{ 

    $param_value = ""; 
    if (isset($_POST[$param_name]) && $param_type != GET){ 
     $param_value = $_POST[$param_name]; 
    } 
    elseif (isset($_GET[$param_name]) && $param_type != POST){ 
     $param_value = $_GET[$param_name]; 
    } 
    return strip($param_value); 
} 

Strip peut être laissé seul.

+0

Si je veux le changer pour PHP 5.1+, quels changements dois-je faire? –

+0

Vous ne devriez pas avoir besoin de changer quoi que ce soit pour PHP 5.1+. – ceejayoz

+0

Désolé, je voulais savoir comment supprimer la rétrocompatibilité de 5.1 et ci-dessous –

2
function get_param($param_name, $param_type = 0) 

Ce retourne une valeur de paramètre, avec un type donné, POST ou GET, qui est facultatif. La valeur est dépouillée de barres obliques.

function strip($value) 

Ceci renvoie le paramètre sans barres obliques. Je suis d'accord avec les autres commentaires que ce code a été écrit avant 2003, et ne doit pas être utilisé, sauf pour soutenir l'ancien code.

+1

Vous pouvez ajouter que le type donné est facultatif. –

0

Il semble que l'on essaie d'extraire une valeur de la chaîne de requête en fonction du nom du paramètre. Il vérifie d'abord si la variable $ _POST est valide et, dans le cas contraire, vérifie le $ HTTP_POST_VARS. Si l'un d'entre eux est valide, il renverra la valeur avec le nom de $ param_name. Par exemple, si $ param_name = "foo", il vérifie $ _POST ["foo"].

2

Cela ressemble à une manière insensée de s'assurer que vous obtenez les bonnes variables GET/POST. La plupart du code de get_param() semble être un moyen de faire le travail de code sur presque toutes les versions de php, car il utilise les méthodes existantes, vous devriez jeter un oeil à la PHP Manual about _GET/_POST

+1

+1 pour les "fous". –

1

Le code est fonction qui prend le nom d'un paramètre ($param_name) et le type de requête HTTP attendu (GET ou POST), puis examine les tableaux de variables de demande actuels ($_GET et $_POST) et obsolètes ($HTTP_GET_VARS et $HTTP_POST_VARS) pour une correspondance des valeurs ce nom. Avant de revenir, il essaie de supprimer les barres obliques supplémentaires de la valeur trouvée.

Ainsi, par exemple, si je réussissais cette requête HTTP:

http://www.example.com/explain_function.php?key=value

puis a couru la fonction

get_param("key", "GET");

Il retournerait "valeur".

+0

Merci, cela m'a vraiment aidé –

Questions connexes