人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで、以下のURLのページの申込画面のように
エラーメッセージを次の画面に行かずに
申込みたいなボタンを押したら
エラー表示を入力している画面に
表示するにはどうしたら出来ますか?
https://trackings.post.japanpost.jp/delivery/delivery_request.do

まずHTMLで入力画面を作成。
そこからFORMでPOSTでPHPに
渡してエラーチェックをする。
※javascriptでのエラーチェックは行わない。

そしてエラーの場合はエラーメッセージを
HTML側に表示するのは出来ますか?

PHP側でlocationなどをして、別にエラーページを
作成するような処理はダメです。
Smartyを使用すると、URL欄にPHPという拡張子に
なるため、出来れば避けたい。
サーバ設定を変えてURLの表示を変えるとかはダメ。

他に方法はありますか??
ありましたら簡単なサンプルも教えて下さい。

●質問者: hopefully
●カテゴリ:就職・転職 ウェブ制作
✍キーワード:HTML JavaScript PHP Smarty URL
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● mlkc81
●35ポイント

少しずれた回答になりそうですが・・・。

まず、元のHTMLページにエラーメッセージを埋め込んでおきます。

しかし、表示しないようにしておきます。

フォームで受け取ったデータにエラーがある場合、locationで元のページに戻し、エラーメッセージを今度は表示するようにします。


これは、CSSをPHPによって生成すれば可能になると思います。

エラーを受け取っていない時はエラー表示を隠すCSSを生成。

エラーを受け取ったらそれを表示するCSSを生成。


ただし、この場合エラーメッセージは表示されるものの、すべての項目を再入力しなければいけなそうですが・・・。


もし、単に.phpを隠したいのであれば、

AddType application/x-httpd-php .php .do

などの設定をApacheに行えば出来たりしないかな、と想像・・・。

◎質問者からの返答

なるほどw

CSSですか。

でも入力した項目を

再入力は避けたいですね。。。

Apacheの設定を変更するのはダメです。

すいません。


2 ● chankaz
●35ポイント
<?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を使うしかないと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ