【问题标题】:Php Redirect to a webpage (html)Php 重定向到网页 (html)
【发布时间】:2014-03-22 16:49:25
【问题描述】:

我已经看到在 php 中使用 header 来重定向到一个页面。

我使用了下面代码中的方法和代码下面给出的重定向错误。

我需要知道代码出了什么问题。

这里是代码(php):

<?php
/**
 * Created by PhpStorm.
 * User: Priyabrata
 * Date: 3/18/14
 * Time: 8:58 PM
 */


function connect_to_db($uid, $pass){
    $con=mysqli_connect("localhost", "root", "12345", "MyDB");
    if (mysqli_connect_errno()){
        echo "Failed to establish link!!";
    }else{
        echo mysqli_connect_error();
    }
    $result=mysqli_query($con, "SELECT `pwd` from `login_table` where `uid` = "."'".$uid."'");
    if (!$result){
        echo "Error!!";
        exit();
    }
    while($xx = mysqli_fetch_array($result)){
        if ($xx['pwd'] == hash("MD5", $pass)){
            header("location:../Html/Login-Existing-Users1_success.htm");
            exit();
        }else{
            echo "Invalid Login Credentials!!";
            exit();
        }
    }
    mysqli_close($con);
}

function validate_credentials(){
    if ((isset($_POST["username"]))&&(isset($_POST["password"]))){
        $uid = $_POST["username"];
        $pwd = $_POST["password"];
        if (($uid == "")||($pwd == "")){
            echo "Please enter User name and password";
        }else{
            //Check user name and password
            connect_to_db($uid, $pwd);
        }
    }else{
        echo "Please enter User name and password";
    }
}

validate_credentials();

这是我得到的错误,而不是上传到服务器时的重定向:

Warning: Cannot modify header information - headers already sent by (output started at /home/opticfhb/public_html/helpvssupport.net/login.php:19) in /home/opticfhb/public_html/helpvssupport.net/login.php on line 27

附加信息:这在我的本地机器上完美运行,并在服务器中产生了问题。

【问题讨论】:

  • 看起来这一行正在创建问题if (mysqli_connect_errno()){ echo "Failed to establish link!!"; }else{ echo mysqli_connect_error(); } 检查逻辑,因为即使没有错误它也会尝试回显

标签: php url redirect


【解决方案1】:

在您回显任何输出后,您不能再调用header()。 HTTP 请求包含标头信息和数据。任何输出都是数据的一部分,并且数据是在所有标头都已发送之后出现的。

PHP 有一个名为headers_sent 的函数来检查标头是否已经发送。您可能会考虑编写一个函数来发出 Location 标头(如果没有的话),或者回显一些简单的重定向 HTML(如果有的话)——也许通过在 &lt;head&gt; 中包含这个标签:

<meta http-equiv="refresh" content="0;http://www.website.com/redirect/url" />

【讨论】:

  • 如果您想在打印数据后重定向(即使它只有 1 个字符),您将不得不使用非 PHP 解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 2021-05-02
  • 2017-09-13
  • 1970-01-01
  • 2015-02-17
  • 2015-07-31
  • 2016-07-17
相关资源
最近更新 更多