2011-02-01 8 views
0

私はPHP開発の初心者です。私はPHP5電源プログラミングブックからのコードサンプル、次の試してみました:PEAR :: Authパッケージに関する質問

<?php 
require_once 'DB.php'; 
require_once 'PEAR.php'; 
require_once 'Auth.php'; 

$auth_options = array(
'dsn' => 'mysql://username:[email protected]/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"; 

?> 

私はこのコードを持っていますいくつかの問題があります。

  1. は私に初めてログインするには、次の警告を得る:
    警告: session_regenerate_id()[function.session-regenerate-id]:セッションIDを再生成できません - すでに/usr/local/php5/lib/php/Auth.phpに830行で送信されているヘッダ
    警告:ヘッダー情報は既に変更できません/ usr/local/php5/lib /にある(出力は/home/myaccount/www/www/test.php:2で開始されました) php/Auth.php on line 858

なぜ私はこれらを取得していますか?

  1. 第二に、私はダンプセッションリンクをクリックしたとき、それは再度ログインするように私に尋ねる - 。つまり、私はすでに認証され、ログインしていますことを認識していない

は、これらを説明してくださいいくつかのでした私に?ありがとう。

答えて

0

セッションは、PHPが生成するセッション識別子を含むリクエストごとに、サーバとブラウザの間で渡されるクッキーによって維持されます。 CookieはHTTPヘッダーの一部なので、スクリプトがコンテンツを出力する前にCookieを送信してセッションを作成する必要があります。

これには、エラーの原因となる空白が含まれます。空白行、空白、BOMなどの空白は、含まれているファイルを含む<?phpタグを開く前のファイルの先頭には存在しません。

第2のエラーは最初のエラーの副作用であるため、一度修正すれば元に戻ります。