PHP标头位置无法正常工作

时间:2013-09-12 02:37:34

标签: php html forms radio-button

有人能指出我为什么以下不起作用?即使我选择不同的单选按钮,它也只会重定向到第一个位置。

PHP:

if (isset($_POST['submit'])) {

    if (!empty($_POST['electronics'])) {

        if ($_POST['electronics'] = "camera") {
            header("location: camera.php");
            exit();
        }
        if ($_POST['electronics'] = "cell") {
            header("location: cellphones.php");
            exit();
        }
        if ($_POST['electronics'] = "cable") {
            header("location: cables.php");
            exit();
        }
        if ($_POST['electronics'] = "tv") {
            header("location: tv.php");
            exit();
        }
    }

...

HTML:

<form action="" method="post">
    <input type="radio"  name="electronics" value="cell"/>
    <input type="radio"  name="electronics" value="camera"/>
    <input type="radio"  name="electronics" value="cable"/>
    <input type="radio"  name="electronics" value="tv"/>
    <input type="submit" name="submit">
</form>

3 个答案:

答案 0 :(得分:5)

您必须使用比较运算符==而不是=

if (isset($_POST['submit'])) {

    if (!empty($_POST['electronics'])) {

        if ($_POST['electronics'] == "camera") {
            header("location: camera.php");
        }
        else if ($_POST['electronics'] == "cell") {
            header("location: cellphones.php");
        }
        else if ($_POST['electronics'] == "cable") {
            header("location: cables.php");
        }
        else if ($_POST['electronics'] == "tv") {
            header("location: tv.php");
        }
    }

...

此外,exit()也是多余的,因为您已经重定向到另一个页面。

答案 1 :(得分:2)

=是作业。 ==是平等的。你把两者弄糊涂了。

答案 2 :(得分:1)

要添加其他答案,当您使用赋值运算符(=)而不是比较运算符(==或===)时,赋值将从右向左传递。

以下是真的:

"camera" == $_POST['electronics'] = "camera"

在您的情况下,哪个足以满足if

这种行为可以让您使用一个值进行多次分配。

例如:

$foo = $bar = 10;

$foo$bar均已分配10。