在同一页面按顺序执行更多提交
Posted
技术标签:
【中文标题】在同一页面按顺序执行更多提交【英文标题】:Execute more submit in sequence in same page 【发布时间】:2018-04-25 06:10:28 【问题描述】:我有那个代码,它工作正常!
session_start();
if(isset($_POST['submit1']))
$_SESSION['submit1']=true;
if(@$_POST['user_token'] && @$_SESSION['submit1'])
if($_SESSION['user_token'] == $_POST['user_token'])
if (isset($_POST['submit3']))
unset($_SESSION['user_token']);
$_SESSION['submit1']=false;
include_once('./my3page.php');
include_once('./searchname.php');
else
header("location: ./index.php");
else
include_once('./token.php');
include_once('./searchform.php');
现在我想添加其他提交会话(因为我有 2 种搜索类型)
我尝试了什么
index.php
session_start();
//---------------FIRST SEARCH TYPE--------------------------------
if(isset($_POST['submit1']))
$_SESSION['submit1']=true;
if(@$_POST['user_token'] && @$_SESSION['submit1'])
if($_SESSION['user_token'] == $_POST['user_token'])
if (isset($_POST['submit3']))
unset($_SESSION['user_token']);
$_SESSION['submit1']=false;
include_once('./my3page.php');
include_once('./searchname.php');//PAGE WITH SUBMIT3
else
header("location: ./index.php");
//---------------SECOND SEARCH TYPE------------------------
if(isset($_POST['submit2']))
$_SESSION['submit2']=true;
if(@$_POST['user_token'] && @$_SESSION['submit2'])
if($_SESSION['user_token'] == $_POST['user_token'])
if (isset($_POST['submit4']))
unset($_SESSION['user_token']);
$_SESSION['submit2']=false;
include_once('./my3page.php');
include_once('./searchdate.php');//PAGE WITH SUBMIT4
else
header("location: ./index.php");
//------------------------
else
include_once('./token.php');
include_once('./searchform.php'); //FIRST PAGE THAT CONTAINS 2 FORM AND 2 SUBMIT BUTTONS, AS I WROTE BELOW
searchform.php
IF YOU SEE THIS IS SEARCHFORM
<form method="post">
<input type="hidden" name="user_token" value="<?php echo $_SESSION['user_token'];?>" />
<input name="submit1" type="submit" value="Search1"/></td>
</form>
<form method="post">
<input type="hidden" name="user_token" value="<?php echo $_SESSION['user_token'];?>" />
<input name="submit2" type="submit" value="Search2"/>
</form>
token.php
$form_token = uniqid();
$_SESSION['user_token'] = $form_token;
搜索日期.php
IF YOU SEE THIS IS SEARCHDATE
<form method="post">
<input type="hidden" name="user_token" value="<?php echo $_SESSION['user_token'];?>">
<input name="submit4" type="submit" value="OK2"/>
搜索名称.php
IF YOU SEE THIS IS SEARCHNAME
<form method="post">
<input type="hidden" name="user_token" value="<?php echo $_SESSION['user_token'];?>"><br>
<input align="left" name="submit3" type="submit" value="OK1"/>
my3page.php
MY3PAGE reached
问题
如果我按下 submit1 它也会执行 include_once('./searchdate.php'); 如果我按下 submit2 它也会执行 include_once('./searchform.php');为什么?
【问题讨论】:
我无法弄清楚你想要达到什么目标,尤其是在会话中。你的 submit3 和 submit4 是什么以及在哪里? 我写了 //PAGE WITH SUBMIT3 和 //PAGE WITH SUBMIT4。我解释说:searchform.php 是一个带有 submit1 和 submit2 的 2 个搜索表单的页面。如果我按 submit1,我需要显示 searchname。 php 而如果我按 submit2 我需要显示 searchdate.php.My3page 是一个带有 2 个查询(更新)结果的页面。我想避免双重插入,所以我使用的是令牌。我不需要在 searchname/searchdate 中更新令牌,因为它们只是一个 SELECT 查询,所以双重插入没有问题。用户可以选择使用searchname或searchdate。会话开始于searchform,结束于last submit3or4 我发布的第一个代码是单一搜索类型(如果用户仅选择 submit1 为例),它工作正常!现在我想添加第二种搜索类型!但是我尝试的方法给我带来了 2 个问题(正如我之前写的),我无法访问 my3page(在这两种情况下) 你能显示包含 submit3 和 submit4 的页面吗? 当您按下 submit1 时,会话 $_SESSION['submit1'] 设置为 true。并且在您按下 $_POST['submit3'] 之前它被设置为 true。因此,如果您在按下提交 1 " && @$_SESSION['submit1'] " 后按下任何按钮,这总是正确的。 【参考方案1】:请尝试此代码。现在,只有在未按下 submit1 和 submit2 时才会包含您的表单。 在适当的地方添加评论。
<?php
error_reporting(E_ALL);
ini_set('display_errors', false);
?><!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ricerca</title>
</head>
<body>
<?php
session_start();
if (isset($_POST['submit1']))
$_SESSION['submit1'] = true;
$_SESSION['submit2'] = false; //you can remove if this is not needed.
if (isset($_POST['submit2']))
$_SESSION['submit2'] = true;
$_SESSION['submit1'] = false; //you can remove if this is not needed.
//---------------FIRST SEARCH TYPE--------------------------------
if (@$_POST['user_token'] && @$_SESSION['submit1'])
if ($_SESSION['user_token'] == $_POST['user_token'])
if (isset($_POST['submit3']))
unset($_SESSION['user_token']);
$_SESSION['submit1'] = false;
include_once('./my3page.php');
else //include only if not submit 3 not pressed.
include_once('./searchname.php'); //PAGE WITH SUBMIT3
else
header("location: ./index.php");
else if (@$_POST['user_token'] && @$_SESSION['submit2'])
if ($_SESSION['user_token'] == $_POST['user_token'])
if (isset($_POST['submit4']))
unset($_SESSION['user_token']);
$_SESSION['submit2'] = false;
include_once('./my3page.php');
else //include only if not submit4 not pressed.
include_once('./searchdate.php'); //PAGE WITH SUBMIT4
else
header("location: ./index.php");
//Include only if both submit1 and submit2 not pressed.
else
include_once('./token.php');
include_once('./searchform.php'); //FIRST PAGE THAT CONTAINS 2 FORM AND 2 SUBMIT BUTTONS, AS I WROTE ABOVE, THAT I SEE WHEN I PRESS SUBMIT1 (WHY?)
?>
</body>
</html>
【讨论】:
Nothing...它返回相同的错误...如果我按提交 1,我会看到 searchform(正确)但也会看到 searchname.php(错误),如果我按 submit3,我会看到 mypage3(正确)但也再次搜索表单(错误)。如果我按 submit2,我只会看到 searchdate(正确),但是当我按 submit4 后,我会看到 my3page(正确),但也会看到 searchdate.php(错误)。在我写错误之前..在这两种情况下我都可以访问 my3page 为什么我必须尝试?我认为这是没用的,因为如果我按 submit1 $_SESSION['submit2']=false;已经是假的了。我错了吗? 事实上,如果我使用你的代码,什么都不会发生!每次都是一样的:(。注意:再次阅读这篇文章的第一条评论:如果我按 submit1,我会看到 SEARCHFORM 而不是 SEARCHNAME,如果我按 submit2,我首先只会看到 SEARCHDATE(正确),但是之后,当我按 submit4 时,我会看到 my3page并再次加载 SEARCHDATE。谢谢 可能真正的问题在于 的使用。但我不知道在哪里! 回答中给出了我的理解,你能确认你正在为之工作吗?以上是关于在同一页面按顺序执行更多提交的主要内容,如果未能解决你的问题,请参考以下文章
Qt中连接到同一signal的多个slots的执行顺序问题(4.6以后按连接顺序执行)