2015-12-17 2 views
1

usercheck.phpстраница не будет перенаправлять, если пользователь не вошел в

// Start a session. 
session_start(); 

// Check the database for the user. 
$user_check = $_SESSION['user_username']; 
$ses_sql = mysqli_query($db,"SELECT user_username FROM users WHERE user_username='$user_check' "); 
$row  = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC); 
$login_user = $row['user_username']; 

// If the check fails, redirect to the login page. 
if(!isset($user_check)) { 
    header("Location: /index.php"); 
} 

У меня есть файл indcluded на каждой странице, которая должна проверить, если пользователь вошел в систему. Если они есть, отображается страница. Если нет, он перенаправляется обратно в индекс.

Проблема в том, что это не перенаправление, и я не могу понять, почему. Я могу легко ввести URL-адрес страницы, к которой я хочу перейти, и полностью обойти логин, даже если этот файл успешно включен.

Я делаю что-то неправильно или устарел?

Редактировать: Пример страницы, содержащей файл.

<?php 
    $pageTitle = 'Dashboard'; 
    $pageClass = 'dashboard'; 
    include_once('./assets/template/template.php'); 

    // Start the page content. 
    function getPageContent() { 

     global $mysqli; 

     // Connect to database. 
     include_once('./assets/include/db-connect.php'); 

     // Check the database for the user. 
     include_once('./assets/include/db-user-check.php'); 

     ?> 

     ... some html ... 

     <? 

     // Close the database connection. 
     $db->close(); 
    } 
?> 
+1

И '$ _SESSION ['user_username']' всегда определяется? –

+0

Да, '$ _SESSION ['user_username'] = $ _POST ['user_username'];' –

ответ

0

Попробуйте изменить if(!isset($user_check)) { к if(!isset($login_user)) {. Может быть, значение $_SESSION['user_username'] неверно. Если это не так, попробуйте var_dump($_SESSION); exit(); внутри вашего оператора if и устраните неисправность оттуда.

+0

'$ login_user' не делал ничего другого. Я сделал 'var_dump' и дал мне массив (1) {[" user_username "] => string (9)" pruoccojr "}'. –

+0

Если вы достигли оператора 'var_dump', вы можете сделать вывод о том, что проблема заключается в том, как вы перенаправляете, а не в самом чеке. 'header ("Location: /index.php");' выглядит хорошо, но вы уверены, что не получаете ошибок PHP? Возможно, вам придется проверить свои журналы ошибок. Вы не можете изменять заголовки после отправки контента, поэтому я предполагаю, что вы случайно отправляете контент. [Заголовок()] (http://php.net/manual/en/function.header.php) –

Смежные вопросы