通过php生成验证码,然后用img标签输出。
请问,为什么有session_start()的话,onclick事件这样写,点击就会有刷新验证码的效果?(会出现新的验证码)没有session会话,点击无效。
html代码
<img src="verifyCode.php" onclick="this.src='verifyCode.php'"/>
php
//省略验证码生成代码... imagepng($image);//输出图片 session_start();//开始会话
认证0级讲师
onclick="this.src='verifyCode.php?id='+Math_random()"/>これで十分です。画像に乱数を追加すると、毎回異なり、更新できます
このコードはイメージが作成される前の session_start() ですか? 以前であれば、通常、キャンバスを作成する際に $_SESSION に検証情報を注入する必要がありますが、セッションが開かれていないために注入が失敗し、検証コードイメージの生成が終了してしまう可能性があります。
セッションを使用してグラフィック検証コードを検証する 一般原則は、まず現在の検証コード a をセッションに保存し、次に a を使用してグラフィック検証コードを生成し、それをクライアントに返します。 クライアントは検証コード a をサーバーに入力し、サーバーは現在のセッションに保存されているデータに基づいてそれを検証します。
セッションが有効になっていない状態でこの方法を使用すると、認証コードaをセッションに保存したり置き換えたりすることができず、当然エラーが発生します。 (注: 画像の出力はセッションのアクティブ化とは何の関係もありません)
onclick="this.src='verifyCode.php?id='+Math_random()"/>
これで十分です。画像に乱数を追加すると、毎回異なり、更新できます
このコードはイメージが作成される前の session_start() ですか?
以前であれば、通常、キャンバスを作成する際に $_SESSION に検証情報を注入する必要がありますが、セッションが開かれていないために注入が失敗し、検証コードイメージの生成が終了してしまう可能性があります。
セッションを使用してグラフィック検証コードを検証する 一般原則は、まず現在の検証コード a をセッションに保存し、次に a を使用してグラフィック検証コードを生成し、それをクライアントに返します。 クライアントは検証コード a をサーバーに入力し、サーバーは現在のセッションに保存されているデータに基づいてそれを検証します。
セッションが有効になっていない状態でこの方法を使用すると、認証コードaをセッションに保存したり置き換えたりすることができず、当然エラーが発生します。
(注: 画像の出力はセッションのアクティブ化とは何の関係もありません)