嘿伙计们我现在正在学习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;线?
答案 0 :(得分:5)
$_POST
是一个保留的“超全球”变量,意思是:
它自动包含使用HTTP POST请求发送到服务器的所有数据。从技术上讲,它是(from the manual):
通过HTTP POST方法传递给当前脚本的关联变量数组。
因此,如果您的表单中包含name
和email
个输入字段,则$_POST
是一个包含名为name
和email
的键的数组,其中包含用户提交的数据。您可以分别使用$_POST['name']
和$_POST['email']
访问这些内容。
还有其他几个超全局变量,即:
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
您可以通过阅读the manual entry on $_POST
或the manual entry on superglobal variables了解更多相关信息。
回答您的其他问题:
trim()
从字符串的开头和结尾删除空格(如空格,制表符和换行符)。例如,trim(' foo ')
只生成foo
而没有空格。您也可以删除其他字符。假设你有xxxfooxxx
。 trim('xxxfooxxx', 'x')
会带走x
,只留下foo
。
stripslashes()
从已转义字符的字符串中删除斜杠。例如(来自手册):
$str = "Is your name O\'reilly?";
// Outputs: Is your name O'reilly?
echo stripslashes($str);
htmlspecialchars()
将特殊字符转换为HTML“实体”。具体来说,它改变了以下内容:
&
(&符号)变为&
"
(双引号)在"
未设置时变为ENT_NOQUOTES
。'
(单引号)仅在设置'
时变为'
(或ENT_QUOTES
)。<
(小于)变为<
>
(大于)变为>
答案 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
等
关于某些功能和预定义变量
trim()
stripslashes()
htmlspecialchars()
$_SERVER["PHP_SELF"]
action=""
可以完成同样的工作。$_SERVER["REQUEST_METHOD"]
最终/潜在的数据库工作
如果您以后想要在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是内置变量,在所有范围内始终可用
这些是:
它们包含有关运行PHP的环境的信息以及传递给脚本的信息等。
答案 3 :(得分:2)
正如其他人所说,$_POST
是super global variable。
关于您的其他问题,最好转到php.net并专门搜索功能名称。
答案 4 :(得分:1)
所以,$_POST
已被其他答案所涵盖。
trim
,stripslashes
和htmlspecialchars
用于格式化字符串,而这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);
答案 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>
这里有两个重要的事情:
如果您提交此表单,浏览器将使用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方法会有两个不同之处:
所以在PHP中,你可以这样访问这些数据:
echo "The username you entered is: ".$_GET["username"];
您使用哪一个,取决于您,但对于登录表单等内容,最好使用POST方法,因为这不会像GET方法那样显示网址中的数据。