Я сделал сайт, который включает в себя логин, прежде чем вы сможете на самом деле использовать функции в нем. Когда я тестирую его на своем компьютере с помощью локального хоста, он работает просто отлично. Затем я создал платформу на QNap (это в основном NAS), а затем заменил localhost на IP-адрес NAS, где я также создал базу данных в 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», когда хранятся пользователи (имя пользователя и пароль). Что не так с этим кодом? Если я заменю IP-адрес и порт просто «localhost», я смогу использовать его на своей локальной машине. (Да, имя базы данных и таблица базы данных одинаковы на моем компьютере и на моем NAS)
Сервер mysql в QNap может быть недоступен за пределами localhost, это обычная функция безопасности, которую следует отключить только после серьезного рассмотрения.
Вы должны использовать туннелирование ssh для локального соединения с удаленного компьютера или, по крайней мере, использовать брандмауэр и фильтровать входящий порт и ips.
Попробуйте предоставить разрешения извне localhost:
mysql > GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Не забудьте перезапустить службу MySQL позже
Других решений пока нет …