0

我已经浏览了大约一百次,但找不到页面不会重定向的原因。我找不到任何可能缺少的空格或任何输出。谁能发现问题?

这是我的代码:

<?php
include_once('includes/sessions.php');
include_once('connections/localhost.php');
include_once('includes/functions.php');
include_once('includes/validations.php');
?>
<?php
$username = "";
if (isset($_POST['submit'])) {
  $required_fields = array("username", "password");
  validate_there($required_fields);
  if (empty($errors)) {
        $username = $_POST["username"];
        $password = $_POST["password"];
        $found_user = attempt_login($username, $password);
    if ($found_user) {
    $_SESSION["user_id"] = $found_user["user_id"];
    $_SESSION["username"] = $found_user["username"];
    redirect_to("index.php");     
    } else {
      $_SESSION["message"] = "Username/password not found.";
    }
  }
} else {
} 
?>

这是重定向的功能:

function redirect_to($new_location) {
      header("Location: " . $new_location);
      exit;
    }

以下是验证函数:

$errors = array();

function fieldname_is_text($fieldname) {
  $fieldname = str_replace("_", " ", $fieldname);
  $fieldname = ucfirst($fieldname);
  return $fieldname;
}


function has_presence($value) {
    return isset($value) && $value !== "";
}

function validate_there($required_fields) {
  global $errors;
  foreach($required_fields as $field) {
    $value = trim($_POST[$field]);
    if (!has_presence($value)) {
        $errors[$field] = fieldname_is_text($field) . " can't be blank";
    }
  }
}
4

2 回答 2

1

在调用标头函数之前,您很可能有任何输出(HTML 或错误消息)。在发送输出之前,应发送所有标头。

有些输出你看不到,但确实存在。如空格等。尝试删除

?>
<?php
于 2013-11-03T07:16:18.913 回答
0

尝试使用此功能进行重定向。

<?php
function redirect_to($new_location)
{
    ?>
<script type="text/javascript">
    window.location = '<?php echo $new_location;?>';
</script>
<?php
}

?>
于 2013-11-03T07:26:06.973 回答