gpt4 book ai didi

PHP-将 $_POST 保存到 $_SESSION 问题

转载 作者:行者123 更新时间:2023-11-29 11:38:44 24 4
gpt4 key购买 nike

我在这里阅读了多篇关于此问题的文章,但似乎没有一个能解决问题,也许我只是误解了,因为我是新手。我有一个表单,可以插入数据库,然后回显数据,完美!,我的问题是因为该表单位于用户帐户页面上,当您注销时,所有信息都会消失。我知道我必须将 $_POST 变量保存到 $_SESSION 中。

但即使保存到 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'] 来自另一个查询。任何帮助或建议将不胜感激。

最佳答案

$_POST 数据只能临时存储为 session 变量。例如,如果您的用户犯了错误:

表单.php

<?php
// This function should go in a config file, to escape data:
function html($str){
return htmlspecialchars($str, ENT_QUOTES);
}

$data = $_SESSION['form']['data'];
$errors = $_SESSION['form']['errors'];
?>
<form method="post" action="action.php">

<input type="text" name="fname" value="<?=html($data['fname'])?>" placeholder="First name">
<?php if(isset($errors['fname'])): ?>
<p>ERROR: <?=html($errors['fname'])?></p>
<?php endif; ?>

<input type="text" name="lname" value="<?=html($data['lname'])?>" placeholder="Last name">

<button type="submit">Go</button>

</form>
<?php
unset($_SESSION['form']); // You don't want to keep this data any longer.

action.php

<?php
$data = $_POST;

// Validate the data, for example:
if($data['fname'] == ''){
$errors['fname'] = "First name is required.";
}

if(!empty($errors)){
unset($data['password']); // Do not store passwords in session variables.
$_SESSION['form']['data'] = $data;
$_SESSION['form']['errors'] = $errors;
header("Location: form.php");
die;
}
// Put your database inserts here (no errors)

您应该将名字、姓氏等信息存储在数据库中。除了上面的示例之外,请勿将这些存储在 $_SESSION 中。

关于PHP-将 $_POST 保存到 $_SESSION 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36182153/

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