PHP $ _POST因看不见的原因而返回null值

时间:2012-10-16 02:20:27

标签: php html

我的问题是我有一个PHP $_POST返回null或空值,我个人认为我的代码没有任何错误(但我知道它在那里)我不能因为我按时间安排,所以真的离它几个小时。所以,我希望有人可以帮助我;)

这就是我所拥有的,基本上:

<table border="0" align="center">
<tr>
    <td>
        <div id="lvl3">Project Name:</div>
    </td>
    <td>
        <input type="text" name="prjname" maxlength="250">
    </td>
</tr>
<tr>
    <td colspan="2" align="center">
        <input type="submit" value="Submit" name="prjsubmitname">
        <input type="button" value="Cancel" onclick="$('#popupoverlay').hide(); $('#prjpopupbox').hide(); $('#prjname').hide(); $('#prjdescription').hide(); $('#prjversion').hide(); $('#prjrelease').hide();">
    </td>
</tr>

这是我编辑项目名称的表 - 我认为这里的文本框输入很重要。

接下来我有我的PHP:

//Did the user change the Project Name
if (isset($_POST['prjsubmitname']))
{
//Is the input empty
if (!trim($_POST['prjname']))
{
    //Input is empty
    echo('<script>senderror("Please enter a valid Project Name empty");</script>');
} else {

    //Input isnt empty, assign variables
    $url = geturlext();
    $prjname = mysql_real_escape_string(trim($_POST['prjname']));

    //Is input invalid
    if (strcasecmp($prjname, "main") == 0 | $prjname == "404")
    {
        //Input is invalid
        echo('<script>senderror("Please enter a valid Project Name invalid");</script>');
    } else {

        //Input is valid, connect to database
        dbconnect();

        $checkquery = mysql_query("SELECT * FROM projects WHERE name = '$prjname'") or die(mysql_error());
        $check = mysql_num_rows($checkquery);

        //Does Project Name already exist
        if ($check == 0)
        {
            //No it does not
            $updatequery = mysql_query("UPDATE projects SET name = '$prjname' WHERE name = '$url'") or die(mysql_error());

            echo("<script>location.href='index.php?page=" . $prjname . "'</script>");
        } else {
            //Yes it does
            echo('<script>senderror("That Project Name already exists");</script>');
        }
    }
}
}

这是我得到问题的地方;无论我在文本框中输入什么内容,我总是会收到“输入为空”的错误消息。我打印了$ _POST ['prjname']的输出,它确实是空的。

现在奇怪的部分是,我有完全相同的(至少我认为)更改项目描述的设置,它完美无缺。为了便于比较,我在下面列出了项目描述编辑器的相同部分。

表格:

<table border="0" align="center">
<tr>
    <td>
        <div id="lvl3">Project Description:</div>
    </td>
    <td>
        <textarea type="text" name="prjdescription" maxlength="750" style="width:300px; height:100px; resize:none;"></textarea>
    </td>
</tr>
<tr>
    <td colspan="2" align="center">
        <input type="submit" value="Submit" name="prjsubmitdescription">
        <input type="button" value="Cancel" onclick="$('#popupoverlay').hide(); $('#prjpopupbox').hide(); $('#prjname').hide(); $('#prjdescription').hide(); $('#prjversion').hide(); $('#prjrelease').hide();">
    </td>
</tr>

PHP:

//Did the user change the Project Description
if (isset($_POST['prjsubmitdescription'])) 
{
//Is the input empty
if (!trim($_POST['prjdescription']))
{
    //Input is empty
    echo('<script>senderror("Please enter a valid Project Description");</script>');
} else {

    //Input isnt empty, do stuff
    $url = geturlext();
    $prjdescription = mysql_real_escape_string(trim($_POST['prjdescription']));

    //Connect and change description
    dbconnect();

    $updatequery = mysql_query("UPDATE projects SET description = '$prjdescription' WHERE name = '$url'") or die(mysql_error());
    echo("<script>location.href='index.php?page=" . $url . "'</script>");
}
}

为了澄清,两个表都在相同的表单标记中,并且PHP紧挨着彼此。

Firebug没有错误,事实上Firebug没有给我任何东西。除此之外,我确信这是一个我忽略的小错字。

2 个答案:

答案 0 :(得分:1)

我找到了解决这个问题的方法:

在项目名称编辑PHP中重命名变量'$ prjname'修复了这个问题。

似乎拥有一个与$ _POST(['prjname'])同名的变量($ prjname)会返回一个空字符串或空字符串。不知道为什么。

感谢那些试图提供帮助的人

编辑:实际上,如果我只更改变量名称($ prjname),我会再次收到错误 - 它只会在我更改$ _POST名称时修复...奇数。

答案 1 :(得分:-1)

查看上述问题的描述,我们可以得出结论,表单元素必须封装在表单标记中,然后只有表单数据才会发布到服务器。

因此,作为问题的解决方案,您需要在表单标记中定义输入元素。