【发布时间】: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