2016-04-08 38 views
1

カテゴリ検索フォームを送信すると、DisplayMealsCont.phpでPHPコードを実行し、更新されたセッション変数でmain.phpに戻ります。しかし、私がヘッダー( "場所:../View/Main.php")を入れようとすると、 DisplayMealsCont.phpではリダイレクトループに陥ってしまいます。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); 



} 
?> 

DisplayMealCont.php

<?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; 



?> 
+0

これは、ターゲットページに別のリダイレクトがあり、別のリダイレクトがあることを意味します。 – Qirel

+0

ヘッダーを使用してリダイレクトする方法しかわからなかったので、リダイレクト先を教えてください。ありがとう – Jurgen

+0

どこに置くかによって異なりますが、メインファイルにはそのファイルが含まれているので、常にそのファイルにリダイレクトされることに注意してください。 – Qirel

答えて

0

理由ヘッダ(私が見ることができない)リダイレクション・ループが原因であなたはdie()を追加しようとしましたか? header()の後に?

これは良い習慣です。問題が発生している場合は、問題なく動作している可能性があります。それ以外の場合は、ループヘッダが付いたコードを投稿すると分かります。

+0

はい、私はdie()を試しました。とexit();ヘッダーの後、私はまだ同じ問題が発生します – Jurgen

+0

それはリダイレクトの問題であることをどのように知っていますか?どのようなエラーが出ますか? DisplayMealCont.phpにセッション変数を設定し、そのセッション変数が見つかった場合は表示メッセージでメインページのdie()でヘッダが実際に動作しているかどうかを確認することができます。サーバーの設定によっては、表示されない「ヘッダーが既に送信されています」というエラーメッセージが表示されている可能性があります。 –

+0

ブラウザでmain.phpを開くと「このWebページにリダイレクトループがあります」エラー – Jurgen