我有这些页面要求用户输入值。当我尝试使用以前页面的链接时,会话值消失了,它要求用户返回第一个并重复该过程。
以下是基于原始代码的示例代码:
page1.php中
<?php
session_start();
echo "<form method='POST' action='page2.php'>";
echo "<input type='text' name='date1'>";
echo "<input type='text' name='date2'>";
echo "<input type='submit'>"
echo "</form>";
?>
使page2.php
<?php
session_start();
$_SESSION['date1'] = $_POST['date1'];
$_SESSION['date2'] = $_POST['date2'];
echo "<form method='POST' action='page3.php'>";
echo "<input type='text' name='info1'>";
echo "<input type='text' name='info2'>";
echo "<input type='submit'>"
echo "</form>";
echo "<a href='page1.php'>Change value in page 1</a>";
?>
page3.php
<?php
session_start();
$_SESSION['info1'] = $_POST['info1'];
$_SESSION['info2'] = $_POST['info2'];
if(isset($_POST['confirm'])){
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_pass = '';
$db = 'sampDB';
$conn = mysqli_connect($mysql_host, $mysql_user, $mysql_pass, $db);
$query = mysqli_query($conn, 'INSERT INTO info(date1, date2, info1, info2)
VALUE ('$_SESSION[date1]', '$_SESSION[date2]', '$_SESSION[info1]', '$_SESSION[info2]')');
}
echo "<form method='POST'>";
echo $_SESSION['date1'];
echo $_SESSION['date2'];
echo $_SESSION['info1'];
echo $_SESSION['info2'];
echo "<input type='submit' name='confirm'>"
echo "</form>";
echo "<a href='page1.php'>Change value in page 1</a>";
echo "<a href='page2.php'>Change value in page 2</a>";
?>
如何在不破坏会话中的值的情况下返回主页?
答案 0 :(得分:3)
只要您没有$_POST
将值重新设置回其他页面,您就可以在覆盖值之前检查是否设置了$_POST
,如下所示:
session_start();
if(isset($_POST["date1"])) $_SESSION['date1'] = $_POST['date1'];
if(isset($_POST["date2"])) $_SESSION['date2'] = $_POST['date2'];
参考:PHP isset
答案 1 :(得分:0)
每次,你都会覆盖SESSION的值。
您需要检查会话是否已设置。
如果已经设置,则应该没有更改。
此外,只有在过帐表单时才应用过帐值。
添加检查会话是否已经存在,如下所示:
$_SESSION['date1'] = !isset($_SESSION['date1']) ? $_POST['date1'] :
$_SESSION['date1'];
$_SESSION['date2'] = !isset($_SESSION['date2']) ? $_POST['date2'] : $_SESSION['date2'];
其他会话值相同。
答案 2 :(得分:0)
您应该以这种方式编写查询
$query = mysqli_query($conn, "INSERT INTO info(date1, date2, info1, info2)
VALUE ('{$_SESSION['date1']}', '{$_SESSION['date2']}',
'{$_SESSION['info1']}', '{$_SESSION['info2']}')");