【发布时间】:2014-03-14 14:18:29
【问题描述】:
这更像是一个“理解”问题,而不是一个具体的例子。我来自 Python/R/科学计算背景,我通常在其中编译东西或通过解释器进行通信。但是一切通常都在机器上,因此服务器/客户端之间没有“通信”。
我现在正在尝试学习 PHP(希望让用户从 Web 界面运行我的脚本)并且很好奇 POST 期间会发生什么。
考虑以下脚本:
<!DOCTYPE html>
<html>
<head>
<title>Form Testing</title>
<meta charset="utf-8"/>
</head>
<body>
<?php
if($_POST['formSubmit'] == "Submit") {
echo "Post Status is: ".$_POST['formSubmit']."\n";
$varMovie = $_GET['formMovie'];
echo "Your Favorite Movie Was: ".$varMovie;
}else{
echo "Post Status is: ".$_GET['formSubmit'] ."\n";
}
?>
<form action="index.php" method="post">
Which is your favorite movie?
<input type="text" name="formMovie" maxlength="50">
<input type="submit" name="formSubmit" value="Submit">
</form>
</body>
</html>
我知道提交按钮将相当于 python 字典(关联数组?)发送到下一页。然后命令 $_POST['formSubmit'] 提取值。
但是当我点击提交按钮和页面加载之间的值在哪里。换句话说,在 sumbit 按钮之后,实际发生了什么?显然,页面必须在某处创建这个关联数组并以某种方式传递它,但我不确定它是如何做到的。
get 的想法似乎更清晰。附加了 URL,以便 PHP 引擎可以读取 URL 字符串并找到所有变量的值(我假设会发生这种情况)?
感谢您的帮助!
【问题讨论】:
-
简而言之,Apache(或其他)从 http 请求中为您填充它。您可以使用任何流量记录程序(包括 Chrome 的开发工具)观察该 http 请求。
-
您正在使用 POST 方法,但尝试使用
$_GET读取它,请将其更改为$_POST。是的,它确实创建了一个关联数组到$_GET或$_POST,具体取决于您的 URL 和表单方法的方式。 -
@Prix 如果他的表单方法设置为
GET,他的代码可以正常工作 -
@AnidMonsur 并不是表单提交会失败
-
这是一个相关问题,其中包含有关如何提交 $_POST 参数的答案。 stackoverflow.com/questions/4007969/…