Html-форма с php не подключается и не отображает ошибок

У меня есть этот код (HTML-форма) и еще один файл (PHP-логика), но при нажатии на кнопку «Отправить» ничего не происходит - ошибок тоже нет. Пожалуйста, помогите в чем дело.

<html>
<head>
<title> Registeration Form</title>
<link rel = "stylesheet" type = "text/css" href = "design.css">
</head>
<body>
<div class = "title"><h1>Register form </h1></div>
<div class = "container">
    <div class = "left"></div>
    <div class = "right">
        <div class = "formBox">
            <form action = "" method = "POST">
                <input type = "text" id = "fname" name = "firstname" placeholder = "First Name"/>
                <input type = "text" id = "lname" name = "lastname" placeholder = "Last Name"/>
                <input type = "text" id = "email" name = "email" placeholder = "Email"/>
                <input type = "password" name = "password1" placeholder = "Password" />
                <input type = "password" name = "password2" placeholder = "Confirm Password" />
                <input type = "submit" name = "submit">

            </form>
        </div>
    </div>
</div>

<?php


if (isset($_POST["submit"]))
{
    require'dbconnect.php';


    $firstname          = $_POST["firstname"];
    $lastname           = $_POST["lastname"];
    $email              = $_POST["email"];
    $password           = $_POST["password1"];
    $confirmPass        = $_POST["password2"];
    $encryptedPassword  = md5($password);


    mysqli_query($link,"insert into users(FirstName, LastName, Email, Password)
                values ($firstname, $lastname, $email,'$encryptedPassword')");
    echo "<br>";
}


?>


</body>
</html>

Вот код PHP, который подключается к SQL ... Я использую бит WAMP64 в Windows 10, но у меня аналогичная установка, у которой нет проблем, но этот код не работает ... Я пробовал все, что мог.

<?php

//Hostname on which MYSQL is stored
$hostname = "localhost";  
//MySQL server Username ... which is root
$username = "root";
// MySQL password which by default is empty 
$password = "";
//Database name to which we connect... 
$dbname = "signup";

// Connection to database;

$link = mysqli_connect ($hostname,$username,$password);

if (!$link){

    die ("Could not connect: ".mysql_error());

}

mysqli_select_db($link, $dbname);


?>

Ваш сценарий подвержен риску Атака с использованием SQL-инъекции. Посмотрите, что случилось с Маленькие столики Бобби. Даже если вы избегаете ввода, это небезопасно!. Используйте подготовленные параметризованные операторы.

John Conde 02.05.2018 03:07

Вы не знаете, что не так, потому что не проверяете ошибки в своем коде. Никогда не предполагайте, что код всегда будет работать безупречно. Используйте mysqli_error(), чтобы получить подробное сообщение об ошибке из базы данных.

John Conde 02.05.2018 03:08
md5() устарел для хеширования паролей и должен не использоваться. PHP предоставляет password_hash () и password_verify (), используйте их. А вот и хорошие идеи о паролях. Если вы используете версию PHP до 5.5, здесь доступен пакет совместимости.
John Conde 02.05.2018 03:08

Покажите свой ошибки

hungrykoala 02.05.2018 03:31

Что вы имеете в виду под «не работает»? У вас есть ошибки? Добавьте Отчет об ошибках вверху ваших файлов: ini_set("display_errors", 1); error_reporting(E_ALL); и расскажите нам, что вы получите.

Isiah Meadows 02.05.2018 03:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
95
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновлено:

Обратитесь к документации Функция mysqli_query в W3schools. Они описывают правильный подход к реализации вашего сценария. В вашем HTML-коде нет ничего плохого; этот раздел в порядке. Это чисто связано с вашим PHP. PHP не обнаружит никаких ошибок в указанном вами экземпляре; однако вам нужно будет отлавливать ошибки с помощью функции mysqli_error.

Еще одно замечание: в вашем коде вы не заключаете свои значения в одинарные кавычки '. Это также может вызвать ошибку MySQL, поскольку я считаю, что это часть синтаксиса (за исключением целых чисел).

Помните, что при написании кода Google - ваш лучший друг наряду с собственно документацией PHP.


Вот как я бы структурировал свой MySQLi:

<?php
if (isset($_POST["submit"]))
{
    require('dbconnect.php');


    $firstname          = $_POST["firstname"];
    $lastname           = $_POST["lastname"];
    $email              = $_POST["email"];
    $password           = $_POST["password1"];
    $confirmPass        = $_POST["password2"];
    $encryptedPassword  = md5($password);


    $sql = "INSERT INTO users(FirstName, LastName, Email, Password)
                VALUES ('$firstname', '$lastname', '$email', '$encryptedPassword')";

  if ($conn->query($sql) === TRUE) {
      echo "New record created successfully";
  } else {
      echo "Error: " . $sql . "<br>" . $conn->error;
  }
}
?>

и файл dbconnect.php к следующему:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "signup";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

Я установил MySQLi другим способом. Значения в INSERT я заключил в одинарные кавычки, а также добавил, чтобы вы могли улавливать любые ошибки, производимые MySQL.

Как уже упоминалось выше; md5 не является безопасным способом защиты ваших паролей, и ваш скрипт подвержен риску SQL-инъекция

Надеюсь, это укажет вам правильное направление!

Кто-нибудь хочет объяснить отрицательный голос? Сценарий, который я предоставил, все еще не защищен; отвечает на его вопрос. Он хотел, чтобы сценарий работал. Я отметил, что в этом плане все еще есть проблемы с безопасностью.

Lachie 02.05.2018 03:35

Я не голосовал против, но вы фактически не говорите им, как заставить скрипт работать. Вы просто говорите, как его отлаживать, что на самом деле не отвечает на вопрос. Это также не добавляет реальной ценности, поскольку комментарии уже говорят им обо всем этом.

John Conde 02.05.2018 03:45

@JohnConde хорошее замечание. Я обновил его, чтобы объяснить свой мыслительный процесс, в чем, по моему мнению, заключается проблема, и что он должен сделать, чтобы обнаружить проблему.

Lachie 02.05.2018 04:06

Похоже, это помогло

John Conde 02.05.2018 04:29

@JohnConde Идеально: D

Lachie 02.05.2018 04:33

Другие вопросы по теме