如果ANY $ _POST等于另一个$ _POST死('错误');?

时间:2010-08-26 18:33:42

标签: php javascript jquery

我想把这个表格改为:

如果任何$ _POST vars等于任何其他$ _POST vars则抛出错误。

如果它只是一些它不会是一个问题,但我有大约20左右 所以,如果我想这样做,我必须像

一样
    <?php 
    if($_POST['input1']==$_POST['input2'] || $_POST['input1']==$_POST['input3']){
die('whatever');
}

    ?>

但这不是很好的编码(而且需要永远) 我想到了阵列和不同的方式......

但我脑子里死了,所以我想我可以得到一些帮助.. 提前谢谢

ps在PHP(服务器端)这样做会很好,但Jquery总是一个选项。

8 个答案:

答案 0 :(得分:16)

使用array_unique()删除重复值并检查它是否仍等于您的数组:

if($_POST != array_unique($_POST))
    die("...");

答案 1 :(得分:2)

if($ _POST == array_unique($ _ POST)){}

答案 2 :(得分:1)

function testPost(){
foreach ($_POST as $keya=>$vala){
    foreach($_POST as $keyb=>$valb){
        if ($keya==$keyb){
            continue;
        } else {
            if ($vala == $valb){
                 return FALSE;
            }
        }
    }
}
return TRUE;
}

答案 3 :(得分:1)

这只是zebediah49's post的答案。更有效的实施方式是:

$post = array_value($_POST);
$count = count($post);
for ($i = 0; $i < $count; ++$i) {
    for ($j = $i + 1; $j < $count; ++$j) {
        if ($post[$i] == $post[$j]) {
            die();
        }
    }
}

这会保存所有多项检查。所以它导致O(2 * n)而不是O(n ^ 2)(如果我得到O的东西)。虽然我不知道额外的array_values会减慢多少。

答案 4 :(得分:0)

$postValues = array_values($_POST);

if (array_unique($postValues)) != $postValues) {
    die('error!');
}

不太好,但是

答案 5 :(得分:0)

我要说你必须在双循环中完成它;虽然它是O(n ^ 2),但在实践中它不会有问题

foreach($_POST as $keya=>$vala) {
    foreach($_POST as $keyb => $valb) {
        if($vala == $valb && $keya != $keyb) {
            die('whatever');
        }
    }
}

答案 6 :(得分:0)

你可以这样做:

$count_array = array_count_values($_POST);
foreach($_POST as $post) {
  if($count_array[$post] >1 ) {
    die();
 }
}

答案 7 :(得分:0)

这是我的最终代码......所以基本上我把我想要的那些放到数组中

积分将归@akellehe所有,因为他最接近我的最终结果....

效果很好

$titles=array();
        $num=1;
        while($num!=15){
        $set1='title'.$num;
        $set2=$_REQUEST["title$num"];
        $titles[$set1]=$set2;
        unset($set1);
        unset($set2);
        $num+=1;
        }
        foreach($titles as $d => $p){
            foreach($titles as $e =>$q){
            if($p==$q && $d!=$e){
            if(!empty($p)){
            $_SESSION['error']='Duplicates not allowed!';
            }
            }
            }
        }