У меня есть страница входа в PHP, которая отлично работает локально, но когда на сервере всегда появляется «Неверное имя пользователя или пароль». Я попробовал это на двух разных серверах, и результат был одинаковым.
session_start(); // Starting Session
$error = ''; // Variable To Store Error Message
if (isset($_POST['submit'])) {
if (empty($_POST['username']) || empty($_POST['password']))
{
$error = "Username or Password is invalid";
}
else
{
// Define $username1 and $password1
$username1 = $_POST['username'];
$password1 = $_POST['password'];
include_once ('lib/db.php');
$connection = new mysqli($servername, $username, $password, $dbname);
$username1 = stripslashes($username1);
$password1 = stripslashes($password1);
$username1 = mysql_real_escape_string($username1);
$password1 = mysql_real_escape_string($password1);
// SQL query to fetch information of registerd users and finds user match.
$query = "select * from login where PASSWORD='$password1' AND USERNAME='$username1'";
$result = $connection->query($query);
$rows = mysqli_num_rows($result);
if ($rows == 1)
{
$_SESSION['user']=$username1; // Initializing Session
$_SESSION['pppv'] = 10;
header("Location: logged-in.php"); // Redirecting To Other Page
}
else
{
$error = "Username or Password is invalid";
}
}
}
Попробуйте напечатать запрос после отправки, это даст мне следующее:
Местный:
select * from login where PASSWORD='test' AND USERNAME='test'
Сервер:
select * from login where PASSWORD='' AND USERNAME=''
использование isset($_POST['username']) ||isset($_POST['password'])
вместо empty($_POST['username']) || empty($_POST['password'])
,
Читать этот знать разницу между isset
а также empty
,
Там нет контекста, но проверьте эти вещи: