我正在尝试使用会话从一个页面传递给另一个页面但是它说
注意:未定义的索引:第61行的path \ file.php中的user_id
我正在创建会话的文件如下
// checking for session, if not then start session
if(!isset($_SESSION)) {
session_start();
}
// assigning user_id to session var
$_session['user_id']=$row['user_id'];
这是我正在访问会话var:
的代码if(!isset($_SESSION)) {
session_start();
}
// trying to access session var (previously defined)
$user_id=$_session['user_id'];
我犯错的地方。请指导我
注意:那些认为这可能是重复问题的人。我的答案是,它可能是但没有一个解决了我的问题。由于我的全球变量和休息的情况敏感,其他人不是这个问题。
答案 0 :(得分:3)
应该是$ _SESSION而不是$ _session。
$_SESSION['user_id']=$row['user_id'];
$user_id = $_SESSION['user_id'];
$_SESSION
是一个全局变量,应该用大写字母书写。当您使用带有小写字母的变量时,在这种情况下它不会获取变量,因为它从未被定义并且没有键user_id
因此您得到错误。希望这会有所帮助。
答案 1 :(得分:2)
错误是模糊的,user_id未定义的索引可能是$_SESSION
或$row
的一部分,您可以使用var_dump()
进行一些调试来检查哪个是哪个。以下是会议的一些提示。
会话常见的错误是忘记包含
session_start()
在每个文件的顶部,不需要检查是否设置了$ _SESSION。无论如何都要开始吧!
此外,为了避免此错误,您应该检查以确保索引user_id存在。类似的东西:
if ( isset( $_SESSION['user_id'] ) )
确保对SESSION $_SESSION
使用大写字母,不确定它是否有所不同,但它是服务器变量的常用标准。
答案 2 :(得分:2)
$_SESSION['user_id'] = $row['user_id'];
和接收方
$user_id = $_SESSION['user_id'];
答案 3 :(得分:2)
使用
SESSION
要求Session在所有需要访问会话数据的脚本上处于活动状态。这意味着,您应该在所有需要访问任何会话数据的脚本的顶部执行类似的操作:
<?php // NOTICE THERE IS NO SPACE BEFORE <?php
// FIRST CHECK IF SESSION EXIST BEFORE STARTING IT.
// DO THIS AT THE VERY TOP OF EACH SCRIPT THAT NEEDS ACCESS TO $_SESSION DATA
if (session_status() == PHP_SESSION_NONE || session_id() == '') {
session_start();
}
然后您可以像这样使用Session:
<?php
if (session_status() == PHP_SESSION_NONE || session_id() == '') {
session_start();
}
// SOME-CODE...
$_SESSION['user_id'] = $row['user_id'];
// SOME-CODE...
然后再说;您可以像这样获得会话数据:
<?php
if (session_status() == PHP_SESSION_NONE || session_id() == '') {
session_start();
}
// SOME-CODE...
$user_id = $_SESSION['user_id'];
// SOME-CODE...