2009-07-08 11 views
2

Kann jemand den folgenden PHP Code erklären?Kann jemand den folgenden PHP Code erklären?

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); 
     } 
    } 

UPDATE

Es wird wie folgt verwendet:

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

Mit was genau haben Sie ein Problem? –

+0

Ich möchte wissen, was die obige Funktion tut? –

Antwort

4

Der Code erhält den Wert aus den get und post-Datenfeldern. Es entfernt auch Schrägstriche in PHP-Installationen, in denen magische Anführungszeichen aktiviert sind. Es sieht so aus, als ob die Funktion für die Rückwärtskompatibilität mit älteren Versionen von PHP ausgelegt ist. Ich würde dies nicht verwenden, außer Sie müssen ältere PHP-Versionen unterstützen.

Sie brauchen keine Änderungen vorzunehmen, für diese 5 in PHP zu arbeiten, aber ich würde nur Folgendes tun: Für Get Daten:

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

Für Post-Daten:

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

Sie sollten auch lesen Sie auf Magic Quotes, da es nicht bis PHP 5.3.0 veraltet war und Sie müssen sich darum sorgen.

kann
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); 
} 

Streifen allein gelassen werden:

Die aktualisierte Funktion auch geschrieben werden könnte.

+0

Wenn ich es für PHP 5.1+ ändern möchte, welche Änderungen muss ich machen? –

+0

Sie sollten nichts für PHP 5.1+ ändern müssen. – ceejayoz

+0

Entschuldigung, ich wollte wissen, wie man die Abwärtskompatibilität von 5.1 und darunter entfernt –

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

Dies gibt einen Parameterwert, mit einem bestimmten Typ, POST oder GET, welches ist optional. Der Wert wird von Schrägstrichen bereinigt.

function strip($value) 

Dies gibt den Parameter ohne Schrägstriche zurück.

Ich stimme den anderen Kommentaren zu, dass dieser Code vor 2003 geschrieben wurde, und sollte nicht verwendet werden, außer für die Unterstützung von altem Code.

+1

Sie können hinzufügen, dass der angegebene Typ optional ist. –

0

Es scheint, dass versucht wird, einen Wert aus der Abfragezeichenfolge basierend auf dem Namen des Parameters zu extrahieren. Es wird zuerst überprüft, ob die Variable $ _POST gültig ist, und falls nicht, überprüfen Sie die $ HTTP_POST_VARS. Wenn einer von ihnen gültig ist, wird der Wert mit dem Namen $ param_name zurückgegeben. Zum Beispiel, wenn $ param_name = "foo", wird es überprüfen $ _POST ["foo"].

2

Sieht aus wie ein wahnsinniger Weg, um sicherzustellen, dass Sie die richtigen GET/POST-Vars erhalten. Der größte Teil des Codes von get_param() scheint ein Weg zu sein, den Code Arbeit auf fast jeder PHP-Version zu machen, ist es, da die Legacy-Methoden verwenden, sollten Sie einen Blick auf die/PHP Manual about _GET _POST haben

+1

+1 für die "Wahnsinnigen". –

1

Der Code ist ein Funktion, die den Namen eines Parameters ($param_name) und den HTTP-Anforderungstyp in (GET oder POST) erwartet und dann die aktuellen ($_GET und $_POST) und veralteten ($HTTP_GET_VARS und $HTTP_POST_VARS) variablen Anforderungsfelder für einen passenden Wert durchsucht dieser Name. Bevor es zurückkehrt, versucht es, zusätzliche Schrägstriche aus dem gefundenen Wert zu entfernen.

So zum Beispiel, wenn ich diese HTTP-Anforderung übergeben:

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

lief dann die Funktion

get_param("key", "GET");

Es wäre "Wert" zurückzukehren.

+0

Danke, das hat wirklich geholfen –

Verwandte Themen