HTTP重定向/标头...何时调用它

时间:2013-07-31 13:40:31

标签: php

在我的网站上,在每个php页面的顶部,我有一个

include_once'head.php';

此文件包含HTML。

在我的文件'authenticate.php'中,我想在登录索引后进行重定向。

我的代码如下: 标题('位置:http://www.URLHERE.com/index.php');

但是在提交后,页面会刷新。它没有重定向。重定向在我的localhost dev服务器上正常工作,但是一旦我在线上传它,它就停止了工作。

这是因为我的标题包含HTML,它在header()函数之前调用吗?请注意,'header.php'文件中的所有HTML都在HEREDOC标记中。

这是我的代码:

<?php // login.php
include_once 'header.php';
include_once 'functions.php';
require_once 'login_users.php';

$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to database:" . mysql_error());
mysql_select_db($db_database)
    or die("Unable to find database:" . mysql_error());

if (isset($_POST['username']) &&
    isset($_POST['pw_temp']))
{
    $username = sanitizeString($_POST['username']);
    $pw_temp = sanitizeString($_POST['pw_temp']);
    $pw_temp = md5($pw_temp);
    $query = "SELECT username,password FROM users WHERE username='$username' AND password='$pw_temp'";
    if (mysql_num_rows(mysql_query($query)) == 0)
    {
    die("Wrong info");
    }
    else
    {
            $_SESSION['username'] = $username;
            $_SESSION['password'] = $pw_temp;
            $_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR'];
            header('Location: http://www.URLHERE.com/index.php');
        }       
}

...more code down here

3 个答案:

答案 0 :(得分:0)

  

在我的网站上,在每个php页面的顶部,我有一个include_once 'header.php';

这就是你做错了。

它必须是什么

<?php // login.php
include_once 'functions.php';
require_once 'login_users.php';

// some code

include 'output.php'; // ONLY HERE output starts.

Here you can see a concise but complete example with some explanations and reasoning。但是摆脱header.php并开始使用模板的主要原因是你提出的问题。

答案 1 :(得分:-1)

也许是因为您在设置标题后执行的代码?在该行之后添加dieheader未停止执行!)。

答案 2 :(得分:-1)

您可以在include中执行else,从顶部文件行中删除include_once 'header.php';,如下所示:

if (isset($_POST['username']) &&
    isset($_POST['pw_temp']))
{
    $username = sanitizeString($_POST['username']);
    $pw_temp = sanitizeString($_POST['pw_temp']);
    $pw_temp = md5($pw_temp);
    $query = "SELECT username,password FROM users WHERE username='$username' AND password='$pw_temp'";
    if (mysql_num_rows(mysql_query($query)) == 0)
    {
    die("Wrong info");
    }
    else
    {
            $_SESSION['username'] = $username;
            $_SESSION['password'] = $pw_temp;
            $_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR'];
            header('Location: http://www.URLHERE.com/index.php');
        }       
}
else
{
include_once 'header.php';
//..... now your code!!!!!

}