0
每次我去我的index.php頁面,我收到以下錯誤谷歌瀏覽器:PHP - 重定向循環錯誤
此網頁有重定向循環
噢,我的phpmyadmin數據庫,如果account_type中的文本是'deactivate',我做到了,所以用戶自動重定向到logout.php(這在functions.php頁面中)
如果它是'active',那麼什麼都不會發生。
我的index.php代碼:
<?php include_once 'connect.php';?>
<?php include_once 'functions.php';?>
<!doctype html>
<html lang="en" class="home-page">
<head>
</head>
<body>
<ul class="linklist-admin">
<?php
if (loggedin()){ ?>
<li><a href="profile">My Profile</a></li>
<?php } else { ?>
<li><a href="login.php">Sign In</a></li>
<?php } ?>
</ul>
</body>
</html>
我的functions.php代碼:
<?php
session_start();
function loggedin(){
if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])){
return true;
} else {
return false;
}
}
if(loggedin()){
$my_id = $_SESSION['user_id'];
$user_query = mysql_query("SELECT username, account_type FROM users WHERE id='$my_id'");
$run_user = mysql_fetch_array($user_query);
$username = $run_user['username'];
$account_type = $run_user['account_type'];
$query_level = mysql_query("SELECT name FROM user_level WHERE id='$user_level'");
$run_level = mysql_fetch_array($query_level);
$level_name = $run_level['name'];
$d = 'deactivate';
$a = 'active';
}
if($account_type == $d) { //logs you out if your account is deactivated.
header('location: logout.php');
}
?>
我logout.php代碼:
<?php
include 'connect.php';
include 'functions.php';
session_destroy();
header('location: index.php');
如果'functions.php'重定向到'logout.php',並且'logout.php'包含'functions.php',那麼'logout.php'會無休止地重定向到它自己。 – showdev 2015-02-05 23:22:42
是的,這是問題所在。我該如何解決它?謝謝。 – user2453646 2015-02-05 23:25:21
快速解決方法是在if(logged_in()){...}內移動'if($ account_type == $ d){...}'代碼。這樣,一旦會話被銷燬並且用戶註銷,重定向就不會發生。但最好的想法很可能是重新考慮你的結構/邏輯,因爲這種類型的東西很快就會變成蜘蛛網重定向,越來越難以排除故障。 – showdev 2015-02-05 23:28:30