【问题标题】:Using user-supplied database credentials across multiple pages跨多个页面使用用户提供的数据库凭据
【发布时间】:2019-11-03 10:46:37
【问题描述】:

我正在学习将 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 中,我想在选定的数据库中显示 TABLES。 但是,当控制权转移到 PHP2.php 时,与 MySQL 的连接将终止。我首先尝试将我的 PHP1.php 文件包含在 PHP2.php 中并使用 $conn 变量,但由于上述代码,它当然会尝试重新连接到 MySQL,同时,包含 uname 和 pword 的第一个请求是丢失导致身份验证错误。

我该如何克服这个问题?

编辑: 我在这里看到了其他问题,但它们都有固定的用户名/密码,因此可以轻松地将连接脚本放在单独的文件中。我需要从用户那里获取用户名和密码。

【问题讨论】:

  • 我对@9​​87654322@ 做了一些不同的事情,效果很好。如果您想要一个示例,我将在下面发布,因为您使用的是 new mysqli() 我不确定它是如何工作的
  • @Travis 您的方法在登录时会连接到数据库,但我想在从用户那里获取信息后稍后再做。
  • 在每一页你是否连接到不同的mysql数据库,有不同的usernamepassword
  • @TheLastStark 我在一个 MySQL 帐户中创建了多个数据库,我想让用户选择选择数据库并连接到它,然后显示所选数据库中的表。
  • 重要提示 网站/Web 应用程序会使用用户特定的用户名/密码来实际连接到数据库是非常不寻常的。 PHP 脚本使用一个特定帐户和密码来连接数据库更为正常。

标签: php html mysql mysqli


【解决方案1】:

使用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

【讨论】:

  • 非常感谢先生!
猜你喜欢
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多