简单会话/ cookie出错“无法修改标题信息”

时间:2011-02-28 20:23:04

标签: php session-cookies setcookie

我尝试将一个有效的登录系统从一个域转移到另一个域。它在域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 个答案:

答案 0 :(得分:2)

我也在这里回答:D

检查config.php中的第9行:)我打赌你在那里有一个尾随空格。

编辑: 为了避免将来发生这种情况,只需删除所有最终版本?&gt; PHP脚本中的行。 PHP可以在没有它们的情况下生存:)并且还注意到Lekensteyn的建议是SQL注入。

答案 1 :(得分:0)

  1. 尝试在

  2. 之前找到空格
  3. 尝试在?&gt;之后找到空格,删除它们。

  4. 删除在修改标题的代码之前可以执行的任何回显。

  5. 尝试将您的php文件的文件编码更改为“ANSI”。

  6. 祝你好运!