Heim >Backend-Entwicklung >PHP-Problem >Welche Möglichkeiten gibt es, externe Parameter in PHP zu empfangen?

Welche Möglichkeiten gibt es, externe Parameter in PHP zu empfangen?

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-06-09 17:17:212203Durchsuche

In diesem Artikel erfahren Sie, wie Sie externe Parameter in PHP empfangen. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Welche Möglichkeiten gibt es, externe Parameter in PHP zu empfangen?

Für eine Websprache wie PHP ist der Empfang von Parametern eine sehr wichtige Fähigkeit. Schließlich müssen die vom Front-End-Formular oder der asynchronen Anforderung übergebenen Daten für die normale interaktive Anzeige abgerufen werden. Dies ist natürlich auch eine wesentliche Fähigkeit für alle Sprachen, die zur Webentwicklung geeignet sind. Heute werfen wir einen Blick auf die verschiedenen Parameterzugriffsformen in PHP.

Zuerst müssen wir eine statische Seite wie die folgende vorbereiten, die ein Formular und einen GET-Parameter in der URL bereitstellt:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="?show=1" method="post">
        姓名:<input type="text" name="name"/><br />
        电话:<input type="text" name="tel"/><br/>

        地址(省):<input type="text" name="address.prov"/><br/>
        地址(市):<input type="text" name="address city"/><br/>

        兴趣1:<input type="text" name="interest[]"/><br/>
        兴趣2:<input type="text" name="interest[]"/><br/>
        兴趣3:<input type="text" name="interest[]"/><br/>

        学历1:<input type="text" name="edu[one]"/><br/>
        学历2:<input type="text" name="edu[two]"/><br/>

        <input type="submit" value="提交" >
    </form>
</body>
</html>

Normale $_GET- und $_POST-Methoden

// 正常的GET、POST
    echo $_GET[&#39;show&#39;], &#39;<br/>&#39;; // 1
    echo $_POST[&#39;name&#39;], &#39;<br/>&#39;; // 提交的内容

Dies ist das einfachste und direkte Art und Weise, Parameter zu erhalten, werden über $_GET abgerufen, und POST-Parameter werden über $_POST abgerufen. Sie stören sich nicht.

Die normale $_REQUEST-Methode

    // 使用REQUEST
    echo $_REQUEST[&#39;show&#39;], &#39;<br/>&#39;; // 1
    echo $_REQUEST[&#39;tel&#39;], &#39;<br/>&#39;; // 提交的内容

$_REQUEST besteht darin, alle Parameter in der Anfrage abzurufen, mit Ausnahme der hochgeladenen Dateien. Mit anderen Worten: Es enthält alle Inhalte der drei Parametervariablen $_GET, $_POST und $_COOKIE (Konfiguration erforderlich, nicht standardmäßig enthalten). Hierbei ist zu beachten, dass nach PHP5.3 der von $_REQUEST akzeptierte Parametervariableninhalt durch request_order in der php.ini-Datei angegeben wird. Standardmäßig ist der Wert dieses Konfigurationsparameters GP, also GET und POST. und es gibt kein COOKIE. Ich denke, wenn Sie COOKIE möchten, müssen Sie es ändern und ein C hinzufügen.

Was passiert, wenn in $_GET und $_POST Inhalte mit demselben Namen vorhanden sind? Die Reihenfolge, in der $_REQUEST angezeigt wird, basiert auch auf der Reihenfolge der Konfigurationsparameter, von links nach rechts, wobei letztere die vorherigen abdecken. Wenn Sie beispielsweise GP konfigurieren, ist die Reihenfolge der Parameterabdeckung: POST > GET, und die endgültige Anzeige erfolgt im POST-Inhalt.

register_globals-Problem

    // register_globals 如果打开
    echo $name, &#39;<br/>&#39;; // 提交的内容
    echo $tel, &#39;<br/>&#39;; // 提交的内容

Dies ist eine unsichere Konfiguration und wird auch in der Datei php.ini konfiguriert. Seine Funktion besteht darin, die angeforderten Parameter direkt in Variablen umzuwandeln. Es besteht das Problem der globalen Variablenkontamination. Öffnen Sie sie daher nicht! ! ! Die aktuelle php.ini-Datei ist grundsätzlich standardmäßig deaktiviert.

import_request_variables

    // import_request_variables 抱歉,5.4之后已经取消了
    import_request_variables(&#39;pg&#39;, &#39;pg_&#39;);
    echo $pg_show, &#39;<br/>&#39;;
    echo $pg_name, &#39;<br/>&#39;;

Diese Funktion registriert den Inhalt der angegebenen Parametervariablen auch nach 5.4. Lassen Sie uns verstehen, was zuvor passiert ist Tun.

extract

    extract($_POST, EXTR_PREFIX_ALL, &#39;ex&#39;);
    echo $ex_name, &#39;<br/>&#39;; // 提交的内容
    echo $ex_tel, &#39;<br/>&#39;; // 提交的内容

extract wird derzeit als Methode unterstützt, die die beiden oben genannten Parametertransformationen ersetzen kann. Es liegt an uns, das Überschreiben vorhandener Variablen zu kontrollieren. Dies ist der zweite Parameter. Dadurch kann das Problem der Kontamination globaler Variablen in einer kontrollierbaren Umgebung erheblich vermieden werden. Voraussetzung ist natürlich, dass wir sie selbst verwenden. Insbesondere können Sie die Dokumentreferenz selbst finden!

. und Leerzeichen in Parameternamen

    // 参数名中的.和空格
    echo $_REQUEST[&#39;address_prov&#39;], &#39;<br/>&#39;; // 提交的内容
    echo $_REQUEST[&#39;address_city&#39;], &#39;<br/>&#39;; // 提交的内容

Wenn der Name der vom Formular übermittelten Eingabe oder Leerzeichen enthält, wird er direkt in Unterstriche umgewandelt. Wir raten jedoch von der Verwendung von . oder Leerzeichen bei der Benennung des Frontends ab. Verwenden Sie bei Bedarf einfach Unterstriche.

Das [] im Parameternamen

    // 参数名中的[]
    print_r($_REQUEST[&#39;interest&#39;]); // Array (v,....) 
    echo &#39;<br />&#39;;
    print_r($_REQUEST[&#39;edu&#39;]); // Array (k/v,....)

Wenn der Name der vom Formular übermittelten Eingabe in Form eines Arrays vorliegt, also in der Form „interest[]“ oder „edu[one] ", die Parameter, die wir standardmäßig erhalten, werden zu einem Array von Inhalten.

Die erweiterte php://-Eingabe

    // php://input
    $content = file_get_contents(&#39;php://input&#39;);   
    print_r($content); //name=xxx&.....

Schließlich wird die php://-Eingabeform des Parameters häufig in der Schnittstellenentwicklung verwendet. Wenn viele Sicherheits- oder Parameterfelder vorhanden sind, überträgt das Frontend im Allgemeinen direkt einen ganzen Abschnitt des Body-Inhalts in Form von Body Raw. Derzeit kann es nur in dieser Form abgerufen werden. Der ursprüngliche Inhalt dieses Body Raw besteht normalerweise aus einem ganzen Textabschnitt oder es kann sich um einen verschlüsselten Inhalt handeln. Das Format kann von Ihnen selbst definiert werden. Bei einem normalen Formular erhalten wir den ursprünglichen Formularinhalt, genau wie der Name=xxx&tel=xxx&.... oben.

Es ist zu beachten, dass bei Verwendung von enctype="multipart/form-data" der Inhalt nicht abgerufen werden kann. Gleichzeitig ersetzt diese Methode auch die globale Variable $HTTP_RAW_POST_DATA. Verwenden Sie nicht mehr die neue Version von PHP, um die neuen Syntaxfunktionen zu nutzen.

Zusammenfassung

Nachdem ich es geklärt hatte, stellte ich fest, dass eine einfache Parameterverbindung so viele Formen und Dinge hat, die Aufmerksamkeit erfordern, was wirklich aufschlussreich ist. Es ist immer noch das gleiche Sprichwort: Das Lernen hat kein Ende. Wenn Sie weiter gründlich lernen, werden Sie früher oder später ein Meister!

Testcode:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202002/source/%E5%8F%98%E7%9D%80%E8%8A%B1%E6%A0%B7%E6%9D%A5%E6%8E%A5%E5%8F%82%EF%BC%8CPHP%E4%B8%AD%E6%8E%A5%E6%94%B6%E5%A4%96%E9%83%A8%E5%8F%82%E6%95%B0%E7%9A%84%E6%96%B9%E5%BC%8F.php

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, externe Parameter in PHP zu empfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen