PHP标头不重定向

时间:2011-06-18 14:54:52

标签: php header

我的标题不会重定向。代码执行后,它只是空白,不执行重定向。文件中没有空格。除了重定向之外,代码完全正确。

此代码由表单提交调用。

if(!empty($_POST['addSubscriber'])){
  $name = $_POST['name'];
  $email = $_POST['email'];
  if(!empty($name) && !empty($email) && eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email) != FALSE){
    $conn = connect();
    $sql = "SELECT id FROM subscribers WHERE email=?";
    if($stmt = $conn->prepare($sql)){
      $stmt->bind_param("s", $email);
      $stmt->execute();
      if($stmt->fetch()){
        header("Location: http://bcp350.org.uk/index.php?message=1");
      } else {
        $password = md5(uniqid());
        $sql2 = "INSERT INTO subscribers(name, email, password) VALUES(?, ?, '$password')";
        if($stmt2 = $conn->prepare($sql2)){
          $stmt2->bind_param("ss", $name, $email);
          $stmt2->execute();
          if($stmt2->affected_rows == 1)
            header("Location: http://bcp350.org.uk/index.php?message=1");
        }
      }
    }
  } else {
    header("Location: urlnotallowedbecauseofstackoverflowlimit");
  }
}

3 个答案:

答案 0 :(得分:8)

根据header的PHP文档:

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。使用include()或require(),函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题

您确定在致电header之前没有向该页面发送输出吗?

答案 1 :(得分:3)

如果您的代码中出现以下任何情况,则会绕过对header()的所有来电:

  1. $ _ POST ['addSubscriber']为空
  2. $ conn-> prepare($ sql)返回falsy
  3. $ conn-> prepare($ sql2)返回falsy
  4. $ stmt2-> affected_rows与1
  5. 无法比较

    您需要添加一些调试并找出其中的哪些正在发生。

答案 2 :(得分:-1)

在php页面的最开头使用此代码

<?php

ob_start(); ?&GT;