检查$ _POST是否存在

时间:2010-08-16 20:15:49

标签: php

我正在尝试检查是否存在$ _POST,如果存在,则将其打印在另一个字符串中,否则,根本不打印。

类似的东西:

$fromPerson = '+from%3A'.$_POST['fromPerson'];

function fromPerson() {
    if !($_POST['fromPerson']) {
        print ''
    } else {
        print $fromPerson
    };
}

$newString = fromPerson();

任何帮助都会很棒!

13 个答案:

答案 0 :(得分:146)

if( isset($_POST['fromPerson']) )
{
     $fromPerson = '+from%3A'.$_POST['fromPerson'];
     echo $fromPerson;
}

答案 1 :(得分:53)

简单。您有两个选择:

1。检查是否有任何发布数据

//Note: This resolves as true even if all $_POST values are empty strings
if (!empty($_POST))
{
    // handle post data
    $fromPerson = '+from%3A'.$_POST['fromPerson'];
    echo $fromPerson;
}

(OR)

2。仅检查发布数据中是否有特定密钥

if (isset($_POST['fromPerson']) )
{
    $fromPerson = '+from%3A'.$_POST['fromPerson'];
    echo $fromPerson;
}

答案 2 :(得分:31)

每个人都说使用isset() - 这可能适合你。

但是,了解

之间的区别非常重要

$_POST['x'] = NULL;$_POST['x'] = '';

isset($_POST['x'])将在第一个示例中返回false,但会在第二个示例上返回true,即使您尝试打印其中任何一个,两者都会返回空值。< / p>

如果您的$_POST来自用户输入的字段/表单并且留空,我相信(虽然我不是100%肯定)该值将是“”但不是NULL。< / p>

即使这个假设不正确(如果我错了,请有人纠正我!)以上对于将来使用仍然有用。

答案 3 :(得分:28)

很惊讶它没有被提及

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['fromPerson'])){

答案 4 :(得分:19)

isset($_POST['fromPerson']) 

答案 5 :(得分:9)

  • 在这种情况下,使用方法isset是不合适的。

根据PHP文档:http://php.net/manual/en/function.array-key-exists.php
(参见示例#2 array_key_exists()vs isset()
方法array_key_exists用于检查数组中的密钥存在。

因此,问题中的代码可以更改如下:

function fromPerson() {
   if (array_key_exists('fromPerson', $_POST) == FALSE) {
        return '';
   } else {
        return '+from%3A'.$_POST['fromPerson'];
   };
}

$newString = fromPerson();


  • 检查数组$ _POST的存在是不必要的,因为它是自4.1.0版本以来的PHP环境全局变量(现在我们不符合旧版本的PHP)。

答案 6 :(得分:6)

实际上不鼓励使用所有方法,这是Netbeans 7.4中的警告,直接访问超全局变量肯定是一个好习惯,使用 filter 而不是

$fromPerson = filter_input(INPUT_POST, 'fromPerson', FILTER_DEFAULT);
if($fromPerson === NULL) { /*$fromPerson is not present*/ }
else{ /*present*/ }
var_dump($fromPerson);exit(0);

答案 7 :(得分:4)

尝试

if (isset($_POST['fromPerson']) && $_POST['fromPerson'] != "") {
    echo "Cool";
}

答案 8 :(得分:3)

试试isset ($_POST['fromPerson'])

答案 9 :(得分:3)

if (is_array($_POST) && array_key_exists('fromPerson', $_POST)) {
    echo 'blah' . $_POST['fromPerson'];
}

答案 10 :(得分:2)

if( isset($_POST['fromPerson']) )是对的。

你可以使用一个函数并返回,然后更好地指导echo。

答案 11 :(得分:1)

我想检查它是否被设置以及它是否在三元运算符中为空。

// POST variable check
$userID  = (isset( $_POST['userID'] )    && !empty( $_POST['userID'] ))   ? $_POST['userID']   :  null;
$line    = (isset( $_POST['line'] )      && !empty( $_POST['line'] ))     ? $_POST['line']     :  null;
$message = (isset( $_POST['message'] )   && !empty( $_POST['message'] ))  ? $_POST['message']  :  null;
$source  = (isset( $_POST['source'] )    && !empty( $_POST['source'] ))   ? $_POST['source']   :  null;
$version = (isset( $_POST['version'] )   && !empty( $_POST['version'] ))  ? $_POST['version']  :  null;
$release = (isset( $_POST['release'] )   && !empty( $_POST['release'] ))  ? $_POST['release']  :  null;

答案 12 :(得分:1)

即使该主题已经存在多年并且对我来说在Google中排名很高,我也想添加我的答案。

我最好的方法是尝试:

if(sizeof($_POST) !== 0){
// Code...
}

由于$_POST是一个数组,如果脚本加载并且$_POST变量中没有数据,则它将具有0的数组长度。可在IF语句中使用。

您可能还想知道这是否引发“未定义索引”错误,好像我们正在检查是否设置了$_POST…实际上$_POST始终存在,因此“未定义索引”仅当您尝试搜索不存在的$ _POST数组值时,才会出现错误。

$_POST本身总是存在,要么为空,要么为数组值。 $_POST['value']可能不存在,从而引发“未定义索引”错误。