gpt4 book ai didi

php - 取消设置($_GET ['someVariable' ])不工作

转载 作者:行者123 更新时间:2023-11-30 12:57:03 26 4
gpt4 key购买 nike

我的网页“mywebpage.php”是通过“someotherpage.php”的“GET”到达的:

 // In someotherpage.php -- go to mywebpage.php and display the form:
window.location = "mywebpage.php?someVariable=" + theVariable;

我在“mywebpage.php”中处理如下:

 THIS IS THE 'GET' HANDLER for the form IN "mywebpage.php":
if(isset($_GET['someVariable']))
{
// set up form variables to initial values, then display the form
}

提交表单后,我重新输入相同的“mywebpage.php”来处理表单的 POST:

  THIS IS THE 'POST' HANDLER IN "mywebpage.php"
// okay the form was submitted, handle that here...
if(isset( $_POST['theformSubmitButton']))
{
// handle the form submit
}

问题是当用户提交表单时,GET 处理程序仍然被调用,因此表单被重新初始化。

原因是,当用户 POST 表单时,GET['someVariable'] 仍然存在,因此重新进入 GET 处理程序,然后处理 POST 处理程序代码,但此时 GET 处理程序重新 -初始化了让用户感到困惑的表单,因为他们刚刚完成了将表单的值从初始设置更改出来的操作。

换句话说,当表单被提交时,POST 数组被正确填充,但是 GET 数组仍然保留着它的旧变量,包括 'someVariable'

所以我在 GET 处理程序中添加了一个“未设置”调用:

 this is the MODIFIED 'GET' HANDLER in "mywebpage.php"
if(isset($_GET['someVariable']))
{
// set up form variables then display the form

// now clear out the 'someVariable' in the GET array so that
// when the user POST's the form, we don't re-enter here
unset($_GET['someVariable']));
}

这没用。发布表单后,我仍然看到调用了上面的 GET 处理程序。

我需要确保在提交表单时不会重新调用 GET 处理程序——为什么上面的“unset()”代码不起作用?

编辑:这是表格,不是所有重要部分(我遗漏了很多输入、几个 img 标签等,仅此而已):

 <form enctype="multipart/form-data" action="#" style="display: inline-block"
method="post" name="myForm" id="myFormId">

<textarea name="InitialText" id="theText" rows="4" cols="68"
style="border: none; border-style: none"></textarea>
<br />
<label style="font-weight: bold; font-style: italic">For more info provide an email addres:</label>
<input type="text" id="emailField" name="emailFieldName" value="you@gmail.com" />
<input type="submit" id="theformSubmitButton" name="theformSubmitButton" value="Post Now">
</form>

最佳答案

GET 请求和 $_GET 变量在两个不同的层上。

当您的用户被定向到 mywebpage.php 时,就会有数据通过 get 传递。到目前为止没问题,但是该数据仍在用户当前的 URL 中。您可以通过查看地址栏看到这一点。地址末尾会有一个?someParameter=someValue

unset 函数只在您的服务器上有效,并且只对您的脚本执行一次。它不会从用户浏览器的 URL 中删除 GET 信息。

当您通过 HTML 表单提交数据时,您将用户重定向到相同的 url,其中包括 GET 数据,该数据仍然存在,但正在再次重新提交.

尝试设置:

<form action="mywebpage.php" method="post">

这将为您的 html 表单设置一个自定义目标,它会删除 GET 信息。

关于php - 取消设置($_GET ['someVariable' ])不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18687873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com