在 QNap (NAS) 上使用 php 连接到 phpmyadmin
Connecting to phpmyadmin using php on a QNap (NAS)
我制作了一个包含登录名的网站,然后您才能实际使用其中的功能。当我使用本地主机在我的电脑上测试它时,它工作得很好。然后我在 QNap 上创建了一个平台(它基本上是一个 NAS),然后我用 NAS 的 IP 替换了本地主机,我还在 phpmyadmin 中创建了一个数据库。整个网站工作正常,但 login.php 页面无法工作,因为连接超时错误。这是 login.php 页面的代码,有什么问题吗?
<?php
//Start della sessione per tenere traccia dell'utente
session_start();
//Valori per connettersi al database
$host = "IP:Port";
$user = "root";
$password = "admin";
$db = "segnalazioni";
//Creazione connessione mysqli al database
$conn = mysqli_connect($host, $user, $password, $db);
//Errore che viene visualizzato in caso di login errato
$errore = "Tentativo di accesso non valido";
//Variabile visualizzata in caso l'username non e' specificato
$errorNoUsername = "Inserire i dati per loggare";
//Controllare se l'utente ha inserito l'username
if(isset($_POST['username'])){
//Se lo hanno fatto ecco le variabile per username e password
$userUsername = $_POST['username'];
$userPassword = $_POST['password'];
//Verifica se i dati esistono nel database
$sql = "SELECT * FROM utenti WHERE username='".$userUsername."' AND Password = '".$userPassword."'";
//Eseguire la query all'interno del database
$result = mysqli_query($conn, $sql);
//Controllare il risultato
if(mysqli_num_rows($result)==1){
//Sessione aperta con il nome utente
$_SESSION['username'] = $userUsername;
//Redirect nella location index.php
header("location:main.php");
} else {
//Messaggio di errore
echo $errore;
}
} else {
//Messaggio di errore in caso il username non e' specificato
echo $errorNoUsername;
}
?>
在我的数据库 "segnalazioni" 中,当存储用户(用户名和密码)时,有一个名为 "utenti" 的 Table。这段代码有什么问题?如果我只用 "localhost" 替换 IP 和端口,我就可以在我的本地机器上正常使用它。 (是的,数据库名称和数据库 table 在我的电脑和我的 NAS 上是相同的)
QNap 上的 mysql 服务器可能无法从本地主机外部访问,这是一种常见的安全功能,只有在认真考虑后才应禁用。
您应该使用 ssh 隧道从远程进行本地主机连接,或者至少使用防火墙并过滤入站端口和 ips
尝试从本地主机外部授予权限:
mysql > GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
记得之后重启mysql服务
我制作了一个包含登录名的网站,然后您才能实际使用其中的功能。当我使用本地主机在我的电脑上测试它时,它工作得很好。然后我在 QNap 上创建了一个平台(它基本上是一个 NAS),然后我用 NAS 的 IP 替换了本地主机,我还在 phpmyadmin 中创建了一个数据库。整个网站工作正常,但 login.php 页面无法工作,因为连接超时错误。这是 login.php 页面的代码,有什么问题吗?
<?php
//Start della sessione per tenere traccia dell'utente
session_start();
//Valori per connettersi al database
$host = "IP:Port";
$user = "root";
$password = "admin";
$db = "segnalazioni";
//Creazione connessione mysqli al database
$conn = mysqli_connect($host, $user, $password, $db);
//Errore che viene visualizzato in caso di login errato
$errore = "Tentativo di accesso non valido";
//Variabile visualizzata in caso l'username non e' specificato
$errorNoUsername = "Inserire i dati per loggare";
//Controllare se l'utente ha inserito l'username
if(isset($_POST['username'])){
//Se lo hanno fatto ecco le variabile per username e password
$userUsername = $_POST['username'];
$userPassword = $_POST['password'];
//Verifica se i dati esistono nel database
$sql = "SELECT * FROM utenti WHERE username='".$userUsername."' AND Password = '".$userPassword."'";
//Eseguire la query all'interno del database
$result = mysqli_query($conn, $sql);
//Controllare il risultato
if(mysqli_num_rows($result)==1){
//Sessione aperta con il nome utente
$_SESSION['username'] = $userUsername;
//Redirect nella location index.php
header("location:main.php");
} else {
//Messaggio di errore
echo $errore;
}
} else {
//Messaggio di errore in caso il username non e' specificato
echo $errorNoUsername;
}
?>
在我的数据库 "segnalazioni" 中,当存储用户(用户名和密码)时,有一个名为 "utenti" 的 Table。这段代码有什么问题?如果我只用 "localhost" 替换 IP 和端口,我就可以在我的本地机器上正常使用它。 (是的,数据库名称和数据库 table 在我的电脑和我的 NAS 上是相同的)
QNap 上的 mysql 服务器可能无法从本地主机外部访问,这是一种常见的安全功能,只有在认真考虑后才应禁用。
您应该使用 ssh 隧道从远程进行本地主机连接,或者至少使用防火墙并过滤入站端口和 ips
尝试从本地主机外部授予权限:
mysql > GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
记得之后重启mysql服务