我的应用程序的主要路径如下
http://example.com/login.php
如果用户登录并且类型是卖家而不是
http://example.com/login.php/seller/index.php
如果 User Login and type is caller
http://example.com/login.php/caller/index.php
问题:
如果卖家已登录并且他/她更改了 url
http://example.com/login.php/seller/index.php
到
http://example.com/login.php/caller/index.php
因此 php 允许更改整个模块。 那么如何防止卖家进入来电模块。 我的应用程序在核心 php 中。我没有使用框架。我在数据库中有一个名为 type 的字段,它的类型类似于 caller 或 seller 或 admin 我的数据库结构如下 抱歉,我隐藏了联系凭证。我希望这没关系
最佳答案
这可以通过简单地验证用户是否具有正确的帐户类型或查看每个模块的访问权限来解决。由于您的问题中没有代码,因此该答案将是通用的,但应该会指导您能够在自己的应用程序中实现类似的解决方案。
所以,你有两条路线:
卖家
http://example.com/login.php/seller/index.php
来电者
http://example.com/login.php/caller/index.php
正如 Daniel 在上述回答中所写,您可以将帐户类型存储在 session 变量中。由于数据库中有一个字段存储每个用户的帐户类型,因此您可以获取并存储它。
当用户登录时,您可以从数据库中获取此信息,并将其存储在 session 中:
<?php
// Login page
//...code to login user
$accountType = $queryResultAccountType; // Fetch the user's role from the database,
$_SESSION['account_type'] = $accountType; // Store it in the session
现在,对于您的每个模块页面,只需检查访问该模块的用户是否具有正确的帐户类型:
卖家路线:index.php
<?php
if (!isset($_SESSION['account_type']) || $_SESSION['account_type'] != 'seller') {
exit('No permission');
}
// load page here if they do have permission
调用路由:index.php
<?php
if (!isset($_SESSION['account_type']) || $_SESSION['account_type'] != 'caller') {
exit('No permission');
}
// load page here if they do have permission
这是一个非常广泛和基本的示例,但希望您能理解。您可以调整它以重定向它们、显示自定义 View 等。不过,我强烈建议将来使用一个框架,因为很多这种基本功能已经以更强大的方式为您处理。
关于php - 使用 PHP 的文件夹安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48149781/