2010-11-24 8 views
4

私は複数のチェックボックスを投稿し、配列に入れています。例えば、 "tags []"アレイが設定されている場合、何かしますか?

投稿するときに、それらをカンマで区切ります。

フォーム上でNOタグがチェックされてから投稿された場​​合、スクリプトがそこにないものを黙示しようとするとエラーが表示されます。

私はこのようなものを使用して試してみました:

if (isset($_POST['tags'])){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
} 

が存在する場合、それを内破、その後、チェックするための最良の方法は何ですか?

isset、array_key_exists?動作するはず

答えて

6

あなたはこのような状況では、1行でそれを行うことができますissetarray_key_existはあなたに同じ結果を与えるだろうが、その後、あなたが$_POST['tags']が配列であるかどうかを確認することをお勧めします...

$tags = isset($_POST['tags']) ? implode(", ", noescape($_POST['tags'])) : null; 

または

$tags = (isset($_POST['tags']) && is_array($_POST['tags'])) ? implode(", ", noescape($_POST['tags'])) : null; 

あなたがここにテストすることができます。

<input type="hidden" name="tags[]" value="none" /> 
<input type="checkbox" name="tags[]" value="Tag 1" /> 
<input type="checkbox" name="tags[]" value="Tag 2" /> 
<input type="checkbox" name="tags[]" value="Tag 3" /> 

そして、デフォルト値を削除します。http://codepad.org/XoU4AdsJ

1
if (!empty($_POST['tags'])) { 
    $tags = implode(", ", noescape($_POST['tags'])); 
} 
2

:あなたの爆縮varは既存のアレイである場合、私はちょうど破前is_arrayを使用することになり

if (isset($_POST['tags']) && is_array($_POST['tags'])){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
} 
2
if(array_key_exists('tags',$_POST)) 
{ 
.................. 
} 
1

私は)(IS_ARRAYを使用)及び(カウントたい:

if (is_array($_POST['tags']) && count($_POST['tags'])>0){ 
    $tags = implode(", ", noescape($_POST['tags'])); 
} 
+0

'$ _POST ['tags']'が一日のうちに文字列になると、これがクラッシュし、 'count(string)'は '1'を返します。http://codepad.org/AVfZS3qO – Shikiryu

+0

あなたはそうです。私はちょうどis_array()を含めるように私の答えを修正しました。 –

1

を実際に、これを行うための簡単な方法は、このような何かをすることです。

明らかに、悪意のあるユーザーがデータなしで投稿をあなたのスクリプトに送ることを決めた場合、これは依然としてエラーの原因になります。

関連する問題