- 締切済み
<?php
<?php if(isset($_POST['name'])){ $name = htmlspecialchars($_POST['name']); if (empty($name)) { $message = '未入力があります'; } } if(isset($_POST['regist'])) { $regist = htmlspecialchars($_POST['regist']); if($message) { header('Location:regist2.php'); } } ?> <html> <form action="regist2.php" name="form" method="post"> <div align=left> 名前<input type="text" name="name" maxlength="16" istyle="1" format="M" mode="hiragana" style="-wap-input-format:"*<ja:h>"; -wap-input-format:*M;" /><br /> <input type="submit" name="regist" value="送信" /> </form> と携帯サイトを作成してるのですが、空白でもそのままregist2にいってしまい困っております。 空白の場合はsubmit押してもエラーを表示させたいのです 問題がなければ、そのままregist2.phpへいかせる方法はないでしょうか? ご教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
スーパーグローバル $_POST に処理したい値がセットされていないか、これが空である場合、真となるように条件を記述されてはいかがでしょうか。 if (!isset($_POST['name']) or empty($_POST['name'])) { /* エラーメッセージなどを設定する */ }
- magicalpass
- ベストアンサー率58% (378/648)
PHPソースはクライアントからのリクエストが掛った時点でサーバー上で動的HTMLに生成されてからクライアントに送られます。クライアントに送られたHTMLはただのHTMLなので、その時点では(Javascript等でも使わないかぎり)入力フォームのチェックも何も出来ません。 したがってソースの先頭に入力チェックの処理を書いても、それだけでは無意味です。 解決方法は2種類 (1)Javascript等のクライアントで動作する環境で入力チェックを行う。 (2)submit時の転送先を自分自身にして、その時のPOSTデータをチェックして、異常があればエラー表示を行い、正常な時はHTMLの送信を行う前にregist2に転送する。 (2)ならPHPだけで処理が組めます。(初回とそれ以降との切り分けが必要ですが)