Использование предоставленных пользователем учетных данных базы данных на нескольких страницах

Я учусь использовать MySQL с PHP, и во время практики я попытался создать простое веб-приложение, используя Core PHP и MySQL. Это кратко изложено ниже:

- Он имеет довольно простую html-страницу, где имя пользователя (uname) и пароль (pword) для MySQL вводятся в форму и отправляются методом POST в PHP-скрипт с именем PHP1.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/пароли, поэтому сценарий подключения можно легко поместить в отдельный файл. Я требую, чтобы взять имя пользователя и пароль от пользователя.

Я делаю что-то другое с mysqli_connect($server, $username, $password, $databasename);, и это работает очень хорошо. Если вам нужен пример этого, я опубликую ниже, так как вы используете new mysqli() Я не уверен, как это работает

Travis 20.06.2019 17:10

@Travis Ваш метод устанавливает соединение с базой данных в момент входа в систему, но я хочу сделать это позже, после получения информации от пользователя.

Hassaan 20.06.2019 17:15

на каждой странице вы подключаетесь к разным базам данных mysql с разными username и password?

TheLastStark 20.06.2019 17:16

@TheLastStark У меня есть несколько баз данных, созданных в одной учетной записи MySQL, и я хочу дать пользователю возможность выбрать базу данных и подключиться к ней, а затем показать таблицы в выбранной базе данных.

Hassaan 20.06.2019 17:20
БОЛЬШАЯ заметка ОЧЕНЬ необычно, чтобы веб-сайт/веб-приложение использовало конкретное имя пользователя/пароль пользователя для фактического подключения к базе данных. Гораздо более нормально, что сценарии PHP используют одну конкретную учетную запись и пароль для подключения к базе данных.
RiggsFolly 20.06.2019 17:21

Я не думаю, что есть способ подключиться к разным базам данных с другим паролем и именем пользователя без переустановки нового соединения.

TheLastStark 20.06.2019 17:23

я делаю это только ради практики. Но большое спасибо, что сообщили мне, что такие вещи практически не используются :) решение с использованием сессий работает так, как я хочу.

Hassaan 20.06.2019 17:27

Ясно, я думал, вы хотите использовать новую базу данных без повторного подключения с новым именем пользователя или паролем, я неправильно понял это предложение «но, конечно, он попытается повторно подключиться к MySQL», извините.

TheLastStark 20.06.2019 17:28
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
8
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте Сессии, который сохранит переменные сеанса на всех страницах:

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. См. Иссет.

Большое спасибо, сэр!

Hassaan 20.06.2019 17:24

Другие вопросы по теме