• 締切済み

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

  • DOSプロンプトでリダイレクションでファイルから入力した文字を表示したい

    標準入力から入力があるプログラムをDOSバッチでテストする為、 入力文字をファイルにしてリダイレクションで入力させています。 入力はされてそれなりに動くのですが、標準出力には入力させている文字列が表示されません。 具体的には、例えばprog.exeというプログラム内で、 printf("Input A =") ; gets(strA) ; printf("Input B =") ; gets(strB) ; となっていて、 入力用のテキストファイル(input.txt)に 1 2 と書込んで、 prog < input.txt とすると、 Input A =Input B= と表示されます。(strA,strBには各々1,2が入っています) テスト結果のログとしてできれば、人が入力する時と同様に Input A = 1 Input B = 2 と表示させたいのですが、何か方法がありますでしょうか? よろしくお願い致します。

  • 複数のファイルに同じ文字列を自動入力するバッチ

    複数のテキストファイルに同じ文字列を入力して保存するバッチを作成したいです。 テキストファイル1.txt テキストファイル2.txt テキストファイル3.txt 上記3つのテキストファイルがあったとしてバッチを起動すると 同じ文字列のデータを自動的に入力したい。 自動入力する文字列:あいうえお そもそも実現可能なのかもよくわかっていませんが ご教示いただけますと幸いです。

  • JAVA 文字列取得について

    たとえばxyz.txtというテキストファイルに記載されている文字列で「abcd」というものがあったとします。 そのabcdから3文字後ろからの文字列を10文字だけ取得する、 といった方法を教えていただけませんでしょうか。

  • PHPの入力チェック

    PHPの初心者です。初歩的な質問ですみません。 以下の機能を実現したいと考えています。 ・会員情報を入力する画面(aaa.php)で、各入力項目のチェックを行い、  正常なら確認画面(bbb.php)へ  異常値なら画面や入力内容はそのままの画面(aaa.php)でエラーメッセージを表示 ※チェックはaaa.php内で行う 「aaa.php」内でチェックするには、以下のように「form action="/aaa.php" 」と記載しないといけないと思いますが、 <form action="/aaa.php" method="post"> 氏名<input type="text" name="name" value="<?= $name ?>"><br> <input type="submit" name="action" value="登録"><br> </form> ↓ validateMaxLength などでチェック このチェック後にaaaから、bbb.phpに入力値を渡してコールする方法が分からないのです。

    • ベストアンサー
    • PHP
  • php

    テキストに入力した文字を送信後 data.txtの空のファイルに保存する方法はどういった文でかけますかね? phpです

    • ベストアンサー
    • PHP
  • TTLマクロで入力した文字を継ぎ足すには?

    TTLマクロで、表示用の変数用意して、strconcatで連結すればインプットした文字が 表示されるようになりましたが、 (1)ログファイルに保存する際にもインプットした文字+xxx.txtとして名前を指定したいです。   filename <インプットした文字> '__接続記録.txt'     ※ パソコンA_接続記録.txt としてファイルを作成する。        →strconcat input filename は誤り? (2)またインプットした文字がタイトルに表示させたいです。   settitle <インプットした文字>      ※ タイトルに'<インプットした文字>接続中' と表示させる。 すいませんが、ご教授頂きますよう、お願いいたします。

  • htmlの入力フォームからphpに値を渡しphpから画像ファイルが組み込まれたhtmlを生成する方法について

    イメージとしては脳内メーカーの様に、入力された文字列を画像に置き換えて、 生成されたhtmlに画像の組み込みを行いたいのですが上手くいきません。 基礎的な理解が低くて申し訳ないのですが、 やりたい事は以下のとおりです。 (1)「入力.html」ファイルのインプットフォームに文字情報を入力。 (2)入力した文字情報を「処理.php」ファイルに送信。 (3)「処理.php」ファイルで入力された文字列を画像ファイルに置き換える。⇒「画像.jpg」を生成。 (4)生成された「画像.jpg」を「出力.html」ファイルに組み込み、「出力.html」を表示。 (1)(2)(3)の工程までは作成できたのですが、生成した画像を別のhtmlファイルに組み込んで表示させる方法が分かりません。 <IMG src="~.php?val=XXX">といった形でhtmlに組み込むことができるのはわかっているのですが、、、、、 セッション変数を使わないとだめなのでしょうか?

    • 締切済み
    • PHP
  • 入力制御について

    こんにちは。 WEBで 入力項目(input type="text"・・・)、 登録ボタン(input type="submit"・・・)を表示する スクリプト(menu.php)があります。 登録ボタンを押すとname_check.phpにとぶように なります。 今、この入力ボタンで入力された文字が 好ましくない文字列の場合はエラー表示を作成しています。 好ましくない文字列はファイルに格納されています。 (例) 北朝鮮 SARS イラク なかた などです。 'SARS'や'北朝鮮'などを入力したときはチェックして エラー表示させることができたのですが、 たとえば入力項目が '話題の北朝鮮'や '北朝鮮生まれ'や 'あの北朝鮮に'など 入力された文字列に入力させたくない文字列が 入力された場合はチェックをどのようにしたらいいか わかりません。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 「~」だけ 文字化けする。

    PHP初心者です。 フォームから入力された文字をテキストファイルに保存して、その保存されたテキストファイルを別ページで表示しています。 簡単なメモ帳みたいな感じです。 フォーム画面と入力完了画面は EUC-JPで、 表示している画面はUTF-8です。 表示画面で <ul> <?php $file = "hoge.txt"; $txt = file($file); foreach ($txt as $value){ $value = mb_convert_encoding($value,"utf-8"); echo "<li>".$value."</li>"; } ?> </ul> と記述しています。 全ての文字化けを確認したはけではないのですが、記述内容の 「~」の文字だけ変な文字になっています。 ここに貼り付けても上手く表示されてないのですが「〜」となっています。 何か原因分かる方おられましたら、アドバイスお願いします。

    • ベストアンサー
    • PHP
  • formから入力された2バイト文字列を、別画面に渡したい

    formから入力された2バイト文字列を、別画面に渡したい 下記のように遷移元画面でformを作成しています。 <form style="margin:0px;padding:3px;" action="searchlist.php" method="GET"> <input type="text" name="SStr" size="20" value=""><br> <input type="submit" name="bottun1" value="検索"><br> </form> 遷移元ページのフォームに「あいう」と入力し、 その「あいう」を遷移先ページで検索条件として使用して検索結果を出力したいと思っています。 遷移先ページで、 $_GET[SStr] をデバッガーで参照してみると、「縺ゅ>縺」 と入ってしまっています。 実際にecho文で画面出力しても同様です。 「あいう」をurlencodeすると「%E3%81%82%E3%81%84%E3%81%86」となると思うのですが、 この「%E3%81%82%E3%81%84%E3%81%86」を遷移先のページに渡すにはどのようにしたら良いでしょうか。 要するに、formから入力された文字列を、入力画面内で加工してから別画面に渡すにはどうするか、 ということです。 $_GET では、勝手にURLエンコードされるのだと記述されているサイトを見たことがあるのですが、 適切にエンコードされていないように思えて、途方に暮れています。。。 ご回答よろしくお願いします!

    • ベストアンサー
    • PHP