【電話番号欄が空白又は文字の羅列でも送信できる仕様】
↓
【空白又は数字と-のみだったら送信できる仕様】 に変更したいのです
===============================================
<?
if($form=="" || $form_name=="" || $form_mail=="" || $form_comment=="" || ■■■){
if($form=="1"){
if($form_name=="") {$form_name_errer="<BR>名前必須";}
if($form_mail=="") {$form_mail_errer="<BR>メールアドレス必須";}
if(preg_match("/[^\d\-]/",$_REQUEST['form_tel'])){$form_tel_errer="<BR>半角数字と-のみ入力して下さい";}
if($form_comment=="") {$form_comment_errer="<BR>コメント必須";}
}
?>
~~~~問合せページ ソース~~~~~
<input type="submit" name="submit" value="送信内容確認画面へ">
<?
}
if($form=="1" && $form_name!="" && $form_mail!="" && $form_comment!="" && ◆◆◆){
?>
~~~問合せ内容確認画面 ページソース~~~
===============================================
今回、6行目を追加しましたが、
submitを押すと、電話番号が文字の羅列でも問合せ確認画面へ飛んでしまいます。
■■■と◆◆◆の所への記入方法が解らないからです。
教えて下さい。
【1】■■■
変更前 if($form=="" || $form_name=="" || $form_mail=="" || $form_comment=="" || ■■■){ 修正後 if($form=="" || $form_name=="" || $form_mail=="" || $form_comment=="" || preg_match(("/[^\d\-]/", $_REQUEST['form_tel'])){
【2】◆◆◆
前半で空欄などのチェックを行っているので、もう一度確認する必要はないはずです
変更前 if($form=="1" && $form_name!="" && $form_mail!="" && $form_comment!="" && ◆◆◆){ 修正後 else {
あらためて確認する必要があるという場合は下記のような具合にエラーがあったかどうかでの判定をすると良いでしょう
変更前 if($form=="1" && $form_name!="" && $form_mail!="" && $form_comment!="" && ◆◆◆){ 修正後 if($form=="1" && $form_name_errer=="" && $form_mail_errer=="" && $form_tel_errer=="" && $form_comment_errer==""){
【3】気になった点
他の項目は変数に読み込んでから扱っていますが form_tel だけは$_REQUESTで直接読み取ろうとしています
既存のものを手っ取り早く改良したいということだと思いますがフォームの内容をいったん$form_nameなどに格納していることにも理由があるはず(セキュリティ、取り扱い安さなど)ですから、データ取得方法は統一しておいたほうが後々のためでしょう
preg_match の部分を以下のようにしてみてください。
preg_match(("/[^0-9\-]/", $_REQUEST['form_tel'])
■■■、◆◆◆の部分の書き方が解らないのです。
■■■は、
! preg_match(("/^[0-9\-]+$/", $_REQUEST['form_tel'])
◆◆◆は、
preg_match(("/^[0-9\-]+$/", $_REQUEST['form_tel'])
という感じ。
だと思うんだけど、質問にあげたコードが、
if($form=="" || ... if($form=="1"){
ってなってるのは、アップミス?
エラーが出てしまいます。
Parse error: syntax error, unexpected T_STRING in /home/*****.php on line **
【1】■■■
変更前 if($form=="" || $form_name=="" || $form_mail=="" || $form_comment=="" || ■■■){ 修正後 if($form=="" || $form_name=="" || $form_mail=="" || $form_comment=="" || preg_match(("/[^\d\-]/", $_REQUEST['form_tel'])){
【2】◆◆◆
前半で空欄などのチェックを行っているので、もう一度確認する必要はないはずです
変更前 if($form=="1" && $form_name!="" && $form_mail!="" && $form_comment!="" && ◆◆◆){ 修正後 else {
あらためて確認する必要があるという場合は下記のような具合にエラーがあったかどうかでの判定をすると良いでしょう
変更前 if($form=="1" && $form_name!="" && $form_mail!="" && $form_comment!="" && ◆◆◆){ 修正後 if($form=="1" && $form_name_errer=="" && $form_mail_errer=="" && $form_tel_errer=="" && $form_comment_errer==""){
【3】気になった点
他の項目は変数に読み込んでから扱っていますが form_tel だけは$_REQUESTで直接読み取ろうとしています
既存のものを手っ取り早く改良したいということだと思いますがフォームの内容をいったん$form_nameなどに格納していることにも理由があるはず(セキュリティ、取り扱い安さなど)ですから、データ取得方法は統一しておいたほうが後々のためでしょう
エラーが出てしまいます。
Parse error: syntax error, unexpected T_STRING in /home/*****.php on line **
PHPで実装すると、一度PHPに問い合わせない限り電話番号のチェックを行えません。
Javascriptと併用して他の質問者の方の方法も組み込むか
PHP側では実装しないというのも一つの方法です。
Javascriptだけでもある一定レベルの実用性をもってSPAMを排除可能です。
以下が参考になると思います。
電話番号のチェックはJavascriptでブラウザ側でやっては?
Javascriptを無視するスパム対策には以下の手法を採用しては?
>エラーが出てしまいます。
>Parse error: syntax error, unexpected T_STRING in /home/*****.php on line **
文法エラー(=記述ミス)が何行目で出ているのか判りませんが、回答文中のかっこの数が合って無かったのが原因であるとすれば下記のように訂正してください
if($form=="" || $form_name=="" || $form_mail=="" || $form_comment=="" || preg_match("/[^\d\-]/", $_REQUEST['form_tel'])){
エラーが出てしまいます。
Parse error: syntax error, unexpected T_STRING in /home/*****.php on line **