PHP重定向循环问题

PHP重定向循环问题,php,pdo,Php,Pdo,当我提交分类搜索表单时,我希望它运行DisplayMealsCont.php中的php代码,然后返回main.php,其中包含更新的会话变量。但是当我尝试放入一个标题(“Location:../View/Main.php”);在DisplayMealsCont.php中,它陷入重定向循环 main.php <?php require_once("../Controller/DisplayMealsCont.php"); session_start(); $category = "Al

当我提交分类搜索表单时,我希望它运行DisplayMealsCont.php中的php代码,然后返回main.php,其中包含更新的会话变量。但是当我尝试放入一个标题(“Location:../View/Main.php”);在DisplayMealsCont.php中,它陷入重定向循环

main.php

<?php 
require_once("../Controller/DisplayMealsCont.php");
session_start();


$category = "All";
if(isset($_SESSION['table'])){
    $table = $_SESSION['table'];
}
if(isset($_SESSION['Category'])){
    $category = $_SESSION['Category'];
    if($category == "All"){
    $category = " ";
    }
} 
?>
<?php 

if (is_array($table)) {
foreach($table as $item) { 
?>

 <td align="centre"> <?= $item['Meal_Name'] ?> </td>
    <td align="centre"> <?= $item['Description'] ?> </td>
    <td align="centre"> <?= $item['Image'] ?> </td>
    <td align="centre"> <?= $item['Category'] ?> </td>
    <td align="centre"> <?= $item['Quantity'] ?> </td>
    <td align="centre"> &pound; <?= $item['Price'] ?> </td>
   <tr> 

 <?php
 }
 }

 ?>
</table>

    <form method="post" action="../Controller/DisplayMealsCont.php">
        Category: <br />
        <select name="Category">
        <option value="All">All</option>
            <option value="Main">Main</option>
            <option value="Drink">Drinks</option>
        </select> <br /> 
        <input type="submit" name="categorysubmit" value="Search" />
        </form>

&磅;
类别:
全部的 主要 饮料
DisplayMealModel.php

<?php
require_once("../Model/config.php");

class DisplayMeals 
{
public $dbConnection;

public function __construct(){

    $db= new database();
    $connect=$db->getdatabase();
    $this->dbConnection = $connect;

}

public function MainMeals($category){  
    $_SESSION['test'] = $category;
    $stmt = $this->dbConnection->prepare("SELECT * from meal WHERE Category LIKE '$category%'");
    $stmt->execute();
    return $stmt->fetchAll(PDO::FETCH_ASSOC);



}
?>
我不明白为什么其中的header()会导致重定向循环,但您是否尝试过添加die();在header()之后

这是一个很好的实践,如果它起作用,它可能会揭示问题的根源。除此之外,如果您发布了带有循环头的代码,这样我们就可以看到了,这会有所帮助。

我不明白为什么其中的头()会导致重定向循环,但您是否尝试过添加一个die();在header()之后


这是一个很好的实践,如果它起作用,它可能会揭示问题的根源。除此之外,如果您发布了带有循环标题的代码,这样我们就可以看到它了。

这意味着目标页面有另一个重定向,它有另一个重定向…您能告诉我重定向的位置吗,因为我只知道如何使用标题重定向。谢谢你,这取决于你把它放在哪里,但请记住,你把这个文件包括在你的主文件中,这样它就会一直重定向到自己。非常感谢你,你已经解决了我的问题。这意味着目标页面有另一个重定向,它有另一个重定向…你能告诉我重定向的位置吗,因为我只知道如何使用标题重定向。谢谢你,这取决于你把它放在哪里,但是请记住,你把这个文件包括在你的主文件中,这样它就会一直重定向到它自己;和退出();在标题之后,我仍然收到相同的问题。您如何知道这是一个重定向问题?你有什么错误?您可以在DisplayMealCont.php上设置一个会话变量,如果找到该会话变量,则可以在主页上的die()上设置一条显示消息,以查看标头是否实际工作。Header可能不起作用,因为“headers have been sent”错误消息可能不显示,这取决于您的服务器配置。当我在浏览器上打开main.php时,我得到“This webpage has a redirect loop”errorWait,我刚刚在main.php上实现了“require_once(../Controller/DisplayMealsCont.php”);”。假设displayMealsCont.php是一个没有类结构的文件,一旦您需要它,它就会执行其中的所有内容,不是吗?这就是导致重定向循环的原因。Main应该循环,即使您没有提交表单并直接访问它是的,我已经尝试过die();和退出();在标题之后,我仍然收到相同的问题。您如何知道这是一个重定向问题?你有什么错误?您可以在DisplayMealCont.php上设置一个会话变量,如果找到该会话变量,则可以在主页上的die()上设置一条显示消息,以查看标头是否实际工作。Header可能不起作用,因为“headers have been sent”错误消息可能不显示,这取决于您的服务器配置。当我在浏览器上打开main.php时,我得到“This webpage has a redirect loop”errorWait,我刚刚在main.php上实现了“require_once(../Controller/DisplayMealsCont.php”);”。假设displayMealsCont.php是一个没有类结构的文件,一旦您需要它,它就会执行其中的所有内容,不是吗?这就是导致重定向循环的原因。即使您没有提交表单并直接访问表单,Main也应该循环
<?php
require("../Model/DisplayMealModel.php");


$newMeal = new DisplayMeals();
if(!isset($category)){
$category = "main";
}
if(isset($_SESSION['Category'])){
$category = $_SESSION['Category'];
}
$table = $newMeal-> MainMeals($category);
$_SESSION['table'] = $table;



?>