【问题标题】:fail to use session in php无法在 php 中使用会话
【发布时间】:2011-11-15 14:51:27
【问题描述】:

我读了一些关于如何保护会话的内容,我决定将 session_id 保存到数据库中,然后在加密后将其保存到会话变量中。

这是我用于加密的类(由 Orielly 书籍作者编写):

Encrypted class using session_set_save_handler

我是这样应用的:

ini_set('session.use_only_cookies',true);       

//calls the session class.  
 require_once(dirname(__file__)."/../../Administrator/secure_session.php");
             session_start();

            if( !isset($_SESSION['mod']) )          
            {   
                Moderator::insert_moderator($name,session_id());    

                $_SESSION['mod']= session_id();

                $_SESSION['time']=time();

                echo "<br/>Moderator session: ".$_SESSION['mod'];
            }

这是被抛出的异常:

致命错误:未捕获的异常“异常”,消息“我无法生成安全的伪随机密钥。请在 C:\xampp\htdocs\PoliticalForum\Administrator\secure_session.php:74 中使用 PHP >= 5.3 或 Mcrypt 扩展名 堆栈跟踪:#0 C:\xampp\htdocs\PoliticalForum\Administrator\secure_session.php(107): SecureSession->_randomKey(32) #1 [内部函数]: SecureSession->open('C:\xampp\htdocs...', 'PHPSESSID') #2 C:\xampp\htdocs\PoliticalForum\StoredProcedure\User\ headerSite.php(43): session_start() #3 C:\xampp\htdocs\PoliticalForum\mainHome.php(14): include_once('C:\xampp\htdocs...') #4 {main} 在 C 中抛出:\xampp\htdocs\PoliticalForum\Administrator\secure_session.php 在第 74 行

我做错了什么,我该如何解决这个问题,因为我不太了解加密!

【问题讨论】:

    标签: php security session


    【解决方案1】:

    例外是因为您可能使用的是 PHP

    如果您查看错误日志,请查看课程的第 74 行:

    (71)    if (defined(MCRYPT_DEV_URANDOM)) {
    (72)        return mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
    (73)    } else {
    (74)       throw new Exception("I cannot generate a secure pseudo-random key. Please use PHP >= 5.3 or Mcrypt extension");
    (75)    }
    

    这意味着 MCRYPT_DEV_URANDOM 没有定义,如果您查看 php.net,您会发现它是在 Widnows 平台上的 PHP >= 5.3 中引入的


    要更新您的 PHP,请从 herehere (Windows) 下载最新的稳定版本

    【讨论】:

    • 如何更新我的 php... 我有这个链接可以输入下载和安装扩展:forums.theplanet.com/index.php?showtopic=26527
    • @DmitryMakovetskiyd 我用下载 PHP 的链接编辑了我的答案
    • libmcrypt-win32——我得到了那个库。我怎样才能配合那个扩展,使它不会抛出那个异常?
    • 好的,我正在下载你的链接..我是否需要按下安装并像虚拟人一样简单地安装它来更新 php..或者还有什么我需要做的吗?
    • @DmitryMakovetskiyd mcrypt 扩展包含在最新版本的 PHP 中,只需下载它们,您将在 ext 文件夹中看到 php_mcrypt 扩展
    【解决方案2】:

    如果您收到此消息并且您拥有PHP 5.3 或更高版本。您尚未在 php.ini 文件中启用 OpenSSL 扩展。

    您需要做的是在您的php.ini 文件中包含以下行:

    extension=php_openssl.dll
    

    我假设您使用的是 windows,否则相应地更改扩展

    【讨论】:

      猜你喜欢
      • 2014-03-22
      • 2014-08-14
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多