在多个页面上使用用户提供的数据库凭据

时间:2019-06-20 15:08:15

标签: php html mysql mysqli

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

我该如何克服这个问题?

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

1 个答案:

答案 0 :(得分:2)

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