免费注册 查看新帖 |

Chinaunix

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

关于$_SESSION[]的一个问题请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-24 20:50 |只看该作者 |倒序浏览
有两个php文件a.php 及 b.php如下
a.php

  1. <?php  
  2. session_start();
  3. function random($len)
  4. {
  5. $srcstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  6. mt_srand();
  7. $strs="";
  8. for($i=0;$i<$len;$i++){
  9. $strs.=$srcstr[mt_rand(0,35)];
  10. }
  11. return strtoupper($strs);
  12. }
  13. $str=random(6);
  14. $_SESSION['code'] = $str;
  15. $_SESSION['test'] = session_id();

  16. $width = 68;
  17. $height = 25;
  18. @header("Content-Type:image/png");
  19. $im=imagecreate($width,$height);
  20. $back=imagecolorallocate($im,0xFF,0xFF,0xFF);
  21. $pix=imagecolorallocate($im,187,230,247);
  22. $font=imagecolorallocate($im,41,163,238);
  23. mt_srand();
  24. for($i=0;$i<1000;$i++)
  25. {
  26. imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pix);
  27. }
  28. imagestring($im, 5, 7, 5,$str, $font);
  29. imagerectangle($im,0,0,$width-1,$height-1,$font);
  30. imagepng($im);
  31. imagedestroy($im);
  32. ?>
复制代码


b.php
  1. <?php  
  2. session_start();
  3. echo "<img src=a.php border=0 align=absbottom>";
  4. echo "</br>session code= " . $_SESSION['code'];
  5. ?>
复制代码


执行http://localhost/b.php时显示的验证码总是前一次的值,不知道是什么问题。

比如,打开刷新两次后分别显示如下:



论坛徽章:
0
2 [报告]
发表于 2010-01-24 22:05 |只看该作者
当然是前一次的了


浏览页面->

b.php 输出html,内有文字session->浏览器获取,触发html里的src

a.php重新生成session,输出已经变化的session字符图案

论坛徽章:
0
3 [报告]
发表于 2010-01-25 01:24 |只看该作者
很明显是文字的比图片的慢了!因为是在b.php的$_SESSION变量是上一次的,而打印echo "<img src=a.php border=0 align=absbottom>"; 这句之后就改变了$_SESSION变量!

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
4 [报告]
发表于 2010-01-25 07:40 |只看该作者
当更新SESSION值时,同一个CODE里的值总是保留最亲的。

论坛徽章:
0
5 [报告]
发表于 2010-01-25 20:50 |只看该作者

回复 #2 3227049 的帖子

非常感谢,我还以为
echo "<img src=a.php border=0 align=absbottom>";

echo "</br>session code= " . $_SESSION['code'];
之前,

所以 $_SESSION['code']应输出更新src之后的值。
现在明白了,原来是先生成html, 再调用a.php.

论坛徽章:
52
码神
日期:2017-03-28 10:27:10综合交流区版块每日发帖之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-09-28 06:20:00综合交流区版块每日发帖之星
日期:2015-09-22 06:20:00每日论坛发贴之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-12 06:20:00综合交流区版块每日发帖之星
日期:2015-09-08 06:20:00综合交流区版块每日发帖之星
日期:2015-09-05 06:20:00综合交流区版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-09-01 10:41:53每日论坛发贴之星
日期:2015-10-11 06:20:00综合交流区版块每日发帖之星
日期:2015-10-12 06:20:00
6 [报告]
发表于 2010-01-25 21:39 |只看该作者
原帖由 liulihua_cu 于 2010-1-25 20:50 发表
非常感谢,我还以为
echo "";

echo "session code= " . $_SESSION['code'];
之前,

所以 $_SESSION['code']应输出更新src之后的值。
现在明白了,原来是先生成html, 再调用a.php.

解决就好啊

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
7 [报告]
发表于 2010-01-26 10:56 |只看该作者
其实PHP,JSP,ASP(NET)最后展现给用户的还是传统的HTML代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP