php - 使用 PHP 的文件夹安全性

标签 php url

我的应用程序的主要路径如下

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 我的数据库结构如下 enter image description here 抱歉,我隐藏了联系凭证。我希望这没关系

最佳答案

这可以通过简单地验证用户是否具有正确的帐户类型或查看每个模块的访问权限来解决。由于您的问题中没有代码,因此该答案将是通用的,但应该会指导您能够在自己的应用程序中实现类似的解决方案。

所以,你有两条路线:

卖家

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/

相关文章:

PHP 文件上传 : keep both files if same name

php - Yii使用php代码而不是gii工具生成模型文件

c# - 如何使用非祖先引用解析 url

java - 使用 HTTPS 的基本身份验证

python - Django:URLconf 中的可变参数

php - 在 Laravel 5 应用程序中将 Redis 配置为缓存接口(interface)

php - $_GET 和 WordPress

php - 使用 Balanced 引用现有买家和商家

php - 检查字符串是否只包含 PHP 中的 URL

php - 将数据库数据加载为动态页面