如果未设置GET id或为空,则使用SESSION id

时间:2014-08-31 15:32:21

标签: php session if-statement get

小小问题,如果未设置Get id,我将如何使用我的会话ID。这是我的一小段代码。

    if (isset($_GET['id']) && is_numeric($_GET['id']) && intval($_GET['id'])) {
 $id = $_GET['id'];//the user id
    } else {
 $id = $_SESSION['id'];//the user id
    }

现在它似乎工作正常如果?id = 根本没有设置,但如果它为空它会抛出错误

SQL:从用户中选择*,其中id =>>您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得在''附近使用的正确语法。在第1行

我只是想让它失败证明,它只会使用ID GET,如果它是一个实际的链接,如 profile_pic.php?id = 100 但是当它的 profile_pic.php?id = 或 profile_pic.php?id = apples

1 个答案:

答案 0 :(得分:2)

intval返回一个不是布尔值的整数。如果它在0中求值则表示为false,否则为true。不要在if中使用它。

// GET id is set and not empty and is numeric
if (isset($_GET['id']) && !empty($_GET['id']) && is_numeric($_GET['id'])) {
    $id = intval($_GET['id']);
}
// Else take value from session, if not empty and is numeric
elseif (isset($_SESSION['id']) && !empty($_SESSION['id']) && is_numeric($_SESSION['id'])) {
    $id = intval($_SESSION['id']);
}
// Something went wrong
else {
    throw new InvalidArgumentException('id not set via GET and id not in session or not numeric');
}