Ошибка с простым сеансом / файлом cookie "Невозможно изменить информацию заголовка" - PullRequest
1 голос
/ 28 февраля 2011

Я попытался перенести работающую систему входа в систему из одного домена в другой.Он отлично работает в домене A, но начинает выдавать ошибки:

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с / home / hootlute / public_html / personal / example / files / admin/config.php:9) в /home/hootlute/public_html/personal/example/files/admin/admin_process.php в строке 34

Предупреждение: предоставленный аргумент mysql_free_result (): недопустимый ресурс результатов MySQLв /home/hootlute/public_html/personal/example/files/admin/admin_process.php в строке 48

Ниже приведен мой код из admin_process

<?php
session_start(); 
if ($_POST['adminID']=="") {
    $_SESSION['error']="Please log in with an admin account.";
    header('Location: http://login.example.com/login/admin');
}

include 'config.php';
include 'functions.php';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);

$sql = "SELECT * FROM admin WHERE username='" .$_POST["adminID"]. "' AND password='" .$_POST["password"]. "'";
$result = mysql_query($sql);

if (!$result) {
    die('Invalid query: ' . mysql_error());
}

$num_rows = mysql_num_rows($result);


// CHECKS FOR EXISTING ACCOUNT
if ($num_rows === 0) {
    $_SESSION['error']="Unable to log in. Admin account not found";
    printf("<script>location.href='http://login.example.com.com/login/'</script>");

}
else {
    $admin_rows = mysql_fetch_assoc($result);
    $cookie_info = $admin_rows['admin_id']."$".$admin_rows['name'];
    $expire = time() + 9800;
    setcookie("FS_admin_id",$cookie_info,$expire);
    $sql = "UPDATE admin set login_time = UTC_TIMESTAMP()  WHERE username='" .$_POST["adminID"]. "' AND password='" .$_POST["password"]. "'";
    $logresult = mysql_query($sql);

    if (!$logresult) {
        die('Invalid query: ' . mysql_error());
    }


    /* printf("<script>location.href='admin_home.php'</script>"); */

}

mysql_free_result($result);
mysql_free_result($logresult);
mysql_close($conn);



?>

Строка 34 = setcookie("FS_admin_id", $ cookie_info, $ expire);

Что не так с кодом?Это из-за разницы в версии PHP?Я также получаю ошибки того же типа, когда я объявляю session_start () в середине моих кодов ... несмотря на то, что никакие данные не напечатаны.

Я искал проблемы setcookie (), но все результаты были связаны с использованием setcookie ().

Любой ответ будет высоко оценен:)

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

Позвольте мне ответить и здесь: D

Проверьте строку 9 в config.php :) Бьюсь об заклад, у вас есть конечный пробел там.

EDIT: Чтобы избежать этого в будущем, просто удалите ВСЕ окончательные строки?> Из ваших сценариев PHP. PHP может жить без них :) А также прислушаться к советам Лекенштейна по SQL-инъекциям.

0 голосов
/ 15 января 2014
  1. Попробуйте найти пробелы до

  2. Попробуйте найти пробелы после?>, Удалите их.

  3. Удалите любое эхо, которое вы можете сделать перед кодом, который изменяет заголовки.

  4. попробуйте изменить кодировку вашего php-файла на «ANSI».

удачи!

...