免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11106 | 回复: 18
打印 上一主题 下一主题

将session['username']赋值给一个变量,这变量却为空? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-09 12:11 |只看该作者 |倒序浏览
我写了一个程序用来处理更改密码,在上一个页面输入新密码两次,用户名在session中。这个处理页面编写如下:

<?php
        if($_POST['newpass']==$_POST['newpass2']){
                $temppass=$_POST['newpass'];
        } else {
                echo ("<script type='text/javascript'> alert('两次密码不一致');history.go(-1);</script>"); //若两次输入的新密码不一致则报错并返回原页面。
                exit;
        }
       
        $username = $_SESSION['userename']; //给$username赋值为Session中的username
        echo $username."and".$_SESSION['username'];//为了测试,来打印下。
        exit;
?>
其中:session中username为user。
最后运行的结果是: anduser。
为什么$username是空值?

论坛徽章:
0
2 [报告]
发表于 2008-03-09 12:36 |只看该作者
<?php
session_start();
        if($_POST['newpass']==$_POST['newpass2']){
                $temppass=$_POST['newpass'];
        } else {
                echo ("<script type='text/javascript'> alert('两次密码不一致');history.go(-1);</script>"); //若两次输入的新密码不一致则报错并返回原页面。
                exit;
        }
        
        $username = $_SESSION['userename']; //给$username赋值为Session中的username
        echo $username."and".$_SESSION['username'];//为了测试,来打印下。
        exit;
?>

论坛徽章:
0
3 [报告]
发表于 2008-03-09 12:39 |只看该作者

回复 #2 nogroup 的帖子

谢楼上,不过还是不行啊。仍然是空值。

论坛徽章:
0
4 [报告]
发表于 2008-03-09 12:54 |只看该作者
问题可再简化为:
若已经设置了session中$_SESSION['username']为user
那么以下程序:
<?php
        session_start();
        $aa = $_SESSION['userename']; //给$aa赋值为Session中的username
        echo $aa."and".$_SESSION['username'];//为了测试,来打印下。
        exit;
?>
最后的结果是:anduser
$aa的值无论如何都是空值,我在不同的服务器和PHP/mysql中都测试了,确实为空。

论坛徽章:
0
5 [报告]
发表于 2008-03-09 12:59 |只看该作者
<?php
        session_start();
        print_r($_SESSION);
?>
在$_SESSION['username']赋值的页面,最开始也应该有session_start();

论坛徽章:
0
6 [报告]
发表于 2008-03-09 13:06 |只看该作者
楼上好。我做了一个test.php,内容同4楼。

在两个环境中都测试过,最后输出,$aa就是空值。

论坛徽章:
0
7 [报告]
发表于 2008-03-09 13:07 |只看该作者
最好把两个程序都拿出来.
手册上有很好的例子的,  可以先看看.

论坛徽章:
0
8 [报告]
发表于 2008-03-09 13:09 |只看该作者
将test.php改写为以下:加入了你的print_r语句。还是不行。

<?php
session_start();
print_r($_SESSION);
$aa = $_SESSION["userename"]; //给$username赋值为Session中的username
echo $aa."and".$_SESSION["username"];//为了测试,来打印下。
?>

输出为Array ( [username] => user [userid] => 1 [userlevel] => ) anduser

论坛徽章:
0
9 [报告]
发表于 2008-03-09 13:14 |只看该作者
手册上session相关的,没找到这样引用的,难道这样不符合语法?

论坛徽章:
0
10 [报告]
发表于 2008-03-09 13:18 |只看该作者
<?php
session_start();
$_SESSION['username'] ="Cay";
?>
<?php
session_start();
echo $_SESSION['username'];
?>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP