Всякий раз, когда я пытаюсь сохранить вход пользователя в базу данных MySQL, он сохраняет пустые строки сразу после загрузки страницы. Вот мой файл index.php:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
$uName = mysqli_real_escape_string(mysqli_connect($servername, $username,
$password, $dbname), $_POST['username']);
$pass = mysqli_real_escape_string(mysqli_connect($servername, $username,
$password, $dbname), $_POST['password']);
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO users (username, password)
VALUES ('$uName', '$pass')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
<!DOCTYPE html>
<html>
<body>
<form action="index.php" method="post">
<input type="text" name="username"> <br> <br>
<input type="password" name="password"> <br> <br>
<input type="submit" name="submit">
</form>
</body>
</html>
Пожалуйста, скажите мне, есть ли что-то, что я делаю неправильно. Спасибо
См. Измененный код ниже:
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if(isset($_POST['submit'])){
$uName = mysqli_real_escape_string(mysqli_connect($servername, $username,
$password, $dbname), $_POST['username']);
$pass = mysqli_real_escape_string(mysqli_connect($servername, $username,
$password, $dbname), $_POST['password']);
$sql = "INSERT INTO users (username, password)
VALUES ('$uName', '$pass')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}
?>
<!DOCTYPE html>
<html>
<body>
<form action="" method="post">
<input type="text" name="username"> <br> <br>
<input type="password" name="password"> <br> <br>
<input type="submit" name="submit">
</form>
</body>
</html>
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if(isset($_POST['submit']))
{
$uName=$_POST['username'];
$password=$_POST['password'];
$sql = "INSERT INTO users (username, password) VALUES ('$uName', '$pass')";
if(mysqli_query($conn, $sql)){
{
echo "New record inserted successfully";
}
else
{
echo "There have some problem";
}
}
?>
Примерьте вот это
mysqli_real_escape_string()
а затем еще один после. Это очень плохо для производительности. Вам также следует использовать подготовленные операторы вместо того, чтобы вручную экранировать и объединять ваши запросы.password_hash()
иpassword_verify()
. Если вы используете версию PHP ниже 5.5 (на что я действительно надеюсь), вы можете использовать библиотеку password_compat для получения той же функциональности.