2012-03-04 5 views
-1

SO i создал сайт с функцией входа. Вы можете получить доступ к сайту только после регистрации и входа в систему. Регистрация работает, и сеанс запускается при нажатии кнопки входа, но я получаю сообщение об ошибке при перенаправлении на защищенную страницу. я получаю следующее сообщение об ошибке-х:ошибка при обращении к защищенной странице после входа в систему

Предупреждение: Не удается изменить информацию в заголовке - заголовки уже прислал (выход начался в /webdata/domains/cim-gmbh.ch/vhosts/www/htdocs/login.php:7) в /webdata/domains/cim-gmbh.ch/vhosts/www/htdocs/login.php в строке 40

Предупреждение: не удается изменить информацию заголовка - заголовки, уже отправленные (вывод запущен в/webdata/domains/cim- gmbh.ch/vhosts/www/htdocs/login.php:7) в /webdata/domains/cim-gmbh.ch/vhosts/www/htdocs/login.php по линии 44

и вот весь l ogin.php файл:

<?php 

include "mysql_connectinfo.php"; 

if (isset($_SESSION['angemeldet']) || $_SESSION['angemeldet']) { 
header('Location: index.php'); 
exit; 
} 

else if ($_SERVER['REQUEST_METHOD'] == 'POST') { 

$username = $_POST['username']; 
$passwort = $_POST['passwort']; 

$sql = mysql_query("SELECT $mysqlname FROM $mysqltable WHERE $mysqlname='$username'AND $mysqlpwd='$passwort'"); 
$num = mysql_num_rows($sql); 

if ($num != 0) { 
    $_SESSION['angemeldet'] = true; 

    if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { 
    if (php_sapi_name() == 'cgi') { 
     header('Status: 303 See Other'); 
    } 
    else { 
     header('HTTP/1.1 303 See Other'); //this is line 40 
    } 
    } 

    header('Location: index.php'); //this is line 44 
    exit; 
} 
else { 
    echo mysql_error(); 
} 
} 
?> 
+0

Сессия запущена, потому что я могу получить доступ к защищенным страницам, которые перенаправляют меня на login.php, если я не был зарегистрирован. –

+0

не стесняйтесь попробовать сами. www.cim-gmbh.ch –

+0

ОК, это не знак байтового заказа! Открыл его в Dreamweaver, и он не был включен. Он продолжает давать мне ошибку в этих двух заголовках: 'if ($ num! = 0) { $ _SESSION ['angemeldet'] = true; if ($ _SERVER ['SERVER_PROTOCOL'] == 'HTTP/1.1') { if (php_sapi_name() == 'cgi') { header ('Status: 303 See Other'); } else { header ('HTTP/1.1 303 See Other'); } } header ('Местоположение: index.php'); exit; ' –

ответ

1

Убедитесь, что нет пространства/отступов перед первым openeng тега <?php у вас есть:

<?php 

include "mysql_connectinfo.php"; 

Также убедитесь, что вы не эхо/вывод ничего в mysql_connectinfo.php файле.

Поскольку вы используете $_SESSION, вы также должны убедиться, что у вас есть session_start() в начале вашего скрипта:

<?php 
session_start(); 
// more code 
+0

'mysql_connectinfo.php' используется для подключения к mysql db/tables и содержит сообщения об ошибках, когда он не может подключиться! –

+0

@ NickMüller: Это может быть потенциальной проблемой. Так как это приведет к ошибке, ошибка заголовка может быть вызвана этим. Также проверьте другие причины, о которых я упомянул. – Sarfraz

+0

ok, поэтому я удалил сообщения об ошибках из mysql_connectinfo.php, но я все равно получаю вышеуказанные ошибки. –

0

Убедитесь, что ваш редактор кода не включает в себя спецификации в документе. Я знаю, что notepad ++ и некоторые другие включают это по умолчанию. Если он включен, он добавит невидимые символы в ваш документ, который выглядит как вывод на сервер, вызывая сообщения об ошибках, которые вы видите. Попробуйте скопировать и вставить свой код в новый документ, который не имеет спецификации.

У меня была такая же проблема пару недель назад, и создание нового документа php в Dreamweaver БЕЗ спецификации (байтовый порядок байтов) решило проблему.

+0

Я использую notepad ++, и на разных форумах проблема была поднята. Какой редактор я должен использовать? Я серьезно устал от этой проблемы! –

+0

Все еще не работает. Скопирован и вставил весь файл login.php в новый документ, не используя блокнот ++, но обычный блокнот. –

+0

Вы должны указать где-нибудь в своих предпочтениях НЕ использовать спецификацию. Я сам использую Dreamweaver, но я уверен, что есть другие варианты. Чтобы удалить спецификацию: вы можете просто открыть файл в Notepad ++ и проверить Format → UTF-8 без спецификации. Кроме того, вы можете открыть файл в шестнадцатеричном редакторе и удалить «EF BB boyfriend» с самого начала документа. – adamdehaven

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