2013-03-12 2 views
2

Пожалуйста прилагается мой код:PHP вопрос «Не удается отправить куки сессии»

<?PHP 
session_start(); 
if (isset($_POST["usernameform"])){ 

$username = $_POST['usernameform']; 
$password1 = $_POST['passwordform']; 


$user_name = "XXXX"; 
$password = "XXXXX"; 
$database = "XXX"; 
$server = "XXXX"; 

$db_handle = mysql_connect($server, $user_name, $password); 
$db_found = mysql_select_db($database, $db_handle); 


$SQL = "SELECT * FROM login WHERE Username = '$username' AND Password = '$password1' "; //grab all the records from table 
$result = mysql_query($SQL) 
    or die("Error:" . mysql_error()); 

if (mysql_num_rows($result) > 0){ //if username and password match return number of rows is always 1 

$_SESSION['login'] = $username; //by placing this in session it will remember this variable on the page it directs too 

while ($row = mysql_fetch_assoc($result)){ //lays out array in $result 
$_SESSION['ID'] = $row['ID']; //selects from list of array ID 
$_SESSION['firstname'] = $row['First_Name']; 
echo'<script> window.location="page1.php"; </script> '; 

} 
} else { 
$_SESSION['login'] = ''; 
print(' 
<script type="text/javascript"> //place html script for alert. Use single comma for print command here. 
    alert("Sorry, your username or password could not be recognized") 
</script> 
'); 
session_destroy(); 
} 
} 
?> 

Хотя код отлично работает на моем локальном хосте (WampServer), он не работает на моем хосте, и я получаю ошибки:

Внимание: session_start() [function.session-начало]: не удается отправить сеанс куки - заголовки уже прислал (выход начался в /.../vhindex.php:1) в /.../ vhindex.php в строке 2

Предупреждение: session_start() [function.session-start]: не удается отправить сеанс кеш-лимитер - уже отправленные заголовки (вывод начат с /.../vhindex.php:1) в /.../vhindex.php on line 2

Код session_start(); был размещен в верхней части блока PHP и до того, как был сделан какой-либо вывод HTML, и я полностью заблокирован.

Любые идеи?

+1

Вы проверили флажок для байтового заказа (BOM)? Это происходит, когда ваш файл находится в UTF8, и вы открываете его с помощью Windows Notepad.exe. – Geoffroy

+0

Как проверить спецификацию? Если это вызывает проблему, как я могу избавиться от нее? –

+0

Используйте редактор, который может показать вам специальные символы. – Geoffroy

ответ

9
  • Скачать Notepad++ и открыть там файл, удалить все орнаментальные символы перед <?PHP
  • Убедитесь, что нет пробелов символов, как «» или вкладки или LineBreak перед <?PHP.
    • В Notepad ++ нажмите Encoding, а затем UTF-8 without BOM, чтобы преобразовать файл в UTF-8 без спецификации, а затем сохранить его.
  • Также добавьте ob_start(); до session_start();, чтобы быть в безопасности.
+0

Только что понял это! Спасибо! –

-1

Если вы загрузите этот -pp-файл из vhindex.php. Убедитесь, что это сделано в правильном порядке. Например. require_once'handle-user-login.php '; callToYourFunction();

Если ваша сессия уже отправлена, вы получите это предупреждение. (Да, как говорит код ошибки).

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