2017-04-20 14 views
0

私の最初のページには、ユーザーの誕生日の月と日の2つのボックスがあります。このページでは、両方のボックスに記入されていることを確認してください。私が今問題を抱えているのは、両方のボックスに値があっても毎回メッセージがポップアップするということです。各ボックスに値が入力されているかどうかを確認する方法

<?php 
$valuesRecieved = true; 

for($v = 0; $v < sizeof($_POST); $v++) 
{ 
    if(!(isset($_POST[$v])) 
    { 
     $valuesRecieved = false; 
     break; 
    } 
} 
if(!$valuesRecieved) 
{ 
    echo "You must enter a value for each box. Please click your browsers back button, and try again."; 
} 

?> 
+0

'$ allEntered'とは何ですか? –

+0

HTMLを送信しますか? –

+0

申し訳ありませんがすぐに2つのことに取り組んで、ちょうどそれを更新しました。 – Brit24

答えて

2

あなたの主な問題は、あなたが$allEntered代わりの$valuesReceivedの最終チェックを行うということであるように見える - あなたは$valuesReceived$allEnteredを変更した場合 - あなたは良いことがあります。

しかし、あなたはまた、次の点を考慮する必要があります

フォームのチェックボックスを数値的に名前が付けられ、これら2つの入力があなたの唯一のものでない限り、あなたのループが正常に動作しません。代わりにforeachループを使用する必要があります。

foreach($_POST as $key => $value) { 
    if(empty($value)){ 
     $valuesReceived = FALSE 
    } 
} 

さらに、クライアント側のコードを変更する人は、フォームから何かを削除してこのロジックを回避することができます。だから、すべてが満たされていることを確認したい場合は、明示的に名前をつける必要があります。

foreach(array("bday_month","bday_day") as $value){ 
    // the values in this ^array should correlate 
    // with the names of your form inputs 
     if(empty($_POST[$value])){ 
      $valuesRecieved = False 
     } 
    } 
+0

ありがとう、素晴らしい仕事! – Brit24

関連する問題