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