- ベストアンサー
変数を入れないと永遠とfgetsが続く。
受け付けた変数の値からテキストを読み込むようなページを作っています。 http://sample.jp/index.php?id=20060620001 この要領ですが、これでは他人にid=の値に存在しない値を入力されると永遠にエラーが続いてしまいます。 私のPHPの文法が足りていないと思うのですが期待しない変数の値の場合エラーメッセージ等での対応は出来ないでしょうか? 永遠とその値を信じて頑張っているサーバーがかわいそうです。 回避策を教えてください!!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
<? $id = $_GET['id']; // $id ファイルがあれば真 if(file_exists($id)) { // ファイルopenに成功したら真 if($fp = fopen($id,'r+')) { flock($fp,LOCK_EX); while(!feof($fp)){ $line = fgets($fp); echo $line; } fclose($fp); } else echo "ファイルのオープンに失敗したよ"; } else echo "ファイルが見つからんよ"; ?> という感じはどうでしょう。 (全角スペースでインデントしているのでテストするときは注意してください)
その他の回答 (1)
なぜfgetsが出てくるのか良くわからないのですが、上記のようなパラメータを渡しているなら if (isset($_GET['id'])) { if ($_GET['id']の値チェック) { //期待しない値の場合 echo "Invalid Parameter"; } } else { echo "No Parameter"; } とかでいいんじゃないですか? GETパラメータの受け取りかたはわかっていますか?
補足
期待したものかどうか判断するための関数があったのですね。 ありがとうございます。 HPで日記を書いていましたがテキストデータとデザインを別けメンテナンスを高めたいとおもい、やってみたんです。 下記のように書いていたためidの値を故意に変えて入力されるとサーバーに負荷がかかっていました。 どんな状況でも$idというファイルを探してしまうためで対応策を考えていたところでした。 もし良かったら添削していただけたら幸いです。 <? $id = $_GET['id']; $fp=fopen($id,'r+'); flock($fp,LOCK_EX); while(!feof($fp)){ $line=fgets($fp); echo $line; } fclose($fp); ?>
お礼
動作しました! おかげでスッキリ寝~られます! ありがとうございました。