更新 我修改了这个脚本并没有正常工作,但我仍然感到困惑。
我所做的是,我在原始脚本中注释掉了这一部分,现在我没有收到标题已经发送的消息:
/*
include("include_db_connection.php");
$sessionid = session_id();
$update_sessiondetails_query = "UPDATE t_session SET logout_time=now() WHERE session_id='" .$sessionid. "'";
$update_sessiondetails_result = mysqli_query($db_conn, $update_sessiondetails_query)
or die('Connected to database, but querying failed');
*/
但我不明白的是,这里没有回声或打印,我所做的只是在连接到db后更新数据库。这是不是在一个标题之前允许的那样().... ?? !!如果不允许这样做,我还有什么选择?无论如何,我必须使用用户注销时间更新数据库!
再次感谢!
原始问题&以下脚本 -
您好,
我正在处理我的注销脚本,并且无法成功完成此脚本,因为我收到的标题已经发送警告以下代码 -
这是我的退出脚本 -
<?php
session_start();
include("db_connection.php"); //gets the database connection details like username/host
$sessionid = session_id(); //gets the current logged in user's session ID
$update_sessiondetails_query = "UPDATE t_session SET logout_time=now() WHERE session_id='" .$sessionid. "'"; //update the database for this user by inserting the logout time
$update_sessiondetails_result = mysqli_query($db_conn, $update_sessiondetails_query)
or die('Connected to database, but querying failed');
session_unset();
session_destroy();
// if session uses cookies, clear all cookies
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]);
}
//once scripts completes successfully, redirect user to some other page
$homepage_url = "somepage.php";
header('Location: '. $homepage_url);
?>
这是我得到的错误 - 警告:无法修改标题信息 - 已经发送的标题(输出开始于...... blah blah blah ...)
请让我知道为什么会出现此错误。 注意:使用WAMP在我的本地计算机上工作时,注销脚本工作正常并且不会给出任何错误或警告(这些都不会在wamp中设置为OFF);只有当我使用在线网络主机进行测试时,才会收到这些警告。
谢谢!
答案 0 :(得分:2)
在页面上设置cookie时 重定向,必须设置cookie 调用标题后('位置: ....');
如:
<?php
header('Location: http://www.example.com/');
setcookie('asite', $site, time()+60*60, '/', 'site.com');
?>
答案 1 :(得分:0)
这意味着已经输出了一些东西。在此文件的开头或结尾或以前包含的文件中可能有尾随空格或换行符。