我尝试将工作登录系统从一个域转移到另一个域。它在域 A 上完美运行,但开始出现错误:
警告:无法修改标头信息 - 标头已由 /home/hootlute/public_html/personal/example/files/ 中的(输出开始于 /home/hootlute/public_html/personal/example/files/admin/config.php:9)发送第 34 行的 admin/admin_process.php
警告:mysql_free_result():提供的参数不是第 48 行 /home/hootlute/public_html/personal/example/files/admin/admin_process.php 中的有效 MySQL 结果资源
以下是我来自 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() 的使用有关。
任何回复将不胜感激:)