如果两个变量基于登录的用户ID和页面ID匹配,我正在尝试回显一条消息。我已经尝试了几个小时,似乎无法获得最终结果。
无论哪种方式,我都尝试过使用==,但是无论如何我都保持“ OK”。
有效的方法: 在下面的代码中,$ userNowId给我当前会话的用户ID。 $ profileID给我特定页面ID的ID。这项工作。
这两个值都在页面上正确地回显。例如,如果我以用户ID 1身份登录,然后键入url profile.php?user = 65进入其页面,则我的数据库ID(1)和URL ID(65)均会按需显示。
问题: 现在,我想做一个if语句,说如果这两个值不匹配,则回显消息“不是您的个人资料”。不确定是否有帮助,但是我已经用OOP PHP编写了。
这就是我到目前为止所拥有的。
<?php
require_once 'core/init.php';
$userNow = new user();
$userNow->LoggedInUser();
if (!$username = input::get('user')) {
redirect::to('index.php');
} else {
$user = new user($username);
if (!$user->exists()) {
redirect::to(404);
} else {
$data = $user->data();
$userNowId = ($_SESSION && $data->id);
$profileID = ($data->id);
if ($userNowId == $profileID) {
echo "Your profile";
} else {
echo "Not your profile!";
}
答案 0 :(得分:0)
问题在于您如何设置$userNowId
$userNowId = ($_SESSION && $data->id);
这是布尔操作,会将值设置为布尔值true或false,而不是ID。我怀疑您真正想要的是这样的东西:
$userNowId = array_key_exists('id', $_SESSION) ? (int)$_SESSION['id'] : null;
$profileID = (int)$data->id;
if ($userNowId === $profileID) {
echo "Your profile";
} else {
echo "Not your profile!";
}
请注意,我已经使用严格的类型比较(===
)来防止将null
转换为0
,这会带来安全风险。我也将id强制转换为整数,以便当PHP将数据库int转换为字符串时,严格类型检查将起作用。