2013-05-01 2 views
1

Мне нужно сделать доступ только для членов моей страницы index.php. Поэтому мой php-скрипт в начале моего файла index.php проверяет, находится ли имя пользователя в сеансе, а если нет, то он должен автоматически перенаправлять пользователя на мою страницу login.php. Таким образом, моя страница входа должна быть BASE_URL. Я также сделал define ('BASE_URL', 'mywebsite.com/login.php'); в моем сценарии verify.php. Но когда я перехожу на мою индексную страницу, я получаю ошибку (пустой экран) «Ошибка в скрипте_path/index.php» в строке 11: Невозможно изменить информацию заголовка - уже отправленные заголовки (вывод запущен по пути/индексу .php: 1)». У меня нет пробелов перед моим HTML, это может быть причиной. Я также попытался установить BASE_URL на мой логин с «base_href» в head моего login.php, но не работал. Это мой сценарий в начале моего индексного файла:Переадресация на базовый URL-адрес не работает

<?php 
require_once ('verify.php'); 
$page_title = 'title'; 
ob_start(); 
session_start(); 
if (!isset($page_title)) { 
$page_title = 'title';} 
if (!isset($_SESSION['name'])) {  
$url = BASE_URL . ''; 
ob_end_clean(); 
header("Location: $url "); 
exit(); 
} 
?> 
<!DOCTYPE html><html><head></head><body></body></html> 
<?php 
ob_end_flush(); 
?> 

Мои verify.php содержания:

<?php 
define('LIVE', TRUE); 
define('EMAIL', 'my_mail'); 
define ('BASE_URL', 'mywebsite.com/login.php'); 
define ('MYSQL', 'db.php'); 
function my_error_handler ($e_number, $e_message, $e_file, $e_line, $e_vars) { 
$message = "<p>An error occurred in script '$e_file' on line $e_line:  $e_message\n<br />"; 
$message .= "Date/Time: " . date('n-j-Y H:i:s') . "\n<br />"; 
$message .= "<pre>" . print_r ($e_vars, 1) . "</pre>\n</p>"; 
if (!LIVE) { echo '<div class="error">' . $message . '</div><br />'; 

} else {   
    mail(EMAIL, 'Site Error!', $message, 'From: [email protected]'); 
    if ($e_number != E_NOTICE) { 
    echo '<div class="error">A system error occurred. We apologize for the inconvenience.</div><br />'; 
    } }  } 
set_error_handler ('my_error_handler'); 
?> 
+0

показать содержимое вашей проверки –

+1

, вероятно, связано с вашей буферизацией вывода. вы можете проверить, были ли отправлены заголовки, чтобы увидеть, в какой момент кода они уже были отправлены. http://php.net/manual/en/function.headers-sent.php – skrilled

+0

@DavidNguyen Я обновил содержимое своей проверки. – strellson

ответ

0

Я нашел решение. Ответ заключается в кодировании в UTF8 без спецификации.

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