PHP重定向标头不起作用

时间:2015-02-07 09:59:08

标签: php sql redirect header

这是我的代码:

<?php

$url = $_GET["id"];

$servername = "XXXX";
$username = "XXXX";
$password = "XXXX";
$dbname = "XXX";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

    $sql = "DELETE FROM Table WHERE id='".$url."'";

    if ($conn->query($sql) === TRUE) {
        echo 'Row deleted successfully';
    } else {
        echo "Error deleting record: " . $conn->error;
    }

    $conn->close();

    header('Location:index.php');
        exit;
    ?>

但是标头重定向不起作用...... 这是错误日志:

  

严格标准:header():依靠系统的时区设置是不安全的。您必需使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们在第24行的/homepages/5/d394578306/htdocs/XXXXX/XXXXXX/delete.php中选择'America / New_York'作为'EST / -5.0 / no DST'

     

警告:无法修改标题信息 - 已在/ homepages / 5 / d394578306 / htdocs / XXXXXX / XXXXXX中发送的标题(输出从/homepages/5/d394578306/htdocs/XXXXX/XXXXXX/delete.php:1开始)第24行的/delete.php

3 个答案:

答案 0 :(得分:1)

    <?php

删除PHP标记之前的空白 - 计为输出并停止header()调用。

您还要进行一些echo次呼叫,这两种呼叫都停止重定向工作,因为echo会将内容/标头输出到浏览器。

答案 1 :(得分:1)

在我看来,标题的时区警告会导致输出,从而使函数本身无法正常工作。试着这样做:

@header('Location:index.php')

@将禁止该特定函数调用的错误输出。

另外,正如Bulk正确指出的那样,你应该在第17行和第19行中禁用你的回音调用,或者在标题方法调用之下移动它们。

答案 2 :(得分:0)

根据时区错误,试试这个:

<?php
date_default_timezone_set("--HERE YOUR TIMEZONE---");
$url = $_GET["id"];

$servername = "XXXX";
$username = "XXXX";
$password = "XXXX";
$dbname = "XXX";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

    $sql = "DELETE FROM Table WHERE id='".$url."'";

    if ($conn->query($sql) === TRUE) {
        echo 'Row deleted successfully';
    } else {
        echo "Error deleting record: " . $conn->error;
    }

    $conn->close();

    header('Location:index.php');
        exit;
    ?>

现在更换“ - 你的时区---”。

您可以在此处找到您所在国家/地区的正确时区:http://php.net/manual/en/timezones.php