- ベストアンサー
kcaptchaで画像が表示されないときの対処法
- kcaptchaという画像認証を導入しようとしていますが、画像が表示されずにエラーが出ています。原因としてはimgタグのソース部分に誤りがある可能性があります。
- 画像表示部分のソースコードは以下のようになります。
- <form action="index.php" method="post"> <p>Enter text shown below:</p> <p><img src="./kcaptcha.php?<?php echo session_name()?>=<?php echo session_id()?>"></p> <p><input type="text" name="keystring"></p> <p><input type="submit" value="Check"></p> </form> imgタグのソース部分がうまく機能していないため、修正が必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下の部分、 <img src="./index.php?... 1)htmlは関係なしで、単純にindex.phpを起動して画像は出ますよね。 2)html設置場所からindex.phpのパス関係を./部分で調整して画像が出ませんか。
その他の回答 (1)
- tumeno
- ベストアンサー率41% (5/12)
exampleで記述があるように、 ./kcaptcha.php 部分を ./index.php にしては! (パスも確認して)
お礼
tumenoさんご回答ありがとうございます。 >exampleで記述があるように こちらはform_example.phpでよろしかったでしょうか? 以下のように書き換えてテストしてみましたがだめでした。 ■form_example.php ----------------------------------------- <form action="./index.php" method="post"> <p>Enter text shown below:</p> <p><img src="./index.php?<?php echo session_name()?>=<?php echo session_id()?>"></p> <p><input type="text" name="keystring"></p> <p><input type="submit" value="Check"></p> </form> <?php if(count($_POST)>0){ if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){ echo "Correct"; }else{ echo "Wrong"; } } unset($_SESSION['captcha_keystring']); ?> ちなみに画像の部分のソースをfirebugで見ると <img src="index.php?PHPSESSID=乱数 という形でソースが生成されており、 サーバのセッション格納フォルダにも乱数のファイル (上のソースとはまた違う乱数) ファイルが生成されている状態です。 たびたび恐縮ですがまた何かお心あたりが ございましたら書き込みのほうをお願いいたします。
お礼
tumenoさんご回答ありがとうございます! >1)htmlは関係なしで、単純にindex.phpを起動して画像は出ますよね。 これがでないのですが原因が究明できずにいます>< 出ないということはパス以前の問題ですね。。。 index.phpにアクセスすると クローム,safariでは真っ白 firefoxでは「画像ファイル○○はこわれているため表示できませんでした」 operaでは画像 IEでは×印 画表示されます。 調査するとHeader(“~というのが原因だとあるのですが どう修正すればいいのかまだわかりません。 Headerの記述はkcaptcha.phpに以下のような記述があります。 header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', FALSE); header('Pragma: no-cache'); if(function_exists("imagejpeg")){ header("Content-Type: image/jpeg"); imagejpeg($img2, null, $jpeg_quality); }else if(function_exists("imagegif")){ header("Content-Type: image/gif"); imagegif($img2); }else if(function_exists("imagepng")){ header("Content-Type: image/x-png"); imagepng($img2); } このような状況です。 たびたび恐縮ですがまたなにかありましたら ご助言をお願いいたします。