• 締切済み

PHPでの入力文字チェック方法について

以下の1.~4.をPHPで実現したいのですが、 どのようにすれば良いかご教授願えないでしょうか? 自分で調べろ!と言われても仕方が無いのですが、 全くPHPをさわったことがない&納期が明日・明後日のレベルですので、 大変恐縮ですが、どなたかお力を貸して頂ければ幸甚です。 以上、よろしくお願い致します。 1.外部ファイル(pass.txt)に格納されている4文字(abcd)の文字列と、   WEB画面(input.php)のテキストボックスにユーザーが入力した4文字の   文字列が一致しているかチェック   ⇒一致していたら2へ。一致していなかったら4へ。 2.一致したらテキストファイル(log.txt)に日付(YYYYMMDD)と   IPを含んだログを吐き出す 3.吐き出しが終わったら、WEB画面(index.html)を開く 4.一致していなかったら、「入力文字列が間違っています」とアラートを   出し、「input.php」の画面から遷移させない。   ログの吐き出しは不要。

みんなの回答

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

検索すればすぐにわかると思いますが、ヘッダー関数でLocationさせているので、なにか出力があった場合はエラーが起きます。 改変せずにチェックすればエラーは起きません。 何か修正した場合はそこを削除してください。 まずは何も手を加えずに動作チェックしていますか? 多分どこかでprintしただけだと思います。 100%聞いてもスキルはあがりません。 少しは調べる努力をしましょう。

pureone
質問者

お礼

ご回答ありがとうございます。 もちろん、動作チェック&自身でも調べ、 色々調べてみたのですが、ダメでした。 これをメインで出来れば何の問題もないのですが、 開発とは全く関係のない別のメイン業務を毎日16~7時間ぐらい こなした後に、調べるのは結構 骨だったので甘えてしまったところは あるかもしれません。 私事ですみません。 とりあえず、これとは別に色々と要件が出てきた& 外注の許可がやっとでましたので、外注することにしました。 どうも、ありがとうございました。

すると、全ての回答が全文表示されます。
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

#### pass.txt #### aaaa bbbb abcd #### input.php #### <?PHP if ($_POST['txt']) { $flag = 0; $pass = file("pass.txt"); foreach ($pass as $p) { $p = chop($p); if ($p == $_POST['txt']) { $flag = 1; break; } } # HIT if ($flag) { # HITデータセット $data = date("Y-m-d H:i:s"); $data .= "\t"; $data .= $_SERVER['REMOTE_ADDR']; $data .= "\n"; $fp = fopen("log.txt","a+"); fwrite($fp,$data); fclose($fp); header("Location: ./index.html"); } } ?> <html> <head> </head> <body> <?PHP if ($_POST['txt'] and !$flag) { print "<p>入力文字列が間違っています</p>"; } ?> <form action="input.php" method="POST"> <input type="text" name="txt"> <input type="submit" value="PASS"> </form> </body> </html>

pureone
質問者

補足

ご回答ありがとうございます。 試してみたところ、 header("Location: ./index.html"); のところで以下のエラーメッセージが出ました。 Warning: Cannot modify header information - headers already sent by (output started at /home/input.php:10) in /home/input.php on line 24 申し訳ありませんが、引き続きご教授願えないでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A