我目前正在为我的登录系统重写我的函数脚本(PHP)。以下代码是否安全且是一种检查用户是否已登录的“好方法”?
function loggedin()
{
$ID = ($_SESSION['ID']);
$sql = "SELECT `online` FROM `users` WHERE `ID` = '$ID'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
$row = mysql_fetch_array( $result );
if ( $count== 1)
{
if ($_SESSION['ID'] && $_SESSION['session_id'])
{
if ( $row['online']== 1)
return 1;
}
}
else
{
return 0;
}
}
答案 0 :(得分:10)
$ID = mysql_real_escape_string($_SESSION['ID']);
转义所有输入参数
或者更好的是,使用参数化查询(MySQL)PDO
答案 1 :(得分:5)
绝对值得添加
session_regenerate_id(true);
所以这个
if ( $row['online']== 1)
return 1;
成为这个:
if ( $row['online']== 1)
{
session_regenerate_id(true);
return 1;
}
答案 2 :(得分:2)
除了其他答案,请务必先检查会话是否存在。
function loggedin()
{
if(!isset($_SESSION['ID'])) return 0;
$ID = ($_SESSION['ID']);
..