PHP Instert не будет вставлен в базу данных - PullRequest
0 голосов
/ 15 июня 2019

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

Я использую Mysqli, PHP и Wampserver для запуска локального сервера, и веб-сайт не будет отправлять данные в базу данных.

<?php 
include 'connect.php';
include 'header.php';

?>
Sign Up<br>
<form method="post" action="">

Username: <input type="text" name="user_name"><br>
password: <input type="password" name="user_pass"><br>
password <Check: input type="password" name="user_pass_check"><br>
Email: <input type="text" name="user_email"><br>
<input type="submit" value="Register">

</form>


<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $sql = "INSERT INTO users(user_name, user_pass,  user_email) VALUES('".mysqli_real_escape_string($con, $_POST['user_name'])."', '".sha1($_POST['user_pass'])."', '".mysqli_real_escape_string($con, $_POST['user_email'])."', NOW(), 0)";
    $result = mysqli_query($con, $sql);
    if (!$result) {
        echo 'Something went wrong';
        echo mysqli_error($con);
    } else {
        echo "you have successfully registered. you can now <a href='signin.php'>sign in</a> and start posting";
    }
}
}

include 'footer.php'?>

В моем файле используется для подключения

<?php

$host = 'localhost';
$user = 'root';
$pass = '';
$dbname = 'seqevents';
$con = new mysqli($host, $user, $pass, $dbname) or die("cannot connect");

session_start();
if (!isset($_SESSION['user_level'])) {
    $_SESSION['user_level'] = 0;
}

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

1 Ответ

1 голос
/ 15 июня 2019

Сначала (вероятная) проблема, затем некоторые другие важные указатели:

Когда вы вставляете, вы вставляете набор из 3 столбцов (user_name, user_pass, user_email), а затем загружаете в него 5 значений (NOW() и0) являются дополнительными, он не имеет ни малейшего понятия, где разместить эти значения.


  • НЕ ИСПОЛЬЗУЙТЕ MD5 .Если вы думаете «да, но мой сайт не очень интересен, почему это важно», прочитайте эту строку еще раз. НЕ ИСПОЛЬЗУЙТЕ MD5 .Или sha1:

    Никогда не храните пароли в виде открытого текста или с использованием MD5 / SHA1! Храните только хэши паролей.Используйте PHP password_hash() и password_verify().Если вы используете версию PHP ниже 5.5 (на что я действительно надеюсь, что вы нет), вы можете использовать библиотеку password_compat , чтобы получить ту же функциональность.- Дхарман

  • Используйте подготовленные высказывания.mysqli_real_escape_string - хороший первый шаг, но не достаточный.Подготовленные заявления защищают запрос для вас.Немного сложнее, намного более безопасно.

  • Я предлагаю удалить $_SERVER['REQUEST_METHOD'] === 'POST'.Что делать, если у вас есть две формы на вашей странице?Вы застряли.Вместо этого дайте вашей кнопке отправки имя, подобное submitRegForm.Тогда вы можете сделать if( isset($_POST['submitRegForm']) )

  • НЕ ИСПОЛЬЗОВАТЬ MD5 ИЛИ SHA1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...