2

Firefox で php セッションに問題があります

Firefox を Firefox 15 に更新した後、キャプチャに問題が発生しました。すべてのブラウザでテストしたところ、完全に動作しました。

php ファイルの先頭に、次の行を追加します。

$_SESSION['captcha']=rand(1000,9999); 

ドキュメント内で、ランダム キャプチャを表示するために使用しますが、新しい値ではなく、常に以前のランダム値が表示されます。

- captcha.php :

<?php
    session_start();
    header('content-type:image/jpeg');
    $text=$_SESSION['captcha'];

    $font=34;
    $height=40;
    $width=100;
    $rand=rand(-7,7);
    $image=imagecreate($width,$height);
    imagecolorallocate($image,255,255,255);
    $text_color=imagecolorallocate($image,0,50,80);

    for($i=1;$i<=8;$i++){
        $x1=rand(1,100);
        $y1=rand(1,100);
        $x2=rand(2,100);
        $y2=rand(1,100);

        imageline($image,$x1,$y1,$x2,$y2,$text_color);
    }

    $fontfile='./angelicwar.ttf';
    imagettftext($image,$font,$rand,10,35,$text_color,$fontfile,$text);
    imagejpeg($image);
?>

<?php
    session_start();
    $_SESSION['captcha']=rand(1000,9999);
    echo "<img src='captcha.php'/>";
?>
4

2 に答える 2

2

スクリプトからランダム値を生成し、それをセッションに保存してから captcha.php を提供する代わりに、captcha.php でランダム値を生成し、画像に描画して、セッションに保存します。

このようにして、キャプチャ値は常に画像に表示されているものと一致します。

于 2012-09-07T00:28:32.513 に答える
0

これを試して

    if (!isset($_SESSION['captcha'])) {
       $_SESSION['captcha']=rand(1000,9999); 
    }
于 2012-09-07T00:19:40.997 に答える