2

我正在尝试根据他们检查的单选按钮将用户重定向到另一个网页。

以下是相关代码:

  <form action="sample.php" method="post">
          <input name="survey" type="radio" value="Yes" /> Yes
          </br>
          <input name="survey" type="radio" value="No"  /> No
  </form>

  <? 
    if ($_POST['survey'] == "Yes")
    {
        header('Location: http://localhost/survey.php');
    }
    else if ($_POST['survey'] == "No")
    {
        header('Location: http://localhost/survey.php');
    }

  ?>

出于某种原因,我的 if 语句中出现错误。那不承认“调查”是一个有效的索引。我如何未能将我的表单链接到 php 代码?

4

5 回答 5

2

您的警告是由于当您使用GET(正常请求)加载页面时$_POST['survey']未设置。

isset($_POST['survey'] ) &&您可以通过在每次使用它之前添加一个来更改您的条件,或者您可以将整个代码放在一个块中,以检查是否发布了如下帖子:

if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
    if ($_POST['survey'] == "Yes")
    {
        header('Location: http://localhost/survey.php');
    }
    else if ($_POST['survey'] == "No")
    {
        header('Location: http://localhost/survey.php');
    }
}
else
{
  // output html
}

header无论哪种方式,您都必须将其放在您的 html 前面,因为如果标头已经发送(内容已经输出到浏览器),您将无法使用。

于 2012-11-21T00:58:02.300 回答
0

想想表单是如何工作的:

第一次访问页面时,提交表单。然而,你if/else的表现就好像它是一样的。这就是导致错误的原因 -$_POST['survey']第一次不存在。

正确编写脚本 -在呈现 HTML 之前进行所有潜在的表单处理:

<?php
if (isset($_POST['submit'])) {
    // handle the form
}
?>

<!doctype html>
<html>
    <head>
        <title>Blah</title>
    </head>

    <body>
        <!-- code -->
    </body>
</html>

这将允许您检查您是否已将表单提交给自己,并可能使用 aheader()来重定向用户,而不会遇到那些讨厌的“标头已发送”错误。

于 2012-11-21T00:58:14.380 回答
0

尝试一个简单的 print_r() 语句来查看 $_POST 是否有任何内容。把它放在页面顶部:

print_r($_POST);

此外,请确保您正在通过表单加载结果页面。如果您只是键入页面的 URL,它将不会发送任何 POST 数据。

于 2012-11-21T00:58:18.507 回答
0

第一次加载文件 sample.php 时没有 POST 数据,因此没有索引“调查”。

您需要将其嵌套在另一个 if 语句中或对其进行如下修改:

  <form action="sample.php" method="post">
          <input name="survey" type="radio" value="Yes" /> Yes
          </br>
          <input name="survey" type="radio" value="No"  /> No
  </form>

  <? 
    if (isset($_POST) && $_POST['survey'] == "Yes")
    {
        header('Location: http://localhost/survey.php');
    }
    else if (isset($_POST) && $_POST['survey'] == "No")
    {
        header('Location: http://localhost/survey.php');
    }

  ?>
于 2012-11-21T00:58:35.607 回答
0

我正在使用不同的 php 文件进行检查。

<html>
<body>
<form action="another.php" method="POST">
  <label>You are: </label> Male <input type="radio" name="male">  Female     <input type="radio" name="female"><br/><br/>
    <input type="submit" name="submit" value="GO">
</body>
</html>

*****另一个.php******

<?php
if (isset($_POST['submit'])) 
{
    if(empty($_POST['male']) && empty($_POST['female'])) 
    {echo "select gender";}
    elseif (empty($_POST['female'])) //means Male is checked
     {
        $gend="Male";
          echo $gend;
    }
    elseif(empty($_POST['male'])) //Means Female is checked
    { 
       $gend="Female";
          echo $gend; 
    }
    elseif(empty($_POST['male']) || empty($_POST['female'])== false) //Not required if you can disable one when another is checked
        {echo"please select only one";}
}
?>
于 2017-02-13T07:48:04.887 回答