我正在尝试在Win7 PC上使用Winappserver。
我添加了
session.cookie_domain =
session.use_cookies = 1
session.save_path = "c:\wamp\tmp"
到我的PHP.ini文件来修复一个eariler $ _SESSION []索引错误问题但现在在同一个php文件中降低了我得到了另一个类似的错误:
未定义的索引:第61行的C:\ wamp \ www \ ac.php中的php_g_decrypted_mysqlpw_string
第61行: $ php_mysqlpw_string = $ _SESSION [“php_g_mysqlpw_string”];
我需要添加另一个php.ini设置吗?
...谢谢
答案 0 :(得分:1)
SESSION概念很聪明但不神奇。
当用户首次连接到您的网站时,他没有会话。
当该用户首次运行您的PHP代码并在您的代码中执行第一个session_start()
时,会创建一个会话数组,然后PHP查看此用户的会话是否已存在。如果这是第一次通过您的代码no previous session will exists
,那么会创建一个空的$_SESSION array
。
这是您的代码中发生的事情。
因此,您必须编写脚本代码,以便这种情况永远不会发生,或者对其进行编码以管理这种情况,即空的$ _SESSION数组或尚未创建的会话变量$_SESSION["php_g_mysqlpw_string"]
。
因此,在对会话变量(数组出现)的所有检查中,您需要测试它的存在并记住默认值。
例如,在您的第61行,您应该编写如下代码:
$php_mysqlpw_string = isset( $_SESSION["php_g_mysqlpw_string"] ) ? $_SESSION["php_g_mysqlpw_string"] : '';
或者,如果您希望长时间编码:
if ( isset( $_SESSION["php_g_mysqlpw_string"] ) ) {
$php_mysqlpw_string = $_SESSION["php_g_mysqlpw_string"];
} else {
$php_mysqlpw_string = '';
}
这就是说,如果会话数组包含名为“php_g_mysqlpw_string”的索引,则使用该值,否则它尚未设置为值,我应该使用默认值,在这种情况下,我假设为空字符串。
如果您没有使用PHP调试器,那么在执行session_start()
之后或者在尝试使用数组中的值之前使用此语句,这样您就可以看到当时会话数组中的内容你尝试访问它。这应该在浏览器上显示数组内容。
echo '<pre>' . print_r( $_SESSION, TRUE ) . '</pre>';