エラーメッセージを次の画面に行かずに
申込みたいなボタンを押したら
エラー表示を入力している画面に
表示するにはどうしたら出来ますか?
https://trackings.post.japanpost.jp/delivery/delivery_request.do
まずHTMLで入力画面を作成。
そこからFORMでPOSTでPHPに
渡してエラーチェックをする。
※javascriptでのエラーチェックは行わない。
そしてエラーの場合はエラーメッセージを
HTML側に表示するのは出来ますか?
PHP側でlocationなどをして、別にエラーページを
作成するような処理はダメです。
Smartyを使用すると、URL欄にPHPという拡張子に
なるため、出来れば避けたい。
サーバ設定を変えてURLの表示を変えるとかはダメ。
他に方法はありますか??
ありましたら簡単なサンプルも教えて下さい。
少しずれた回答になりそうですが・・・。
まず、元のHTMLページにエラーメッセージを埋め込んでおきます。
しかし、表示しないようにしておきます。
フォームで受け取ったデータにエラーがある場合、locationで元のページに戻し、エラーメッセージを今度は表示するようにします。
これは、CSSをPHPによって生成すれば可能になると思います。
エラーを受け取っていない時はエラー表示を隠すCSSを生成。
エラーを受け取ったらそれを表示するCSSを生成。
ただし、この場合エラーメッセージは表示されるものの、すべての項目を再入力しなければいけなそうですが・・・。
もし、単に.phpを隠したいのであれば、
AddType application/x-httpd-php .php .do
などの設定をApacheに行えば出来たりしないかな、と想像・・・。
<?php //↓送信ボタンが押されたら、入力内容を評価 if (isset($_POST['send'])) { $err = array(); if (!$_POST['namae']) { $err['namae'] = '名前を入力して下さい'; } if (!$_POST['mail']) { $err['mail'] = 'メールアドレスを入力して下さい'; } if (!$err) { //エラーがなければ次の処理 /* (ここで何らかの処理をする) */ $flag_send = 1; //正常な処理が行われれば、フラグを立てる } } //ヘッダ出力 header("Content-Type: text/html; charset=(文字コード)"); header("Content-Language: ja"); echo '<html> <head> <title>申込フォーム</title> </head> <body> <h1>申込フォーム</h1> '; if (!isset($flag_send)) { //処理が完了されていなければ入力フォーム表示 echo '<form action="" method="post"> '; echo '<p>お名前'; //お名前のエラーがあれば表示 if ($err['namae']) { echo $err['namae'].'<br>'; } echo '<input type="text" name="namae" size="30" value="'.$_POST['namae'].'"> </p> '; echo '<p>E-mail'; //E-mailのエラーがあれば表示 if ($err['mail']) { echo $err['mail'].'<br>'; } echo '<input type="text" name="mail" size="30" value="'.$_POST['mail'].'"> </p> '; //送信ボタン(「name="send"」を仕込んでおく) echo '<p> <input type="submit" name="send" value="送信する"> </p> </form>'; } else { //処理が完了した場合の結果表示 echo '<p>お申込みありがとうございました</p>'; } echo ' </body> </html> '; ?>
でいかがでしょうか。
(Smarty用に適宜差し替えて下さい。あと、上記例ではセキュリティ関連のことは一切していないので、そのままでは使えないと思いますが。)
当然フォーム自体もPHPとなりますが、
拡張子を隠したいのなら、このファイルだけ任意のフォルダに入れて、そのフォルダに
AddType application/x-httpd-php .php .htm
と書いた.htaccessを置けば、「form.htm」といったファイル名でも動きます。
文脈から、「『JS使えない環境のユーザーのことを配慮して』エラーを出したい」という風に解釈したのですが、.htaccessも不可というのであれば、JavaScriptを使うしかないと思います。
なるほどw
CSSですか。
でも入力した項目を
再入力は避けたいですね。。。
Apacheの設定を変更するのはダメです。
すいません。