【问题标题】:How can I devote separated session for different pages?如何为不同的页面分配单独的会话?
【发布时间】:2016-06-24 06:26:19
【问题描述】:

我有以下生成验证码的脚本:

// captcha.php
session_start();
$captcha_token='';
for($i=1; $i<=5; $i++){$captcha_token .= rand(0,9).' ';}
$_SESSION['captcha'] = str_replace(" ","",$captcha_token);

$im = imagecreatetruecolor(110, 34);
$red = imagecolorallocate($im, 245, 245, 245);
imagefill($im, 0, 0, $red);
$text_color = imagecolorallocate($im, 80, 80, 80);
imagestring($im, 8, 15, 9, $captcha_token, $text_color);
header('Content-Type: image/jpeg');
imagejpeg($im);
imagedestroy($im);

我还有多个页面需要验证码。我对所有这些都使用captcha.php。像这样的:

// contact.php
<input name="captcha" type="text" />
<img  src="captcha.php" />

// resend_password.php
<input name="captcha" type="text" />
<img  src="captcha.php" />

// multiple_wrong_login.php
<input name="captcha" type="text" />
<img  src="captcha.php" />

一切都好。正如您所见,所有脚本只有一个会话$_SESSION['captcha']。当我打开contact.php 并紧接着resend_password.php 时,contact.php 中的 captcha 将无效。我该如何解决?我的意思是如何为不同的页面制作单独的验证码?

【问题讨论】:

  • 每个会话应该只覆盖最后一个,
  • @Dagon emm,你是什么意思“最后一个”
  • 您正在重用相同的代码,它写入相同的会话变量,所以最后设置\看到的值应该是正确的
  • @Dagon 是的,目前我的脚本如你所说。但我想为不同的页面分配不同的会话变量。其实我想要多个有效的验证码。
  • 如果它按原样工作,那么为什么

标签: php session captcha


【解决方案1】:

这是我的建议:

将变量解析为验证码脚本,如下所示:

<img  src="captcha.php?page=resend_password" />

然后在脚本中:

$_SESSION['captcha'][$_GET['page']] = str_replace(" ","",$captcha_token);

【讨论】:

  • 嗯..这还不错..!谢谢,点赞。但是您认为为不同页面设置单独的会话更好还是我应该为所有页面设置一个会话?您认为哪个更好?
  • 你认为上面的讨论是关于什么的?我显然认为这是毫无意义的,但你坚持这是你想做的……
  • 好吧 .. 看来你是对的,这样做毫无意义。我不会在此答案中遵循您的建议(也感谢您的建议)。无论如何,至少我知道如何如果我想要:-),我该怎么做
猜你喜欢
  • 2014-02-25
  • 2020-01-09
  • 1970-01-01
  • 2023-04-11
  • 2021-07-25
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 2011-08-17
相关资源
最近更新 更多