如何通过链接传递POST变量到自己的页面?

Bij*_*ufi 5 php post hyperlink

嗨,我想通过链接到自己的页面获得变量$ _POST.示例:

<?PHP
$var = 'PIG';
echo "<a href='test.php?var=$var'>link</a>";

if (isset($_POST['var']))
{
echo $_POST['var']);
}


?>
Run Code Online (Sandbox Code Playgroud)

它链接到自己的页面.(test.php)它不起作用,谁可以帮助我.谢谢

Yan*_*hon 5

链接不能POST数据,只能GET

与仅向服务器发送 URL 和标头的 GET 请求方法相比,POST 请求还包括消息正文。这允许将任何类型的任意长度数据发送到服务器。

基本上,aPOST需要两个请求,1) 服务器收到“正常”请求,带有一个额外的标头值,表明需要发送更多数据。此时,服务器发送确认,2) 客户端发送POST正文。仅通过链接无法实现此行为。

但是,对此有一些解决方案,并且我已经看到了一些技术,其中包括输出form带有自动提交的 a,例如

<form name="frm" method="post" action="http://your.domain.com/path/to/page.php?param1=1&param2=2">
<input type="hidden" name="foo" value="bar" />
</form>
<script type="text/javascript">
    document.forms["frm"].submit();
</script>
Run Code Online (Sandbox Code Playgroud)

这将导致page.php使用这些参数进行调用

$_GET = array('param1' => '1', 'param2' => '2');
$_POST = array('foo' => 'bar');
Run Code Online (Sandbox Code Playgroud)

请注意,这是一个简单的“重定向”方法,但您可以创建<a>元素来实际触发一些类似的隐藏表单,而不是使用标准链接。(未经测试的代码)

<a href="http://your.domain.com/path/to/page.php?param1=1&param2=2" onclick="return dopost(this.href, {foo:'bar'});">A simple link</a>
<script type="text/javascript">
   function dopost(url, params) {
       var pe = '';
       for (var param : params) {
           pe += '<input type="hidden" name="'+param+'" value="'+params[param]+'" />';
       }
       var frmName = "frm" + new Date().getTime();
       var form = '<form name="'+frmName+'" method="post" action="'+url'">'+pe+'</form>';
       var wrapper = document.createElement("div");
       wrapper.innerHTML = form;
       document.body.appendChild(wrapper);
       document.forms[frmName].submit();
   }
</script>
Run Code Online (Sandbox Code Playgroud)

实际上,这可能就是您所需要的。


Ign*_*ams 1

查询字符串中的项目可通过 获得$_GET而不是 获得 $_POST,因为它们实际上并未发布。如果您想要 POST,则必须使用带有methodof的表单post,或者必须执行 XHR 作为 POST。