php - 跨多个页面使用用户提供的数据库凭据
问题描述
我正在学习将 MySQL 与 PHP 一起使用,并且在练习时,我尝试使用 Core PHP 和 MySQL 创建一个简单的 Web 应用程序。总结如下:
- 它有一个非常简单的 html 页面,其中 MySQL 的用户名(uname)和密码(pword)以表单形式输入,并通过 POST 方法发送到名为 PHP1.php 的 PHP 脚本
-PHP1 连接到 MySQL。代码是(跳过PHP标签):
//Get input username and password
$username = $_POST['uname'];
$password = $_POST['pword'];
//Server information
$server = "localhost";
//Connect
$conn = new mysqli($server, $username, $password);
//Check success/failure
if ($conn -> connect_error)
{
die("Connection failed".$conn->connect_error);
}
连接后,PHP1 检索有关存储在各个帐户中的数据库的信息,并显示单选按钮以选择数据库,并通过 GET 方法将所选数据库的名称发送到另一个脚本 PHP2.php
-在 PHP2.php 中,我想在所选数据库中显示表格。但是,当控制权转移到 PHP2.php 时,与 MySQL 的连接将终止。我首先尝试在 PHP2.php 中包含我的 PHP1.php 文件并使用 $conn 变量,但是由于上述代码,它当然会尝试重新连接到 MySQL,同时,包含 uname 和 pword 的第一个请求是丢失导致身份验证错误。
我该如何克服这个问题?
编辑:我在这里看到了其他问题,但它们都有固定的用户名/密码,因此可以轻松地将连接脚本放在单独的文件中。我需要从用户那里获取用户名和密码。
解决方案
使用Sessions将跨页面持久化会话变量:
PHP1
session_start();
$_SESSION['username'] = $username = $_POST['uname'];
$_SESSION['password'] = $password = $_POST['pword'];
$server = "localhost";
$conn = new mysqli($server, $username, $password);
PHP2
session_start();
$username = $_SESSION['username'];
$password = $_SESSION['password'];
$server = "localhost";
$conn = new mysqli($server, $username, $password);
在 PHP1 中,您将要检查$_POST
值是否已设置,而在其他页面中,您将要检查$_SESSION
变量是否已设置。见isset。
推荐阅读
- apache-spark - 在 XGBoost 4J Spark 中训练随机森林
- json - 如何以表格格式而不是 JSON 文件制作 GCP 虚拟机清单?
- c# - VS2019 Enterprise 的性能调试项目非常慢
- ssl - 具有期货的启用 TLS 的服务器?
- google-cloud-platform - 如何将 Google Cloud Scheduler 配置为每天从早上 8 点到晚上 8 点每 4 小时运行一次?
- android - android Kotlin 中的 HTTP GET
- google-cloud-firestore - 有没有办法我可以在firestore文档的特定字段而不是整个文档上设置firestore触发器
- python - Python:在 python 数据框中创建包含列表作为其值的两列的组合
- customization - 如何在 peoplesoft 中快速获取自定义列表
- python - 在每个客户端 Python 的两个日期列表之间解析