Member 14620455 Ответов: 2

У меня есть проблема, когда я нажимаю на кнопку Отправить, ничего не происходит, и мои данные не вставляются в базу данных.


У меня есть проблема, когда я нажимаю на кнопку Отправить, ничего не происходит, и мои данные не вставляются в базу данных.

вот мой код.

Что я уже пробовал:

db_reg.php
<?php

	$host = "localhost";
	$email = "root";
	$password = "";
		
	$link = mysqli_connect($host, $email, $password) or die ("could not connect");
		
	$db = mysqli_select_db($link, "mdff") or die ("could not select database");

$add_fname=$_POST['fullname'];
$add_email=$_POST['email'];
$add_phone=$_POST['phoneNum'];
$add_password1=$_POST['password1'];
$add_password2=$_POST['password2'];

$query = "INSERT INTO admin(fname,email,phoneNum,password1,password2) VALUES('$add_fname','$add_email','$add_phone','$add_password1','$add_password2')";
$result = mysqli_query($link,$query) or die("query failed");

if($result)
	echo ("<SCRIPT LANGUAGE='JavaScript'>
					window.alert('Sign up Succesfully!.')
					window.location.href='signinUser.html'
					</SCRIPT>");			
else
	echo "Problem occured!";
mysqli_close($link);

?>


register2.html

<!doctype html>
<html class="no-js" lang="en">

<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <title>Sign up MDFF</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="shortcut icon" type="image/png" href="assets/images/icon/fire2.png">
    <link rel="stylesheet" href="assets/css/bootstrap.min.css">
    <link rel="stylesheet" href="assets/css/font-awesome.min.css">
    <link rel="stylesheet" href="assets/css/themify-icons.css">
    <link rel="stylesheet" href="assets/css/metisMenu.css">
    <link rel="stylesheet" href="assets/css/owl.carousel.min.css">
    <link rel="stylesheet" href="assets/css/slicknav.min.css">
    <!-- amchart css -->
    <link rel="stylesheet" href="https://www.amcharts.com/lib/3/plugins/export/export.css" type="text/css" media="all" />
    <!-- others css -->
    <link rel="stylesheet" href="assets/css/typography.css">
    <link rel="stylesheet" href="assets/css/default-css.css">
    <link rel="stylesheet" href="assets/css/styles.css">
    <link rel="stylesheet" href="assets/css/responsive.css">
    <!-- modernizr css -->
    <script src="assets/js/vendor/modernizr-2.8.3.min.js"></script>
</head>

<body>
    <!--[if lt IE 8]>
            <p class="browserupgrade">You are using an outdated browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
        <![endif]-->
    <!-- preloader area start -->
    <div id="preloader">
        <div class="loader"></div>
    </div>
    <!-- preloader area end -->
    <!-- login area start -->
    <div class="login-area login-s2">
        <div class="container">
            <div class="login-box ptb--95">
                <form>
                    <div class="login-form-head">
                        <h3>MONITORING & DETECTION FOREST FIRE</h3>
                        <br></br>
                        <h4>Sign Up</h4>
                    </div>
                    <div class="login-form-body" name="register2" action="db_reg.php" method="POST">
                        <div class="form-gp">
                            <label for="Inputfullname">Full Name</label>
                            <input type="text" id="Inputfullname" name="fullname" required>
                            
                        </div>
                        <div class="form-gp">
                            <label for="exampleInputEmail1">Email address</label>
                            <input type="email" id="exampleInputEmail1" name="email" required>
                            
                        </div>
                        <div class="form-gp">
                            <label for="exampleInputPhone1">Phone Number</label>
                            <input type="text" id="exampleInputPhone1" name="phoneNum" required>
                            
                        </div>
                        <div class="form-gp">
                            <label for="exampleInputPassword1">Password</label>
                            <input type="password" id="exampleInputPassword1" name="password1" required>
                            
                        </div>
                        <div class="form-gp">
                            <label for="exampleInputPassword2">Confirm Password</label>
                            <input type="password" id="exampleInputPassword2" name="password2" required>
                            
                        </div>
                        <div class="submit-btn-area">
                            <!--<a href="#" class="btn btn-primary btn-md" role="button">Submit   </a>-->
                            <td><input type="submit" value="Submit"></td>
                        </div>
                        <div class="form-footer text-center mt-5">
                            <p class="text-muted">Do have an account? <a href="login2.html">Sign in</a></p>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
    <!-- login area end -->

    <!-- jquery latest version -->
    <script src="assets/js/vendor/jquery-2.2.4.min.js"></script>
    <!-- bootstrap 4 js -->
    <script src="assets/js/popper.min.js"></script>
    <script src="assets/js/bootstrap.min.js"></script>
    <script src="assets/js/owl.carousel.min.js"></script>
    <script src="assets/js/metisMenu.min.js"></script>
    <script src="assets/js/jquery.slimscroll.min.js"></script>
    <script src="assets/js/jquery.slicknav.min.js"></script>
    
    <!-- others plugins -->
    <script src="assets/js/plugins.js"></script>
    <script src="assets/js/scripts.js"></script>
</body>

</html>

2 Ответов

Рейтинг:
2

Luc Pattyn

Ответ находится в документации: HTML-форма[^]. Прочтите все это!

:)


Рейтинг:
1

Patrice T

$query = "INSERT INTO admin(fname,email,phoneNum,password1,password2) VALUES('$add_fname','$add_email','$add_phone','$add_password1','$add_password2')";

Не обязательно решение вашего вопроса, но у вас есть еще одна проблема.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Richard MacCutchan

Это не конкатенация.

Patrice T

В PHP он называется "интерполяция строк", но результат тот же.

Richard MacCutchan

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

Patrice T

Эта ссылка объясняет это лучше, чем я могу
PHP: SQL-инъекция - руководство пользователя[^]

Richard MacCutchan

Ну, вышеприведенное утверждение все еще не использует конкатенацию строк. Посмотрите внимательно, и вы увидите, что это параметр встроенного выражения.

Patrice T

Где вы видите здесь праметеров ?

$query = "INSERT INTO admin(fname,email,phoneNum,password1,password2) VALUES('$add_fname','$add_email','$add_phone','$add_password1','$add_password2')";
$result = mysqli_query($link,$query) or die("query failed");

Richard MacCutchan

Все поля внутри набора значений.

Patrice T

Это переменные php, и они заменяются их содержимым, поскольку строка хранится в $query. Таким образом, инъекция.

Richard MacCutchan

Спасибо. Я перечитал документацию несколько раз и думаю, что теперь понимаю.

Patrice T

Дьявол кроется в деталях :)