php会话变量不一致
我有一个php表单(称为Home.php),在提交(methodpost)时,我在一个单独的php脚本(称为Validate.php)中验证信息 验证后,会话变量将在Validate.php中初始化/设置。 设置好这些变量后,我将使用validate页面中的header('Location:home.php')重定向回home.php页面 所有这些工作都非常完美,我可以访问会话变量并将其显示在home.php页面上,但只要我点击refresh,变量值就消失了。即使我没有刷新home.php,如果我转到服务器上的另一个页面并尝试访问会话变量,它们也是空的/未设置 几点: 我在所有页面和最开始都有Session_Start()。 会话保存路径配置值是/tmp,这似乎不是问题所在,因为我可以像上面提到的那样在第一次尝试时设置和检索会话值 我搜索了Stackoverflow和google,但什么也没找到。你是我最后的选择。希望有人能帮我 提前谢谢 Home.php::php会话变量不一致,php,session,variables,persistent,Php,Session,Variables,Persistent,我有一个php表单(称为Home.php),在提交(methodpost)时,我在一个单独的php脚本(称为Validate.php)中验证信息 验证后,会话变量将在Validate.php中初始化/设置。 设置好这些变量后,我将使用validate页面中的header('Location:home.php')重定向回home.php页面 所有这些工作都非常完美,我可以访问会话变量并将其显示在home.php页面上,但只要我点击refresh,变量值就消失了。即使我没有刷新home.php,如果
<?php session_start();
echo '<!DOCTYPE html>';
?>
And some HTML CODE HERE FOR DISPLAYING THE PAGE....
if (!isset($_SESSION['dbuserNm'])) {
echo
'<li class="dropdown">
<a href="#" class="dropdown-toggle hvr-bounce-to-right" data-toggle="modal" role="button" aria-haspopup="true" aria-expanded="false" data-target="#LogInModal" onclick="KillSession()"><b>Log In</b><span class="caret"></span></a>
</li>
<!-- Modal -->
<div class="modal fade" id="LogInModal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<button type="button" class="close"
data-dismiss="modal">
<span aria-hidden="true">×</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="myModalLabel">
Authentication
</h4>
</div>
<!-- Modal Body -->
<div class="modal-body">
<form class="form-horizontal" role="form" action="Validate.php" method="POST">
<div class="form-group">
<label class="col-sm-2 control-label"
for="inptUserID">User ID</label>
<div class="col-sm-10">
<input type="UserID" class="form-control"
id="inptUserID" name="inptUserID" placeholder="User ID"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"
for="inputPassword3" >Password</label>
<div class="col-sm-10">
<input type="password" class="form-control"
id="inptPsswd" name="inptPsswd" placeholder="Password"/>
</div>
</div>
<div class="form-group">
<!-- <div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox"/>';
if ($_SESSION['ValidLogInSw'] = 0) {
echo "Invalid UserID/Password, Please Re-try";
} else {
echo '<script type="text/javascript"> $(this).dialog("close");</script>';
}
echo
'</label>
</div>
</div>
</div>
</div> -->
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Sign in</button>
</div>
</div>
</form>
</div>
<!-- Modal Footer -->
<div class="modal-footer">
<button type="button" class="btn btn-default"
data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>';
} else {
echo '<li class="dropdown">
<a href="#" class="dropdown-toggle hvr-bounce-to-right" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><b>'. $_SESSION['dbuserNm']. '\'s Account</b><span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#" class="hvr-bounce-to-right">Account Management</a></li>
<li><a href="#" class="hvr-bounce-to-right">Stats1</a></li>
<li><a href="#" class="hvr-bounce-to-right">Stats2</a></li>
</ul>
</li>';
}
?>
Validate.php:
<?PHP
session_start();
//header('Location: ' . $_SERVER['HTTP_REFERER']);
header('Location: Home.php');
if (isset($_POST["inptUserID"]) && !empty($_POST["inptUserID"])){
//*echo 'Its Definitely Here';
$lclidpw = $_POST['inptUserID'];
$id = $_POST['inptUserID'];
$pw = $_POST['inptPsswd'];
$Cnxn = mysql_connect("localhost:portnumber", "UserID", "Psswd");//format is id||pw;
if($Cnxn){
mysql_select_db('DatabaseNameHere');
$Qry = "SELECT CONCAT(CAST(a.UserId AS CHAR), '||' ,TRIM(u.User_FName)) FROM TableNameHere u INNER JOIN UsrAuth a ON a.UserId = u.UserId WHERE a.UserName = TRIM('" . $id ."') AND a.Psswd = TRIM('" .$pw . "');" ;
$Results = mysql_query($Qry) or die('Sql Error...'.mysql_error());
if(mysql_num_rows($Results) > 0){
//echo 'Its here';
//echo $Qry;
//All this is new:
$Rslt_for_Session = mysql_result($Results,0);
$_SESSION['dbuserId'] = substr($Rslt_for_Session,0, strpos($Rslt_for_Session, '||'));
$_SESSION['dbuserNm'] = substr($Rslt_for_Session, strpos($Rslt_for_Session ,'||')+2,strlen($Rslt_for_Session)-strpos($Rslt_for_Session ,'||')+1);
$_SESSION['TimeSet'] = time();
$_SESSION['ValidLogInSw'] = 1;
//echo $_SESSION['dbuserNm'];
}
else{
$_SESSION['ValidLogInSw'] = 0;
}
}
else{
echo '*Connection Error...please try later';
}
}
?>
这里还有一些HTML代码用于显示页面。。。。
if(!isset($\u会话['dbuserNm'])){
回声
“
&时代;
接近
认证
用户ID
密码
登录
接近
';
}否则{
echo'
';
}
?>
Validate.php:
<?php session_start();
echo '<!DOCTYPE html>';
?>
And some HTML CODE HERE FOR DISPLAYING THE PAGE....
if (!isset($_SESSION['dbuserNm'])) {
echo
'<li class="dropdown">
<a href="#" class="dropdown-toggle hvr-bounce-to-right" data-toggle="modal" role="button" aria-haspopup="true" aria-expanded="false" data-target="#LogInModal" onclick="KillSession()"><b>Log In</b><span class="caret"></span></a>
</li>
<!-- Modal -->
<div class="modal fade" id="LogInModal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<button type="button" class="close"
data-dismiss="modal">
<span aria-hidden="true">×</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="myModalLabel">
Authentication
</h4>
</div>
<!-- Modal Body -->
<div class="modal-body">
<form class="form-horizontal" role="form" action="Validate.php" method="POST">
<div class="form-group">
<label class="col-sm-2 control-label"
for="inptUserID">User ID</label>
<div class="col-sm-10">
<input type="UserID" class="form-control"
id="inptUserID" name="inptUserID" placeholder="User ID"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"
for="inputPassword3" >Password</label>
<div class="col-sm-10">
<input type="password" class="form-control"
id="inptPsswd" name="inptPsswd" placeholder="Password"/>
</div>
</div>
<div class="form-group">
<!-- <div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox"/>';
if ($_SESSION['ValidLogInSw'] = 0) {
echo "Invalid UserID/Password, Please Re-try";
} else {
echo '<script type="text/javascript"> $(this).dialog("close");</script>';
}
echo
'</label>
</div>
</div>
</div>
</div> -->
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Sign in</button>
</div>
</div>
</form>
</div>
<!-- Modal Footer -->
<div class="modal-footer">
<button type="button" class="btn btn-default"
data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>';
} else {
echo '<li class="dropdown">
<a href="#" class="dropdown-toggle hvr-bounce-to-right" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><b>'. $_SESSION['dbuserNm']. '\'s Account</b><span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#" class="hvr-bounce-to-right">Account Management</a></li>
<li><a href="#" class="hvr-bounce-to-right">Stats1</a></li>
<li><a href="#" class="hvr-bounce-to-right">Stats2</a></li>
</ul>
</li>';
}
?>
Validate.php:
<?PHP
session_start();
//header('Location: ' . $_SERVER['HTTP_REFERER']);
header('Location: Home.php');
if (isset($_POST["inptUserID"]) && !empty($_POST["inptUserID"])){
//*echo 'Its Definitely Here';
$lclidpw = $_POST['inptUserID'];
$id = $_POST['inptUserID'];
$pw = $_POST['inptPsswd'];
$Cnxn = mysql_connect("localhost:portnumber", "UserID", "Psswd");//format is id||pw;
if($Cnxn){
mysql_select_db('DatabaseNameHere');
$Qry = "SELECT CONCAT(CAST(a.UserId AS CHAR), '||' ,TRIM(u.User_FName)) FROM TableNameHere u INNER JOIN UsrAuth a ON a.UserId = u.UserId WHERE a.UserName = TRIM('" . $id ."') AND a.Psswd = TRIM('" .$pw . "');" ;
$Results = mysql_query($Qry) or die('Sql Error...'.mysql_error());
if(mysql_num_rows($Results) > 0){
//echo 'Its here';
//echo $Qry;
//All this is new:
$Rslt_for_Session = mysql_result($Results,0);
$_SESSION['dbuserId'] = substr($Rslt_for_Session,0, strpos($Rslt_for_Session, '||'));
$_SESSION['dbuserNm'] = substr($Rslt_for_Session, strpos($Rslt_for_Session ,'||')+2,strlen($Rslt_for_Session)-strpos($Rslt_for_Session ,'||')+1);
$_SESSION['TimeSet'] = time();
$_SESSION['ValidLogInSw'] = 1;
//echo $_SESSION['dbuserNm'];
}
else{
$_SESSION['ValidLogInSw'] = 0;
}
}
else{
echo '*Connection Error...please try later';
}
}
?>
Validate.php:
好的…这是我在我的代码中找到的,一旦我把它发布到这里。Home.php中的代码中有一个会话破坏,这就是造成这些恶作剧的原因
我删除了Session_Destroy()和Onclick事件,所有这些都可以完美地工作,就像它设计的那样
谢谢迈克和丹的时间。你得把裙子抬起来,给我们看一些代码……你能添加一些代码吗?……哈……“抬裙子”……我刚提过……希望能有所帮助。谢谢