register_global が無効になっているときに完璧に機能する単純なキャプチャがあります。これは PHP Manual 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>
add.php
<?PHP
session_start();
if(md5($_POST['captcha_num']) != $_SESSION['captcha_num']){
echo "Wrong captcha";
}else{
echo "Good Pass it";
}
?>