Wampserver未定义的索引错误

时间:2013-12-30 21:27:34

标签: php wampserver

我正在尝试在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设置吗?

...谢谢

1 个答案:

答案 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>';