前提・実現したいこと
私は今オノマトペで検索するとそのオノマトペに対応した画像が出てくるというシステムを作っています。
しかし、次のバグに困っています。
phpのisset関数を使うとブラウザとteratermで違う結果が出ます。
具体的には、if分で条件にissetを使うと、ブラウザではtrueの結果が、teratermではfalseの結果が出ます。
システムの流れは、index2.htmlから送られてきたオノマトペをserch.phpで受け取るという形です。
teratermでphpコマンド使った結果(最後の行にfalseの部分でechoされたものが出力されています)
PHP Notice: Undefined variable: enterOnomatope in /home/sys/s216045/public_html/md_syn/serch.php on line 62 PHP Stack trace: PHP 1. {main}() /home/sys/s216045/public_html/md_syn/serch.php:0 を受け取りました <p>オノマトペがserch.phpに届きませんでした</p>
該当のソースコード
index2.htmlのフォーム部分
html
1 <form action="serch.php" method="post" type="text"> 2 <input type="text" name="onomatopeSerch" placeholder="オノマトペを入力"> 3 <input type="submit" name="serch" value="検索"> 4 </form>
serch.php前文は以下です
javascriptのちょっと下の、if (isset($enterOnomatope)) のif文が問題のif文です。ブラウザでは一行下の"ちゃんとオノマトペは届いてるよ"の文が画像のように出力されています。しかし、上のようにteratermではfalseの部分でechoされた"<p>オノマトペがserch.phpに届きませんでした</p>"が出力されています。
php
1<?php 2// 元々はindex.phpにあったコードをこちらに埋め込んでいることに注意! 3// カウント数取得関数 4if (isset($_POST["onomatopeSerch"])) { 5 $enterOnomatope = $_POST["onomatopeSerch"]; //変数にそのオノマトペを代入 6} 7function get_count($file) { //sectionタグからファイル名(拡張子なし)を引数にして送られてくる 8 // $res = $_POST["onomatopeSerch"]; 9 global $enterOnomatope; 10 mkdir("data/$enterOnomatope"); //オノマトペごとのdatファイル格納フォルダ作成 11 $filename = "data/$enterOnomatope/".$file.'.dat'; //カウント数が記入されているファイルのパスを代入 12 $fp = @fopen($filename, 'r'); //そのファイルを開く作業を変数に代入? 13 if ($fp) { 14 $vote = fgets($fp, 9182); //変数に前回までに押された回数を代入 15 } else { 16 touch("$filename"); 17 $vote = 0; //php部分で送られたファイル名のファイルがなかったら投票数は0 18 } 19 return $vote; 20} 21?> 22<!DOCTYPE html> 23<html lang="ja"> 24<head> 25 <meta charset="utf-8"> 26 <link rel="stylesheet" href="css/style.css"> 27 <meta name="viewport" content="width=device-width, initial-scale=1"> 28 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 29 <script> 30 $(function() { 31 allowAjax = true; 32 $('.btn_vote').click(function() { //class名は絶対これ 33 if (allowAjax) { 34 allowAjax = false; 35 $(this).toggleClass('on'); 36 var id = $(this).attr('id'); 37 $(this).hasClass('on') ? Vote(id, 'plus') : Vote(id, 'minus'); //vote関数に送ってる 38 } 39 }); 40 }); 41 function Vote(id, plus) { 42 cls = $('.' + id); 43 cls_num = Number(cls.html()); 44 count = plus == 'minus' ? cls_num - 1 : cls_num + 1; 45 $.post('vote.php', {'file': id, 'count': count}, function(data) { //postでvote.phpにたぶん送っている 46 if (data == 'success') cls.html(count); 47 setTimeout(function() { 48 allowAjax = true; 49 }, 1000); 50 }); 51 } 52</script> 53</head> 54<body> 55 <article> 56 <?php 57 // if (isset($_POST["onomatopeSerch"])) { 58 // $enterOnomatope = $_POST["onomatopeSerch"]; //変数にそのオノマトペを代入 59 // } 60 // global $enterOnomatope; 61 $aa = "を受け取りました"; 62 echo $enterOnomatope."$aa\n"; 63 if (isset($enterOnomatope)) { //オノマトペが届いてたら 64 echo "ちゃんとオノマトペは届いてるよ\n"; 65 $dir_s = "onomatopes/$enterOnomatope/"; //そのオノマトペのタイトルのフォルダの中身を示すパスを代入 66 $filelist = scandir($dir_s); //上記のフォルダの中身を代入、scandirでファイル名(ファイルのパスかも)を取得できる 67 $count = count($filelist); //そのフォルダに含まれるファイルの数を代入 68 $a = 0; 69 for ($j = 0; $j < $count; $j++) { //jpgファイルの数を知りたい 70 $file = pathinfo($filelist[$j]); //指定したフォルダに含まれるj番目のファイルの情報を代入 71 $file_ext = $file["extension"]; //そのファイルの拡張子を代入 72 if ($file_ext == "jpg") { 73 $a = $a + 1; //拡張子が"jpg"だったら1を足す 74 } else { 75 $a = $a; //そのまま 76 } 77 } //for分の終わり 78 echo "<p>拡張子がjpgのファイル数 == $a</p>"; 79 80 if (file_exists("onomatopes/$enterOnomatope")) { //入力されたオノマトペをフォルダ名にしてるフォルダがあれば && !(is_dir($file_path)) 81 82 for($i = 0; $i<$count; $i++) { //対象フォルダにあるファイルの数だけループ 83 $file = pathinfo($filelist[$i]); //指定したフォルダに含まれるi番目のファイルの情報を代入、こっちの方にも$filelistもってきたほうがいいのか 84 // $file_name=$file["basename"]; 85 $file_extension = $file["extension"]; //そのファイルの拡張子を代入 86 $file_path = "onomatopes/$enterOnomatope/$filelist[$i]"; //i番目のファイルのパスを代入 87 if ($file_extension == "jpg") { //拡張子がjpgだったら 88 echo "<section>"; 89 echo "<p><img src=\"$file_path\" width=\"300px\"></p>"; //i番目のファイルがjpgファイルだったら表示 90 echo "<div class=\"btn_area\">"; 91 echo "<h2>$enterOnomatope</h2>"; 92 echo "<p class=\"ico_heart count_".$i."\">"; //get_countに「いいね」の数が記入されているファイル名(拡張子抜き)を送信 93 get_count("count_$i"); //semi coronn 94 echo "</p>"; 95 echo "<p class=\"btn_vote\" id=\"count_$i\"></p>"; //JavaScript部分にidを送ってる? idはファイル名にも使用される 96 echo "</div>"; 97 echo "</section>"; 98 } 99 } //for分の終わり 100 101 } else { //該当する画像はありません 102 echo "<p>sorry,couldn't find you asked(there is no such directory. 103 so let's upload image with onomatope you entered!!)</p>\n"; 104 } 105 106 } else { 107 echo "<p>オノマトペがserch.phpに届きませんでした</p>\n"; 108 } 109 ?> 110 </article> 111 <a href="index2.html">return to index2.html</a> 112</body> 113</html> 114
補足情報
5.5.30がphpのバージョンです。
回答1件
あなたの回答
tips
プレビュー