gpt4 book ai didi

php - Zend_Auth getidentity 总是返回 null

转载 作者:行者123 更新时间:2023-12-04 06:28:04 27 4
gpt4 key购买 nike

专家,

我刚刚发现 Zend_Auth 的一个奇怪行为,即它无法在服务器中存储 session 。我所有使用 Zend_Auth 进行身份验证的现有应用程序都会突然发生这种情况,所以我确定代码没有问题。基本上,每当用户成功通过身份验证(他的用户对象存储到 session 中)并且重定向到登录页面后,用户对象始终为 NULL。

我使用 Zend_Auth::getInstance()->getIdentity() 从 session 中检索用户对象,它始终为 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
}

最佳答案

听起来您服务器上的/tmp 文件夹已满,这意味着如果您使用基于文件的 session , session 将始终为空。看看能不能确认。

此代码段将告诉您机器中的磁盘有多满:

echo `df -h`."\n";

此代码段将确认您是否正在使用文件以及它们的存储位置。
echo ini_get('session.save_handler')."\n";
echo ini_get('session.save_path')."\n";

如果第二个 ini_get 没有值,那么它会默认为/tmp

如果保存路径在您的主文件夹中,那么您可以自己清除它,但是如果保存路径在/tmp 或其他系统文件夹中,则您需要访问您的托管服务提供商。

关于php - Zend_Auth getidentity 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5785431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com