访问不同的数据库,防止用户错误PHP
Access to different databases, prevent user errors PHP
>我正在开发一个允许用户更改数据库连接的工具。因此,用户有一个选择框,他在其中选择所需的数据库。我总共有 4 个不同的数据库,但结构都是一样的,只是数据发生了变化。
如果用户只使用 1 个打开的选项卡,我没有任何问题。但是如果用户使用很少的选项卡,可能会发生很多安全问题。
例如:选项卡 1 - 用户想要编辑数据库 1 中的行同时,用户将 Tab2 更改为数据库 3。因此,当他要保存选项卡 1 时,它可能会保存到数据库 3,因为它是最后一次更改。
我将选定的数据库保存在 $_SESSION var 上。
我现在的代码,我有一个用户选择数据库的表单。在_init.php我有一个简单的开关案例,需要不同的配置.php具体取决于所选数据库。
一些想法如何防止此类错误的发生?
活动连接存储在 $_SESSION 中,则在跨选项卡共享会话时,无论您在浏览器中打开多少个选项卡,都只能有一个活动连接。
相反,您可以为每个连接提供一个计数器或数字标识符:
例:
1 = connection 1
2 = connection 2
...
如果用户从您的选择框中更改连接,请使用重定向发送带有连接号的 GET 参数。
例:
- 如果我选择连接 1,浏览器将重定向到 index.php?cn=1
- 如果在另一个选项卡中我使用连接 2,浏览器会将我重定向到 index.php?cn=2
您将始终需要通过 GET 或 POST 发送您的连接 ID,并接收它,而不是在您的 $_SESSION var 中查找它。
希望对你有帮助
如果允许每个并发选项卡使用单独的数据库连接,则每个并发选项卡在向服务器发布请求时都需要指定该信息。
这可以像在每个表单的隐藏字段中包含数据库的标识符一样简单。 当用户在该页上选择其他数据库时,请更新该隐藏字段。 (主要是猜测这里的"隐藏字段"结构,因为我们不知道您的表单是如何布局的。 但关键是表单应包含此值。
这成为一种整体上更 REST 的方法,从会话状态转向由页面本身驱动的状态传输。 总的来说,这是一件好事。
基本上,由于对正在执行的操作(保存记录)的请求需要知道将其保存在哪里,因此请将该信息包含在请求本身中,而不是试图在服务器端处理该信息。
老实说,我会对你的问题采取不同的方法。
在服务器上设置子域,这些子域指向完全相同的 Web 文件夹,并具有硬编码的数据库连接设置。
db1.example.comdb2.example.comdb3.example.comdb4.example.com
现在,用户必须登录到正确的子域才能在所需的数据库上执行操作session_start()
以便实际为每个子域创建一个唯一的会话。
用户将能够打开 4 个选项卡,而不必担心使用错误的数据库。
因此,您的db_config.php
文件可能如下所示:
switch($sub_domain)
{
case 'db1.example.com':
// Code for connecting to DB1
break;
case 'db2.example.com':
// Code for connecting to DB2
break;
case 'db3.example.com':
// Code for connecting to DB3
break;
case 'db4.example.com':
// Code for connecting to DB4
break;
}
至于创建一个用于选择数据库的<select>
框的想法,您可以实现一些JS来打开指向正确子域的新选项卡。
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 如果用户输入的长度小于最小长度,则显示错误消息
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- 如何在使用XMLHttpRequest时向用户显示实际的网络错误
- 更改错误文本“用户 ID 或密码不正确”
- Facebook JavaScript SDK 检查用户是否为粉丝(错误:指定的版本无效)
- 更新:用户错误-TYPO!!grunt contrib咖啡错误查找文件&写入目的地
- MongoDB For Loop更新错误的用户
- 从Meteor呼叫向用户显示相应的错误消息
- 如果用户更改了url并且呈现了错误的视图
- 将字符串返回到类型为“0”的输出字段;数字“;针对用户错误javascript
- 使用 sailsjs 护照身份验证本地策略既不会给出任何错误,也不会对用户进行身份验证
- 访问不同的数据库,防止用户错误PHP
- 如何删除未定义的对象错误并根据位置重定向用户
- 当错误时清除cookie 使用护照反序列化用户.js
- 将数据发送给特定用户(套接字上缺少错误处理程序)
- 用户错误消息 |HTML 数据与 JavaScript
- Skype SDK入口点登录用户错误:NoFQDN
- 当用户错误地填写表单/遗漏了一些内容时,我如何通过ruby on rails上的JS显示错误消息
- 如何在MVC模型中通知用户错误