w3schools没有在PHP中解释这个可以有人向我解释一下吗?

时间:2014-01-31 16:10:42

标签: php html

嘿伙计们我现在正在学习PHP,实际上w3schools没有列出这些东西的目的是什么。对不起,我也不熟悉名字和意图,所以希望有人可以和我一起过去。我搜索了youtube视频,但他们通常不会用正确的名称来调用它。他们只是在这里说“放置”帖子,因为它需要调用HTML中的内容“但是什么是$ _POST?变量?

        <form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
            <!-- The $_SERVER["PHP_SELF"] is a super global variable that returns the filename of the currently executing script.'
            So, the $_SERVER["PHP_SELF"] sends the submitted form data to the page itself,
            instead of jumping to a different page. This way, the user will get error messages on the same page as the form.-->
            Name: <input type="text" name="name"> <br>
            E-mail: <input type="text" name="email"> <br>
            Website: <input type="text" name="website"> <br>

            <input type="submit" value="send!"> 
        </form>
        <?php
//        $name = $email = $website = "";

        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            echo ($_POST["name"]);
            echo ($_POST["email"]);
            echo ($_POST['website']);
        }

//        function test_input($data) {
//            $data = trim($data);
//            $data = stripslashes($data);
//            $data = htmlspecialchars($data);
//        }
        ?>

在底部想知道什么是修剪,striplashes,以及为什么它正在调用或无论它在做什么“htmlspecialchars”如果它位于动作“”&gt;线?

7 个答案:

答案 0 :(得分:5)

$_POST是一个保留的“超全球”变量,意思是:

  1. 由服务器自动创建
  2. 随处可用。
  3. 它自动包含使用HTTP POST请求发送到服务器的所有数据。从技术上讲,它是(from the manual):

      

    通过HTTP POST方法传递给当前脚本的关联变量数组。

    因此,如果您的表单中包含nameemail个输入字段,则$_POST是一个包含名为nameemail的键的数组,其中包含用户提交的数据。您可以分别使用$_POST['name']$_POST['email']访问这些内容。

    还有其他几个超全局变量,即:

    • $GLOBALS
    • $_SERVER
    • $_GET
    • $_POST
    • $_FILES
    • $_COOKIE
    • $_SESSION
    • $_REQUEST
    • $_ENV

    您可以通过阅读the manual entry on $_POSTthe manual entry on superglobal variables了解更多相关信息。

    回答您的其他问题:

    trim()从字符串的开头和结尾删除空格(如空格,制表符和换行符)。例如,trim(' foo ')只生成foo而没有空格。您也可以删除其他字符。假设你有xxxfooxxxtrim('xxxfooxxx', 'x')会带走x,只留下foo

    stripslashes()从已转义字符的字符串中删除斜杠。例如(来自手册):

    $str = "Is your name O\'reilly?";
    
    // Outputs: Is your name O'reilly?
    echo stripslashes($str);
    

    htmlspecialchars()将特殊字符转换为HTML“实体”。具体来说,它改变了以下内容:

    • &(&符号)变为&amp;
    • "(双引号)在&quot;未设置时变为ENT_NOQUOTES
    • '(单引号)仅在设置&#039;时变为&apos;(或ENT_QUOTES)。
    • <(小于)变为&lt;
    • >(大于)变为&gt;

答案 1 :(得分:3)

$_POST"superglobal"系列的一部分。


我引用手册:

  

Superglobals是内置变量,总是可用   作用域。

     

PHP中的几个预定义变量是“superglobals”,这意味着   它们在整个脚本的所有范围内都可用。没有必要   做global $variable;在函数或方法中访问它们。

     

这些超全球变量是:

     
      
  • $GLOBALS
  •   
  • $_SERVER
  •   
  • $_GET
  •   
  • $_POST
  •   
  • $_FILES
  •   
  • $_COOKIE
  •   
  • $_SESSION
  •   
  • $_REQUEST
  •   
  • $_ENV
  •   

然后在PHP处理程序中,将以这种方式访问​​表单的元素:

一个基本示例:

<?php
$name = $_POST['name']; // taken from <input type="text" name="name">
echo $name;             // would echo the entered name from the form.

需要记住的重要事项:

使用超全球时,必须为大写字母。

例如,

$_post$_Post被视为无效。使用$_POST&lt; 完全喜欢这样等。

有些人犯了这样的错误,如果不使用正确的语法(大写),则无法正常工作。

,例如,_和超全球名称$之间的下划线POST也是必需的。 $POST&lt; 无效。再次使用$_POST - $_GET - $_REQUEST


  

关于某些功能和预定义变量

  1. trim()
    • 从字符串的开头和结尾开始删除空格(或其他字符)
  2. stripslashes()
    • 取消引用带引号的字符串
  3. htmlspecialchars()
    • 将特殊字符转换为HTML实体
  4. $_SERVER["PHP_SELF"]
    • 从原始脚本的相同位置执行。使用action=""可以完成同样的工作。
  5. $_SERVER["REQUEST_METHOD"]
    • 使用了哪种请求方法来访问页面;即'GET','HEAD','POST','PUT'

  6.   

    最终/潜在的数据库工作

    如果您以后想要在databases中冒险,可以使用mysqli_*作为示例,如下所示使用这些变量:

    <?php
    // DB connection credentials
    $name = mysqli_real_escape_string($con,$_POST['name']);
    // rest of DB query
    //
    

    $con具有以下效果:

    $con = new mysqli("host","username", "password", "database");
    

答案 2 :(得分:2)

$_POST[]是PHP之一Superglobals

从PHP手册:

  

Superglobals是内置变量,在所有范围内始终可用

这些是:

  • $ _ SERVER - 包含有关服务器和服务器的信息。执行环境
  • $ _ GET - 包含HTTP GET变量
  • $ _ POST - 包含HTTP POST变量
  • $ _ FILES - 包含HTTP文件上载变量
  • $ _ COOKIE - 包含HTTP Cookie
  • $ _ SESSION - 包含会话变量
  • $ _ REQUEST - 包含HTTP请求变量
  • $ _ ENV - 包含环境变量

它们包含有关运行PHP的环境的信息以及传递给脚本的信息等。

答案 3 :(得分:2)

正如其他人所说,$_POSTsuper global variable

关于您的其他问题,最好转到php.net并专门搜索功能名称。

答案 4 :(得分:1)

所以,$_POST已被其他答案所涵盖。

trimstripslasheshtmlspecialchars用于格式化字符串,而这3个字符串相当基本,您可能经常使用它们。

trim会切断前导和尾随空格,以便生成的字符串以实际可见字符开头和结尾。这通常用于清理用户提交的数据并删除不真正包含任何信息的部分。它也可以用于一些棘手的格式化并结合连接(.)。

stripslashes撤消addslashes功能。后者对于清理用户输入的数据非常重要,并且在避免注入式攻击方面迈出了一大步,用户以一种使服务器实际执行它的方式输入可执行代码。通常情况下,您不希望以“安全”形式输出数据,因为它看起来很奇怪,因此您只需在创建输出之前调用stripslashes,以便将字符串恢复为其原始形式。

htmlspecialchars是创建包含html使用或保留的某些字符的html输出所必需的,例如<&。由于PHP通常会创建html代码,因此这些字符的传输方式会使html理解它们,就像您使用它们编写源文件一样。但有时候,你只想展示角色(“罗密欧与朱丽叶”)。在这些情况下,您需要htmlspecialchars将您的字符串转换为“干净”字符串,该字符串将在用户屏幕上显示其在脚本中显示的方式(减去引号)。

答案 5 :(得分:0)

这是我的新手解释:

$ _ POST是客户端发送到服务器的所有POST数据的数组

要查看它,请使用:

var_dump($_POST);

您还可以使用

查看GET数据
var_dump($_GET);

最后一切(包括cookies):

var_dump($_REQUEST);

Want to use both GET and POST methods

答案 6 :(得分:0)

假设你有一张表格:

 <form method="POST">
    <label>Username: <input type="text" name="username" ></label><br>
    <label>Password: <input type="password" name="password" ></label><br>
    <input type="submit">
</form>

这里有两个重要的事情:

  • 每个输入(文本输入类型,而不是底部的提交按钮)都有名称
  • 表单有一个属性'method',表示“POST”

如果您提交此表单,浏览器将使用POST方法将数据作为关联数组发送到Web服务器。然后将此数组传递给此PHP变量:$_POST(这是超级全局变量之一,如果您想了解更多,请查看它。)
在PHP中,您可以使用输入的内容如下:

echo "The username you entered is: ".$_POST["username"];

显然,您可以使用$ _POST [“password”]执行相同操作 现在还有GET方法。表格看起来像这样:

<form method="GET">
    <label>Username: <input type="text" name="username" ></label><br>
    <label>Password: <input type="password" name="password" ></label><br>
    <input type="submit">
</form>

唯一改变的是表单的'method'属性。现在,当您提交此内容时,使用POST方法会有两个不同之处:

  • 您发送的数据将在以下格式的网址中显示:website.com * ?username = jack&amp; password = ilikepotatoes *(表示开始数据)
  • 数据将以相同的形式提供给PHP,但名称不同: $ _ GET 而不是$ _POST

所以在PHP中,你可以这样访问这些数据:

echo "The username you entered is: ".$_GET["username"];

您使用哪一个,取决于您,但对于登录表单等内容,最好使用POST方法,因为这不会像GET方法那样显示网址中的数据。