PHP 会话数据被 java 刷新删除
PHP session data removed by java refresh
在此先感谢,
我想创建一个链接的下拉菜单并在网上找到 tutorial/code
我已经两次使用此代码来创建 lmsdropdown.php 和 clubdropdown.php。我能够将 lmsdropdown 表单中的值存储为一个会话,并将它们回显到 clubdropdown(仅用于验证值是否存在)。
lmsdropdown 是 php 包含在 members.php 中,而 clubdropdown 是包含在 members2.php.
中
当我 select clubdropdown 上的值时,页面会刷新以填充第二个下拉框,这会导致我的会话数据被清除。
我是 PHP/Javascript 的新手,所以答案可能非常明显,但这让我困惑了几天。非常感谢任何帮助。
下面是两个片段的合并 members2.php,它采用了 lmsdropdown 的输出并将输出存储在会话中。
clubdropdown 显示 java 代码以及回显会话语句
我能够正确回显会话数据,但是 java脚本似乎在构建下拉列表 2 时删除了它。
members.php session data
<?php
session_start();
$_SESSION['lms'] = $_POST['lms'];
$_SESSION['week'] = $_POST['week'];
if (!isset($_SESSION['usr_lvl']) or ($_SESSION['usr_lvl'] != 0)) {
header("Location: login.php");
exit();
}
?>
clubdropdown output of session data
<SCRIPT language=JavaScript>
function reload(form) {
var val = form.lge.options[form.lge.options.selectedIndex].value;
self.location = 'members-page2.php?lge=' + val;
}
</script>
</head>
<body>
<?php
$usr = $_SESSION['usr_id'];
@$lge=$_GET['lge']; // Use this line or below line if register_global is off
if(strlen($lge) > 0 and !is_numeric($lge)){ // to check if $lge is numeric data or not.
echo "Data Error";
exit;
}
$usr = $_SESSION['usr_id'];
$lms=$_SESSION['lms'];
$week=$_SESSION['week'];
echo "<br>Value of $week = $week<br>Value of $lms = $lms <br>Value of $usr = $usr";
下图显示了输出到 members2.php 中包含的 clubdropdown 的会话变量
clubdropdown with variables shown
此图显示了 selection 从第一个下拉列表中生成后的错误。
Error after list refresh
根据对此处类似问题的一些回答,我认为错误是因为 post 数据正在 overwritten/removed 刷新,但我认为这就是会话的目的?
非常感谢任何意见。
您正在从 $_POST
获取值,这是您第二次 运行 页面不存在。您需要添加一个 If(isset($_POST['lms'])){ $_SESSION['lms'] = $_POST['lms']; }
以便在 $_POST
值不存在时跳过它。
目前,您的 $_SESSION
变量仍然存在,但正在替换为空的 $_POST
值。
我怀疑您最好使用 AJAX 调用来填充您的下拉列表。
在此先感谢,
我想创建一个链接的下拉菜单并在网上找到 tutorial/code
我已经两次使用此代码来创建 lmsdropdown.php 和 clubdropdown.php。我能够将 lmsdropdown 表单中的值存储为一个会话,并将它们回显到 clubdropdown(仅用于验证值是否存在)。
lmsdropdown 是 php 包含在 members.php 中,而 clubdropdown 是包含在 members2.php.
中当我 select clubdropdown 上的值时,页面会刷新以填充第二个下拉框,这会导致我的会话数据被清除。
我是 PHP/Javascript 的新手,所以答案可能非常明显,但这让我困惑了几天。非常感谢任何帮助。
下面是两个片段的合并 members2.php,它采用了 lmsdropdown 的输出并将输出存储在会话中。 clubdropdown 显示 java 代码以及回显会话语句
我能够正确回显会话数据,但是 java脚本似乎在构建下拉列表 2 时删除了它。
members.php session data
<?php
session_start();
$_SESSION['lms'] = $_POST['lms'];
$_SESSION['week'] = $_POST['week'];
if (!isset($_SESSION['usr_lvl']) or ($_SESSION['usr_lvl'] != 0)) {
header("Location: login.php");
exit();
}
?>
clubdropdown output of session data
<SCRIPT language=JavaScript>
function reload(form) {
var val = form.lge.options[form.lge.options.selectedIndex].value;
self.location = 'members-page2.php?lge=' + val;
}
</script>
</head>
<body>
<?php
$usr = $_SESSION['usr_id'];
@$lge=$_GET['lge']; // Use this line or below line if register_global is off
if(strlen($lge) > 0 and !is_numeric($lge)){ // to check if $lge is numeric data or not.
echo "Data Error";
exit;
}
$usr = $_SESSION['usr_id'];
$lms=$_SESSION['lms'];
$week=$_SESSION['week'];
echo "<br>Value of $week = $week<br>Value of $lms = $lms <br>Value of $usr = $usr";
下图显示了输出到 members2.php 中包含的 clubdropdown 的会话变量 clubdropdown with variables shown
此图显示了 selection 从第一个下拉列表中生成后的错误。 Error after list refresh
根据对此处类似问题的一些回答,我认为错误是因为 post 数据正在 overwritten/removed 刷新,但我认为这就是会话的目的?
非常感谢任何意见。
您正在从 $_POST
获取值,这是您第二次 运行 页面不存在。您需要添加一个 If(isset($_POST['lms'])){ $_SESSION['lms'] = $_POST['lms']; }
以便在 $_POST
值不存在时跳过它。
目前,您的 $_SESSION
变量仍然存在,但正在替换为空的 $_POST
值。
我怀疑您最好使用 AJAX 调用来填充您的下拉列表。