gpt4 book ai didi

php - 如果启用了 register_global 怎么办

转载 作者:可可西里 更新时间:2023-11-01 01:06:10 26 4
gpt4 key购买 nike

我有一个简单的验证码,当 register_global 被禁用时它可以完美运行,根据 PHP 手册 Using Register Globals 这是正确的

但有时我转移到许多主机,它们默认启用全局注册,所以我的验证码停止工作,即使输入正确,也总是给出错误的验证码。

我的问题

为什么在启用和禁用 register_global 时都不起作用?

代码

验证码.php

<?PHP
session_start();
$digits_num=5;
$x_pos=25;
$y_pos=6;
$font_size=5;
function random_num($n){
$start_num = "1".str_repeat("0", $n-1);;
$end_num = str_repeat("9", $n);
return rand($start_num, $end_num);
}
$text = random_num($digits_num);
$_SESSION["captcha_num"] = md5($text);
$captcha = imagecreatefrompng("./images/captcha.png");
$font_color['black']=imagecolorallocate($captcha, 0, 0, 0);
$font_color['white']=imagecolorallocate($captcha, 80, 73, 20);
imagestring($captcha, $font_size, $x_pos, $y_pos, $text, $font_color['white']);
header("Content-type: image/png");
imagepng($captcha);
?>

表格

<form name="frm" method="post" action="add.php">
<img src="captcha.php">
<input type="text" name="captcha_num" id="captcha_num" >
<input type="submit" name="submit" id="submit" value="submit">
</form>

添加.php

<?PHP
session_start();
if(md5($_POST['captcha_num']) != $_SESSION['captcha_num']){
echo "Wrong captcha";
}else{
echo "Good Pass it";
}
?>

最佳答案

从您引用的手册页:

This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0
(...)
Perhaps the most controversial change in PHP is when the default value for the PHP directive register_globals went from ON to OFF in PHP » 4.2.0.

换句话说:将其关闭

如何关闭它?

选项 1:使用 ini_set

将这段代码放在你的代码之上(或者如果你有的话,放在引导文件中)

ini_set('register_globals', 'Off')

选项 2:使用 htaccess

在您网站的根目录下创建一个.htaccess 文件并向其中添加以下代码:

php_flag register_globals Off

如果你使用了糟糕的技术,不要问自己为什么脚本是错误的,问问自己如何关闭/避免使用糟糕的技术。

关于php - 如果启用了 register_global 怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10465921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com