关于Session的问题,请各位支持支持! 没关系的,只是我要在另一文件得到 $_SESSION['userName'] 的值。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 复人: ray929(海豚) ( ) 信誉:100 2005-05-19 12:37:00 得分: 0 两个文件必须处于同一个浏览器进程中 两个文件必须处于同一个浏览器进程中呀。但一登录后,session的值就为空了。 test1.phpsession_start();$_SESSION['one']='test';echo $_SESSION['one']; 得到值为 'test'test2.phpsession_start();echo $_SESSION['one']; 但是这个文件得到的值就为空了!查看了C:/temp里的值也为空。我的php.ini 文件的 session.save_path = c:/TEMP 是这样设置的。请问到底是什么问题啊? 两个文件必须处于同一个浏览器进程中我的意思是必须在同一个浏览器窗口中依次浏览这两个文件但是看样子楼主好像不存在这个问题楼主说一下你的各个配置吧比如系统,php运行模式等等 php版本是4.3 ,php+win2000server+mysql+IIS.. 把这两个文件关于session的地方代码都贴出来看看吧? 文件1(即登录文件):<?phprequire('conn.php');?><?php$userName=$_POST['userName'];$userPwd=$_POST['userPwd'];$result = mysql_query("SELECT * FROM quanxian WHERE zh='$userName'",$db);$rows=mysql_fetch_array($result);if($rows==0){?><script language="javascript"> window.alert("您的会员帐号没有相应记录,请重新登录!"); window.location.href="login.php";</script><?}else{if ($userPwd==$rows["pass"]){ session_start(); $_SESSION['userName']=$userName; $_SESSION['userPwd']=$userPwd; #echo $_SESSION['userName']; mysql_close($db); header("Location:index.php");}else{echo"<Script language='javascript'>window.alert('您的密码有错,请重新输入!');window.location.href='login.php';</Script>";}}?>文件2:(登录后跳到文件一个框架文件,包含文件2)但session值为空.<?phpsession_start();echo $_SESSION['userName'];$zh=$_SESSION['userName'];require('conn.php');?><?$result = mysql_query("SELECT * FROM quanxian WHERE zh='$zh'",$db);echo "SELECT * FROM quanxian WHERE zh='$zh'";$rows=mysql_fetch_array($result);if($rows==0){?><script language="javascript"> window.alert("对不起,您登录已超时,请重新登录!"); window.parent.location.href="login.php";</script><?}else{}?> 如果是同一个进程,你文件2的 session_start();又何必写呢? 就算把文件2 的session_start()去掉也不行呀。 看不懂,把session_start();放在文件开头试试!前面不能有空格什么的! 在文件最开头加上<?ob_start();?>试试或是把<?session_start();?>放在最前面试试前面不能有任何输出的我以前有次用IIS搭配php,没有任何出错信息所以建议楼主把代码放到apache平台下再试试 Don't know what's wrong. But mine works fine. (Win2kPro, Apache, PHP)---------------------//login.php<?phpif ($_POST['username']) { $username = $_POST['username']; session_start(); $_SESSION['username'] = $username; header("Location:frame.htm");} else { ?><html><head><title>login form</title></head><body><form method="post"><input type="text" name="username" value=""><input type="submit" name="submit1" value="Login"></form></body></html><?php } ?>-------------------//frame.htm<html><frameset rows="40,*" frameborder="NO" border="0" framespacing="0"> <frame src="menu.htm" name="topFrame" scrolling="NO" noresize> <frame src="after.php" name="mainFrame"></frameset></html>------------------------//menu.htm<html><body><table><tr><td>Item 1</td><td>Item 2</td></tr></table></body></html>-----------------------//after.php<?phpsession_start();echo "this is after.php<br>";echo $_SESSION['username'];?>------------------------//OutputItem 1 Item 2 Item 3 Item 4 this is after.phpffffasdf session_register('username');向服务器段注册,否则只能是当页的变量而已。 服务器注册//检查是否注册 注册过释放if(session_is_registered('username'))session_unregister('username');//重新注册session_register('username');建议查看PHP手册session部分。附登陆文件,希望对你有所帮助://logon.php<?session_start();require('../inc/conn.php');require('../inc/bin.php');if (!$username or !$password){ aMsg('请填写用户名和密码 !');}$DbSql = 'SELECT * FROM admin WHERE password="'.$password.'" AND username="'.$username.'"';$result=mysql_query($DbSql);if (@mysql_numrows($result)==1){ $AID=@mysql_result($result,0,"aid"); $ADMINNAME=@mysql_result($result,0,"username"); $ADMINSESSION = md5($UID.time()); //释放已经注册的session if(session_is_registered('AGENTID'))session_unregister('AGENTID'); if(session_is_registered('AGENT_NAME'))session_unregister('AGENT_NAME'); if(session_is_registered('AGENTNAME'))session_unregister('AGENTNAME'); if(session_is_registered('AID'))session_unregister('AID'); if(session_is_registered('ADMINNAME'))session_unregister('ADMINNAME'); if(session_is_registered('ADMINSESSION'))session_unregister('ADMINSESSION'); //重新注册 session_register('AID'); session_register('ADMINNAME'); session_register('ADMINSESSION'); //记录session $DbSql = 'UPDATE admin SET session="'.$ADMINSESSION.'" WHERE aid='.$AID; mysql_query($DbSql); //转向 header("location: admin.php");}else{ aMsg('用户名或者密码错误 !');}?> 把session_start();放在程序任何输出之前,或者像ray929(海豚)讲的用 Output Buffer(输出缓冲) ob_ 系列函数在session_start()时,服务器会发一个cookie叫session_id,在session.save_path建session文件你看看这个文件有没有,session.save_path可以通过session_save_path()在程序里设的,应该不会有问题的 session.save_path=\temp temp 文件里是有的!但session值就是为空。 咨询一个简单的路径问题,就是“..”和“.”的区别,baidu出无关的信息太多 把数组输出到html的一个单元格中 利用自己的专业特长 求一个投票管理系统 php 套件 测试路径如何配置 晕倒,不能理解phpmyadmin的配置,请大家指教 win8.1搭建 Apache + PHP + MySQL 环境。只有localhost可以访问 ! 请问这个如何解决 字数控制 网站注册中短信验证码的一些求解 应用正则表达式遇到问题,请帮忙 如何根据日期得知是星期几
两个文件必须处于同一个浏览器进程中
$_SESSION['one']='test';
echo $_SESSION['one']; 得到值为 'test'
test2.phpsession_start();
echo $_SESSION['one']; 但是这个文件得到的值就为空了!查看了C:/temp里的值也为空。我的php.ini 文件的 session.save_path = c:/TEMP 是这样设置的。
请问到底是什么问题啊?
比如系统,php运行模式等等
require('conn.php');
?>
<?php
$userName=$_POST['userName'];
$userPwd=$_POST['userPwd'];
$result = mysql_query("SELECT * FROM quanxian WHERE zh='$userName'",$db);
$rows=mysql_fetch_array($result);
if($rows==0){
?>
<script language="javascript">
window.alert("您的会员帐号没有相应记录,请重新登录!");
window.location.href="login.php";
</script>
<?
}else
{
if ($userPwd==$rows["pass"]){
session_start();
$_SESSION['userName']=$userName;
$_SESSION['userPwd']=$userPwd;
#echo $_SESSION['userName'];
mysql_close($db);
header("Location:index.php");
}else
{echo"<Script language='javascript'>window.alert('您的密码有错,请重新输入!');window.location.href='login.php';</Script>";}
}
?>文件2:(登录后跳到文件一个框架文件,包含文件2)但session值为空.<?php
session_start();
echo $_SESSION['userName'];
$zh=$_SESSION['userName'];
require('conn.php');
?>
<?
$result = mysql_query("SELECT * FROM quanxian WHERE zh='$zh'",$db);
echo "SELECT * FROM quanxian WHERE zh='$zh'";
$rows=mysql_fetch_array($result);
if($rows==0){
?>
<script language="javascript">
window.alert("对不起,您登录已超时,请重新登录!");
window.parent.location.href="login.php";
</script>
<?
}else{
}
?>
<?ob_start();?>
试试或是把
<?session_start();?>
放在最前面试试前面不能有任何输出的
我以前有次用IIS搭配php,没有任何出错信息
所以建议楼主把代码放到apache平台下再试试
//login.php
<?php
if ($_POST['username']) {
$username = $_POST['username'];
session_start();
$_SESSION['username'] = $username;
header("Location:frame.htm");
} else { ?>
<html><head><title>login form</title></head>
<body>
<form method="post">
<input type="text" name="username" value="">
<input type="submit" name="submit1" value="Login">
</form>
</body></html>
<?php } ?>
-------------------//frame.htm
<html><frameset rows="40,*" frameborder="NO" border="0" framespacing="0">
<frame src="menu.htm" name="topFrame" scrolling="NO" noresize>
<frame src="after.php" name="mainFrame">
</frameset></html>
------------------------//menu.htm
<html><body>
<table><tr>
<td>Item 1</td>
<td>Item 2</td>
</tr></table>
</body></html>
-----------------------//after.php
<?php
session_start();
echo "this is after.php<br>";
echo $_SESSION['username'];
?>------------------------
//Output
Item 1 Item 2 Item 3 Item 4
this is after.php
ffffasdf
向服务器段注册,否则只能是当页的变量而已。
//检查是否注册 注册过释放if(session_is_registered('username'))
session_unregister('username');
//重新注册
session_register('username');建议查看PHP手册session部分。附登陆文件,希望对你有所帮助:
//logon.php
<?
session_start();
require('../inc/conn.php');
require('../inc/bin.php');
if (!$username or !$password){
aMsg('请填写用户名和密码 !');
}
$DbSql = 'SELECT * FROM admin WHERE password="'.$password.'" AND username="'.$username.'"';
$result=mysql_query($DbSql);
if (@mysql_numrows($result)==1){
$AID=@mysql_result($result,0,"aid");
$ADMINNAME=@mysql_result($result,0,"username");
$ADMINSESSION = md5($UID.time());
//释放已经注册的session
if(session_is_registered('AGENTID'))session_unregister('AGENTID');
if(session_is_registered('AGENT_NAME'))session_unregister('AGENT_NAME');
if(session_is_registered('AGENTNAME'))session_unregister('AGENTNAME');
if(session_is_registered('AID'))session_unregister('AID');
if(session_is_registered('ADMINNAME'))session_unregister('ADMINNAME');
if(session_is_registered('ADMINSESSION'))session_unregister('ADMINSESSION');
//重新注册
session_register('AID');
session_register('ADMINNAME');
session_register('ADMINSESSION');
//记录session
$DbSql = 'UPDATE admin SET session="'.$ADMINSESSION.'" WHERE aid='.$AID;
mysql_query($DbSql);
//转向
header("location: admin.php");
}
else{
aMsg('用户名或者密码错误 !');
}
?>
或者像ray929(海豚)讲的用 Output Buffer(输出缓冲) ob_ 系列函数在session_start()时,服务器会发一个cookie叫session_id,在session.save_path建session文件
你看看这个文件有没有,
session.save_path可以通过session_save_path()在程序里设的,应该不会有问题的
temp 文件里是有的!
但session值就是为空。