早上好,
我正在为客户建立一个网站,我遇到了一个很大的问题。我允许公共搜索,用户可以从下拉列表中选择搜索字段,然后在输入字段中输入搜索值。 SQL查询运行并发送retunrs结果。然后,未注册的用户可以通过单击视图来选择查看该特定用户的详细信息。现在显然点击视图(链接),他们将使用php重定向到另一个页面。
> <td><a href='http://localhost/mygiftsite/pub_list_view.php?user=<?php echo $user_id;?>'>View</a></td>
这会生成以下网址:http://localhost/mygiftsite/pub_list_view.php?user=1
。然后,该页面显示该特定注册会员公开的所有列表。然后,未注册的用户可以通过单击任何字段来查看这些列表,并将其重定向到http://localhost/mygiftsite/pub_item_view.php?list=9
。
我的问题是,用户只需更改网址中列表变量/索引的值,即可查看隐私设置为私有的其他用户和列表的列表,不应允许这样做。只是为了澄清,该列表具有隐私字段而非用户。注册用户决定将列表保密或将列表公开。公共列表应该可以通过成员搜索访问,私有列表不应该显示。我阻止用户访问页面而不使用以下代码登录:
<?php
session_start();
if(!isset($_SESSION['userid'])){
header("location: http://localhost/mygiftsite/login.php");
}
?>
但我希望允许未注册的用户搜索和查看公共列表。请问您可以帮我解决这个问题。
我主要担心的是可以在地址栏中简单地更改参数。我该如何阻止这种情况发生?
答案 0 :(得分:0)
您需要在每个私人页面中检查加载它的用户是否是已登录用户。 例如:
//keep logged user. Store in session during sign-in
$loggedUserId = $_SESSION['loggedUserId'];
//from URL GET parameter
$otherUserId = $_GET['userid'];
$listId = $_GET['list'];
if($loggedUserId==$otherUserId)
//do something, allow access
else {
//retrieve the list record based on $listId, get $isPrivate field
//do something else, don't allow access
if($isPrivate == true )
header("location: http://localhost/mygiftsite/login.php");
}