【问题标题】:PHP sessions not working on multiple page form when going back to the first page返回第一页时,PHP会话在多页表单上不起作用
【发布时间】:2020-11-16 19:01:04
【问题描述】:

当我尝试在第一页上回显结果时,我没有让 PHP $_SESSION 工作。错误消息基本上表明变量未定义。

我要使用的路径:

  1. 第一页 = 表格 1
  2. 第二页 = 表格 2
  3. 返回第一页 = 表单 1,所有输入均来自上一次提交 + 文本中 2 个表单的所有数据。

这可能吗?

第 1 页 = index.php:

    <?php session_start(); ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1" />
    </head>
    
    <body>   
        <form action="overview.php" id="regForm" method="post">
            
            <div class="tab">
                <h2>1. Your info</h2>
                <p><input type="text" placeholder="Prénom"  name="fname" value="<?php echo htmlspecialchars($_SESSION['name']); ?>"></p>
                <p><input type="text" placeholder="Nom" name="name" value="<?php echo htmlspecialchars($_SESSION['name']); ?>"></p>
                <input type="submit" value="Valider">
            </div>
        </form>
    <?php echo "Your name is :",$_SESSION['name'], "and your first-name is ", $_SESSION['fname'];?>
<?php echo "Your e-mail is :", $_SESSION['email'] ;?>
    </body>
    </html>

第 2 页 = 概览.php:

<?php session_start(); ?>

<?php

   $_SESSION['fname'] = $_POST['fname'];
   $_SESSION['name'] = $_POST['name'];

?>

<form action="index.php" id="regForm" method="post">   
        <h2>1. Tes informations personnelles</h2>
        <p><input type="text" placeholder="e-mail" name="email"></p>
        <input type="submit" value="Valider">
</form>

返回第 1 页 = index.php:

<?php session_start(); ?>
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
</head>

<body>   
    <form action="overview.php" id="regForm" method="post">
        
        <div class="tab">
            <h2>1. Your info</h2>
            <p><input type="text" placeholder="Prénom"  name="fname" value="<?php echo htmlspecialchars($_SESSION['name']); ?>"></p>
            <p><input type="text" placeholder="Nom" name="name" value="<?php echo htmlspecialchars($_SESSION['name']); ?>"></p>
            <input type="submit" value="Valider">
        </div>
    </form>

<?php echo "Your name is :",$_SESSION['name'], "and your first-name is ", $_SESSION['fname'];?>
<?php echo "Your e-mail is :", $_SESSION['email'] ;?>

</body>
</html>

你们有没有发现任何阻止代码运行的问题?

【问题讨论】:

  • 第一次访问 index.php 时当然没有设置这些值。
  • @CBroe 你的意思是我应该添加 $_SESSION['fname'] = $_POST['fname']; $_SESSION['name'] = $_POST['name'];到索引?
  • 顺便说一句,如果我在第一页访问时没有获得价值,那也没关系。但我确实想在两次提交后得到它们……你明白我的意思吗?
  • 不,$_POST['fname'] 也不存在,当您第一次调用 index.php 时。在尝试访问它们之前,您应该检查这些条目是否已在会话中设置。
  • @CBroe 感谢您的提示!你知道我如何“检查这些条目是否在会话中设置”吗?

标签: php forms session multi-page-application


【解决方案1】:

刚刚发现“为什么”。 当我开始阻止 $_sessions 正常工作的项目时,我基本上阻止了 cookie。 因此,请确保在您的网站上启用了 cookie。那种浪费一小时工作的东西……

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2021-01-19
    • 2013-02-26
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多