Javascript 将表单提交到php脚本并返回
我有一个联系人表单,它最初调用一个javascript函数来验证内容。如果此函数返回true,则将数据发布到php文件 在本文件末尾,我想返回到联系人页面,目前我正在使用:Javascript 将表单提交到php脚本并返回,javascript,php,jquery,html,contact-form,Javascript,Php,Jquery,Html,Contact Form,我有一个联系人表单,它最初调用一个javascript函数来验证内容。如果此函数返回true,则将数据发布到php文件 在本文件末尾,我想返回到联系人页面,目前我正在使用: header('Location: ' . $_SERVER['HTTP_REFERER']); 有更好的办法吗 我还想更改联系人页面上某个元素的css,以便在我返回时显示(一条感谢消息),这可能吗?我可以在初始javascript函数中使用jQuery将其设置为显示,但当它转到php文件时,它就会消失 谢谢让表单将数据提
header('Location: ' . $_SERVER['HTTP_REFERER']);
有更好的办法吗
我还想更改联系人页面上某个元素的css,以便在我返回时显示(一条感谢消息),这可能吗?我可以在初始javascript函数中使用jQuery将其设置为显示,但当它转到php文件时,它就会消失
谢谢让表单将数据提交到联系人表单的同一页。
然后从PHP脚本检查表单是否已提交,执行处理代码并返回一个div和感谢信息。使表单将数据提交到联系人表单的同一页。
然后从PHP脚本检查表单是否已提交,执行处理代码并返回一个div和感谢信息。说联系人页面的名称是
index.PHP
。您可以使用正确的操作设置表单(尽管默认情况下应该是这样),然后在标题中签入提交参数。代码如下
<?php
if (array_key_exists("submit_btn",$_REQUEST) {
//display a thank you
}
?>
<!-- more code here-->
<form action="index.php">
<input name="whatever" type="text">
<input type="submit" name="submit_btn">
</form>
说你的联系人页面名是index.php
。您可以使用正确的操作设置表单(尽管默认情况下应该是这样),然后在标题中签入提交参数。代码如下
<?php
if (array_key_exists("submit_btn",$_REQUEST) {
//display a thank you
}
?>
<!-- more code here-->
<form action="index.php">
<input name="whatever" type="text">
<input type="submit" name="submit_btn">
</form>
Post to self然后您可以将Post之后的if语句处理为重定向。
您是否像您所说的那样使用标题重定向
所以,把它贴到你表单的动作部分
<form action="yourpage.php">
Post to self然后您可以将Post之后的if语句处理为重定向。
您是否像您所说的那样使用标题重定向
所以,把它贴到你表单的动作部分
<form action="yourpage.php">
HTTP_REFERER不是在PHP中实现历史记录-1的最佳解决方案
如合同所述:
将用户代理引用到当前页面的页面(如果有)的地址。这是由用户代理设置的。并非所有的用户代理都会设置此功能,有些代理还提供了修改HTTP_REFERER的功能。简而言之,它确实不可信
最好的解决方案是在header函数中显式写入要返回的页面
对于第二个问题,可以使用查询参数重定向:
header('Location: script.php?valid=1');
然后在您的视图中进行测试:
if (isset($_GET['valid']) && $_GET['valid'] == '1') {
// display the message
}
HTTP_REFERER不是在PHP中实现历史记录-1的最佳解决方案
如合同所述:
将用户代理引用到当前页面的页面(如果有)的地址。这是由用户代理设置的。并非所有的用户代理都会设置此功能,有些代理还提供了修改HTTP_REFERER的功能。简而言之,它确实不可信
最好的解决方案是在header函数中显式写入要返回的页面
对于第二个问题,可以使用查询参数重定向:
header('Location: script.php?valid=1');
然后在您的视图中进行测试:
if (isset($_GET['valid']) && $_GET['valid'] == '1') {
// display the message
}
多亏了不同的人的回答,我终于找到了一些方法。谢谢大家
最简单的方法是使用以下标题重新指向联系人感谢页面:
header("Location: http://{$_SERVER['SERVER_NAME']}/contact-thankyou.html");
我改为使用服务器名,因为HTTP\U REFERER不是一个很好的解决方案
第二种解决方案,虽然有点难看,但确实起到了作用,就是返回到相同的页面,标题如下:
header("Location: http://{$_SERVER['SERVER_NAME']}/contact.html?submitted");
然后使用以下Javascript检测查询参数并更改css:
if (window.location.search.substring(1) == "submitted")
{
$("#message-sent").css({"display": "block"});
}
这不是一个很好的解决方案,因为我更喜欢使用php获取查询参数,但我只能在带有模板系统的页面上使用html和Javascript
谢谢大家。多亏了大家的回答,我终于找到了一些方法。谢谢大家
最简单的方法是使用以下标题重新指向联系人感谢页面:
header("Location: http://{$_SERVER['SERVER_NAME']}/contact-thankyou.html");
我改为使用服务器名,因为HTTP\U REFERER不是一个很好的解决方案
第二种解决方案,虽然有点难看,但确实起到了作用,就是返回到相同的页面,标题如下:
header("Location: http://{$_SERVER['SERVER_NAME']}/contact.html?submitted");
然后使用以下Javascript检测查询参数并更改css:
if (window.location.search.substring(1) == "submitted")
{
$("#message-sent").css({"display": "block"});
}
这不是一个很好的解决方案,因为我更喜欢使用php获取查询参数,但我只能在带有模板系统的页面上使用html和Javascript
谢谢大家。Javascript运行客户端,PHP运行服务器端。当您使用位置标记时,它会将您发送到一个新的PHP页面,实际上是重新加载联系人页面。这意味着在清除第一次页面加载后执行的任何客户端脚本,您将返回到原始页面加载状态。谢谢。我明白这一点,这就是为什么我希望有更好的方法来做到这一点。有什么想法吗?看看下面忍者马特的解决方案。他建议您每次都将表单提交给PHP,然后当您在PHP脚本中时,您可以验证并显示感谢,或者验证失败并显示错误信息,这样您就可以避免混乱的客户端处理问题。Javascript运行客户端,PHP运行服务器端。当您使用位置标记时,它会将您发送到一个新的PHP页面,实际上是重新加载联系人页面。这意味着在清除第一次页面加载后执行的任何客户端脚本,您将返回到原始页面加载状态。谢谢。我明白这一点,这就是为什么我希望有更好的方法来做到这一点。有什么想法吗?看看下面忍者马特的解决方案。他建议您每次都将表单提交给PHP,然后当您在PHP脚本中时,您可以验证并显示感谢,或者验证失败并显示错误信息,这样您就可以避免混乱的客户端处理问题。这种方法的优点是,您可以将Javascript验证移到c