【问题标题】:PHP session variables won't set when submitting form, even though same inputs work to update database提交表单时不会设置 PHP 会话变量,即使相同的输入可以更新数据库
【发布时间】:2021-05-13 09:09:26
【问题描述】:

我可以在 php 文件中手动设置会话变量。 我无法使用 html 表单中的输入变量来设置会话变量。 我很困惑,因为当我使用它们来更新 mySQL 数据库时,相同的输入变量会起作用。

这里是成功设置会话变量的php文件:

<?php
    session_start();
    
    $_SESSION['username'] = "brandonpetaccio";
    
    echo $_SESSION['username'];
?>

我通过在单独的 php 文件中回显会话变量来测试它们:

<?php
    session_start();
    
    echo $_SESSION['username']."<br>";
    echo $_SESSION['name1']."<br>";
    echo $_SESSION['name2'];
?>

用户名已在第一个文件中设置。我正在尝试使用 html 表单设置 name1 和 name2。

这是带有表格的文件。它包含php和html:

<?php
// STARTS SESSION FOR THIS PAGE
session_start();

// CONNECTS TO DATABASE
include 'dragon-conn.php';


// // NAME INPUTS
$iName1 = mysqli_real_escape_string($dragonden, $_REQUEST['iName1']);
$iName2 = mysqli_real_escape_string($dragonden, $_REQUEST['iName2']);

// SET SESSION VARIABLES
$_SESSION['name1'] = $iName1;
$_SESSION['name2'] = $iName2;

?>

<html lang="en">

<form method = "post" class="mt-5">
                <!--NAME-->
                <h2>People</h2>
                <label for="iName1" class="" style="font-weight:bold;">First Name</label>
                <input id="iName1" name="iName1" type="text" class="spaceless form-control username m-1">
                <label for="iName2" class="mt-1" style="font-weight:bold;">Last Name</label>
                <input id="iName2" name="iName2" type="text" class="spaceless form-control username m-1">
                
                <div class="form-check form-check-inline m-2">
                  <input class="form-check-input" type="checkbox" value="" id="customer">
                  <label class="form-check-label" for="customer">
                    Customer
                  </label>
                </div>
                
                <div class="form-check form-check-inline m-2">
                  <input class="form-check-input" type="checkbox" value="" id="employee">
                  <label class="form-check-label" for="employee">
                    Employee
                  </label>
                </div>
                <!--SUBMIT-->
                <input type="submit" id="addme" class="btn btn-primary m-1" value="Add Me">
                
            </form>

</html>

在提交带有输入的表单后,我刷新了回显三个会话变量的 php 文件。第一个会话变量仍然设置,并回显。最后两个会话变量不回显。

我在每个文件的顶部都有session_start();。更新数据库时,相同的输入变量起作用。我不明白为什么在尝试通过 html 表单设置会话变量时它们不起作用。

我错过了什么?

【问题讨论】:

  • 嗯,好的...所以关闭所有内容...打开表单...然后打开 echo 文件?
  • 即使文件同时打开,您认为命名会话是否会使其工作?

标签: php session session-variables


【解决方案1】:

一位评论者(我不再看到他的回复)指出,如果文件同时打开,则它们不在同一个会话中。我关闭了文件;我打开表格并提交了输入;然后我打开了“echo”文件,它回显了提交的输入。解决了。​​

跟进:命名会话是否有助于确保选项卡位于同一会话中?

【讨论】:

    猜你喜欢
    • 2016-08-18
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多