#php #html #mysql
#php #HTML #mysql
Вопрос:
Я создаю систему регистрации для своего веб-сайта. При создании новой учетной записи пользователь должен увидеть сообщение «Успешно создана новая учетная запись», а если учетная запись не может быть создана, пользователь должен увидеть сообщение «Не удалось создать новую учетную запись».
Я сделал так, что если пользователь не нажимает кнопку отправки формы на index.php и они пытаются печатать
websitename.com/verify_registration_form.php
в строке поиска они перенаправляются на index.php
Моя проблема в том, что пользователь перенаправляется на index.php независимо от того, нажали ли они кнопку отправки формы или нет.
Вот регистрационная форма на index.php
<form action="verify_registration_form.php" method="post">
<input type="username" id="user_name" name="user_name placeholder="Username" required>
<input type="password" id="user_pass_word" name="user_pass_word" placeholder="Password" required>
<input type="email" id="user_email" name="user_email" placeholder="Email" required>
<input type="submit" id="submit_registration_form_button" name="submit_registration_form_button" value="Sign Up">
</form>
Вот проверка формы на моем verify_registration_form.php файл
<?php
session_start();
if(isset($_POST["submit_registration_form_button")) {
$connection = mysqli_connect("localhost", "root", "",
"websiteusers");
if(!$connection) {
echo "Could not connect to MYSQL database";
}else{
$connection = mysqli_connect("localhost", "root", "", "websiteusers");
$username = mysqli_real_escape_string($connection, $_POST["user_name"]);
$userpassword = mysqli_real_escape_string($connection, $_POST["user_pass_word");
$hasheduserpassword = password_hash($password, PASSWORD_DEFAULT);
$useremail = mysqli_real_escape_string($connection, $_POST["user_email"]);
$sql = "SELECT UserName FROM websiteusers WHERE UserName='$username' OR UserEmail='$useremail'";
$result = mysqli_query($connection, $sql);
$user = mysqli_fetch_assoc($result);
$errors = array();
if($user) {
if($user["UserName"] === $username) {
array_push($errors, "That username is already taken. Please choose another one.");
}
if($user["UserEmail"] === $useremail) {
array_push($errors, "That email address is already taken. Please choose another email address.");
}
if(count($errors) == 0) {
$user_name = $username;
$user_pass_word = $hasheduserpassword;
$user_email = $useremail;
$query = "INSERT INTO websitusers (UserName, UserPassWord, UserEmail)
VALUES ('$user_name', '$user_pass_word', '$user_email')";
$connection = mysqli_connect("localhost", "root", "", "websiteusers");
if(mysqli_query($connection, $query)) {
echo "Successfully created a new account";
$_SESSION['username'] = $user_name;
$_SESSION['success'] = "Registration was a success";
}else{
echo "Could not create a new account";
}
}
}
}
}else{
header("Location: index.php");
}
?>
Ответ №1:
Это проверяет, отправил ли пользователь запрос:
if($_SERVER['REQUEST_METHOD'] != 'POST')
{
//user didn't press the register button
}
else
{
//user pressed the register button
}