専門家、
サーバーにセッションを保存できない Zend_Auth の奇妙な動作を見つけました。これは、認証目的で Zend_Auth を使用するすべての既存のアプリケーションで突然発生するため、コードの問題ではないと確信しています。基本的に、ユーザーが正常に認証され (ユーザー オブジェクトがセッションに保存される)、ランディング ページにリダイレクトされた後は常に、ユーザー オブジェクトは常に NULL です。
Zend_Auth::getInstance()->getIdentity() を使用してセッションからユーザー オブジェクトを取得しますが、常に NULL です。この奇妙な動作はライブ サーバーでのみ発生し、私のマシンとステージング サーバーではすべて正常に動作します。ここで面白いことをしようとしているのはサーバーだけであることを確認したいだけです.コードをチェックしていて、まだ無知なままです. それは共有サーバーであり、私はあまりアクセスできません。
これが私のコードです:
// setup Zend_Auth adapter for a database table
Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
$db = Zend_Registry::get('db');
$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'Users', 'Email', 'Password', 'MD5(?) AND Active=1');
$authAdapter->setIdentity($email)
->setCredential($password);
// do the authentication
$auth = Zend_Auth::getInstance();
$result = $authAdapter->authenticate();
if ($result->isValid()) {
// success : store database row to auth's storage system
// (not the password though!)
$userData = array('UID','Email','Username','FirstName','LastName','Email','School');
$data = $authAdapter->getResultRowObject($userData, 'Password');
$auth->getStorage()->write($data);
$userData = get_object_vars($auth->getIdentity());
if (!empty($userData)) {
// redirect here
} else {
// show invalid
}
} else {
// show invalid
}