【发布时间】:2016-07-10 23:29:48
【问题描述】:
我在这里阅读了多篇关于此的帖子,但似乎没有一个可以解决问题,也许我只是对此产生了误解。 我有一个插入数据库的表单,然后完美地回显数据!我的问题是因为表单位于用户帐户页面上,当您注销时,所有信息都会消失。我知道我必须将我的 $_POST 变量保存到 $_SESSION 中。
但是即使保存到会话中,一旦注销,重新登录时,回显的数据仍然会消失。将 $_POST 保存到 $_SESSION 的正确方法是什么。
我目前正在使用:
// Save $_POST to $_SESSION
$_SESSION['fname'] = $_POST;
这里有没有更好的方法是我的代码:
HTML
<section class="container">
<form id="myform " class="Form" method="post" action="Cus_Account.php?c_id=<?php echo $c_id ?>" accept-charset="utf-8">
<!-- <div id="first">-->
<input type="text" id="fname" name="fname" value="<?php echo isset($_POST['fname']) ? $_POST['fname'] : '';?>" required>
<input type="text" id="lname" name="lname" value="<?php echo isset($_POST['lname']) ? $_POST['lname'] : '';?>" required>
<input type="text" id="email" name="email" value="<?php echo $_SESSION['Cus_Email']; ?>" required>
<input type="number" id="phone" name="phone" value="<?php echo isset($_POST['phone']) ? $_POST['phone'] : '';?>"required>
<input type="submit" name="Update" value="Update">
<br>
</form>
PHP
<?php
if (isset($_POST['Update'])) {
$c_fname = $_POST['fname'];
$c_lname = $_POST['lname'];
$c_email = $_POST['email'];
$c_phone = $_POST['phone'];
// Save $_POST to $_SESSION
$_SESSION['fname'] = $_POST;
//query
$insert_det = "INSERT INTO Cus_acc_details(CUS_Fname,CUS_Lname,Cus_Email,CUS_Phone) VALUES (?,?,?,?)";
$stmt = mysqli_prepare($dbc, $insert_det);
//new
// $stmt = mysqli_prepare($dbc, $insert_c);
//debugging
//$stmt = mysqli_prepare($dbc, $insert_c) or die(mysqli_error($dbc));
mysqli_stmt_bind_param($stmt, 'sssi', $c_fname, $c_lname, $c_email, $c_phone);
/* execute query */
$r = mysqli_stmt_execute($stmt);
// if inserted echo the following messges
if ($r) {
echo "<script> alert('registration sucessful')</script>";
}
} else {
echo "<b>Oops! Your passwords do not </b>";
}
?>
表单中的 $_SESSION['Cus_Email'] 来自另一个查询。 任何帮助或建议将不胜感激。
【问题讨论】:
-
不确定您的问题,但可能会为每个字段创建一个会话值
$_SESSION['fname'] = $_POST['fname']; -
或者只是
$_SESSION = $_POST;但可能是$_SESSION['post'] = $_POST;然后只是echo $_SESSION['post']['fname'];等等... -
@chris85 我正在对一个变量尝试不同的方法,因为它目前甚至不适用于 fname。我正在尝试将 $_POST 保存到 $_SESSION 但我失败了
-
你试过
session_start();吗?