我是PHP开发的新手。我尝试了PHP5 Power Programming书中的代码示例:
<?php
require_once 'DB.php';
require_once 'PEAR.php';
require_once 'Auth.php';
$auth_options = array(
'dsn' => 'mysql://username:password@localhost/database',
'table' => 'users',
'usernamecol' => 'username',
'passwordcol' => 'password',
'db_fields' => '*',
);
PEAR::setErrorHandling(PEAR_ERROR_DIE);
$auth = new Auth('DB', $auth_options);
$auth->start();
if (!$auth->getAuth()) {
exit;
}
if (!empty($_REQUEST['logout'])) {
$auth->logout();
print "<h1>Logged out</h1>\n";
print "<a href=\"$_SERVER[PHP_SELF]\">Log in again</a>\n";
exit;
}
print "<h1>Logged in!</h1>\n";
if (!empty($_REQUEST['dump'])) {
print "<pre>_authsession = ";
print_r($_SESSION['_authsession']);
print "</pre>\n";
} else {
print "<a href=\"$_SERVER[PHP_SELF]?dump=1\">Dump session</
?a><br>\n";
}
print "<a href=\"$_SERVER[PHP_SELF]?logout=1\">Log Out</a>\n";
?>
我对此代码有几个问题:
为什么我会得到这些?
有些人可以向我解释这些吗?谢谢。
答案 0 :(得分:0)
会话由服务器和浏览器之间在每个请求中传递的cookie维护,其中包含PHP生成的会话标识符。由于cookie是HTTP标头的一部分,因此必须在脚本输出任何内容之前通过发送cookie来创建会话。
包括空格,这可能是您错误的罪魁祸首。在打开<?php
标记之前,文件顶部不能包含空格,包括空白行,空格和BOM,包括在包含的文件中。
第二个错误是第一个错误的副作用,所以一旦你修复了它,它也会消失。