【问题标题】:Can't redirect to another page in PHP无法重定向到 PHP 中的另一个页面
【发布时间】:2015-11-02 09:01:43
【问题描述】:

我正在使用 PHP 制作一个基本网站。 在这里,我的代码不起作用。我想将一个页面重定向到另一个页面。

<?php

$k = mysqli_connect("localhost","root","","ubm_2015");

if(!$k)
{
    echo "Koneksi Gagal <br>";
    echo mysqli_errno();
}
else
{   echo "Koneksi Berhasil";
}

$nama = $_POST['nama'];
$motor = $_POST['vhc'];
$hobi = $_POST['hobi'];

$query = "insert into data_mhs(nama,motor,hobi) values ('$nama','$motor','$hobi')";

mysqli_query($k,$query);

echo " Query Berhasil ";

header("Location : select.php");


?>

我使用header,但它不起作用。

在 PHP 中有什么重定向的技巧吗?

【问题讨论】:

  • 您可能无法设置标题,因为您使用 echo() 吐出了正文。顺便说一句,请始终提供您收到的实际结果(例如在浏览器中)。
  • 删除所有echo和print在echo之前的声明。这意味着在header之前不应该有任何输出,否则它不会重定向。
  • 不要在标题中添加空格,试试这个:header("Location:select.php");

标签: php mysql


【解决方案1】:
if(!$k)
{
    echo "Koneksi Gagal <br>";
    echo mysqli_errno();
}
else
{   echo "Koneksi Berhasil";
}

您的 if-else 中的任何一个都会运行并在响应中写入一些内容。

写完响应后不能重定向。

在 echo 或任何其他输出之前重定向集合 header("Location : select.php");

【讨论】:

    【解决方案2】:

    你不能在回显后使用页眉,因为页面已经由这些回显创建,它甚至应该返回以下错误:

    Warning : Cannot modify header information – headers already sent by (your file)
    

    您必须先删除所有回声,然后它应该像魅力一样工作

    您必须使用 echos 删除这些行:

    if(!$k)
    {
       // echo "Koneksi Gagal <br>";
       // echo mysqli_errno();
    }
    else
    { 
     //echo "Koneksi Berhasil";
    }
    
    
    // echo " Query Berhasil ";
    

    【讨论】:

    • 没有问题,别忘了把你的问题说成已解决:)
    【解决方案3】:

    尝试用这一行替换标题:

     echo "<META http-equiv='refresh' content='5;URL=select.php'>";
    

    【讨论】:

      【解决方案4】:

      你必须为此调用javascript函数,试试这个:-

      echo "<script>
      function myFunction() 
      {
      setTimeout(function(){ location.href='your file name'; }, 5000);
      }
      myFunction();
          </script>";
      

      你正在写“select.php”,但如果你在本地主机上工作,那么你必须这样写:-

      location.href='http://localhost/folder_name if you have/select.php'
      

      如果您在服务器上工作,那么它将是:-

      location.href='http://host ip/folder name/select.php'
      

      【讨论】:

        【解决方案5】:
        <?php
        
        $k = mysqli_connect("localhost","root","","ubm_2015");
        
        if(!$k)
        {
            echo "Koneksi Gagal <br>";
            echo mysqli_errno();
        }
        else
        {   echo "Koneksi Berhasil";
        }
        
        $nama = $_POST['nama'];
        $motor = $_POST['vhc'];
        $hobi = $_POST['hobi'];
        
        $query = "insert into data_mhs(nama,motor,hobi) values ('$nama','$motor','$hobi')";
        
        mysqli_query($k,$query);
        
        // echo " Query Berhasil ";
        
        header("Location : select.php");
        
        
        ?>
        

        那是因为你使用了回声。标头函数不会运行,因为 echo 首先运行。您不能同时执行带有标头的回显,因此首先运行回显并且标头将被忽略。如果你想在新文件中执行回显,也许你可以使用 _GET 函数。

        在实际文件中:

        header("Location : select.php?echo=Query%20Berhasil");
        

        在select.php中:

        $echo = $_GET['echo'];
        

        希望对你有帮助,否则作为元刷新,我建议改用 Header 功能。

        【讨论】:

          猜你喜欢
          • 2015-04-24
          • 2017-04-03
          • 1970-01-01
          • 1970-01-01
          • 2022-01-04
          • 1970-01-01
          • 2021-10-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多