Привет, есть код регистрации который отправляет запрос к двум таблицам, по скриншотам попробую обьяснить: Код (Text): <?php session_start(); include "db.php"; if (!empty($_SESSION['logged_user']->id)) header('location: check.php'); if (isset($_POST['login'])) { if (!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['password'])) { $name = $_POST['name']; $email = $_POST['email']; $password = $_POST['password']; $ref = $_SESSION['ref_id']; if(mysqli_num_rows(mysqli_query($con, "SELECT id FROM users WHERE name = '$name'"))!= 0) $error = "Пользователь с таким ником уже существует"; else if(mysqli_num_rows(mysqli_query($con, "SELECT id FROM users WHERE email = '$email'"))!= 0) $error = "Пользователь с таким email уже существует"; else { mysqli_query($con, "INSERT INTO `users` (name,email,password) VALUES('$name', '$email', '$password')"); $as = mysqli_query($con, "SELECT id FROM users WHERE email = '$email'"); $a = mysqli_fetch_assoc($as); $i = $a['id']; $_SESSION['logged_user']->id = $i; $user = mysqli_query($con, "SELECT `id` FROM `users` WHERE `email` = '$email'"); $a = mysqli_fetch_assoc($user); $us=$a['id']; $query = mysqli_query($con, "INSERT INTO `referals` (id, id_user, id_usser) VALUES('','$us', '$ref')"); } }else $error = "Заполните все поля"; } echo $error; ?> Регистрирую нового пользователя: но страница просто обновляется Но в бд данные сохраняются Но если снова в регистрацию ввожу те же данные начинает работать и перекидывает на др страницу, НО БД НЕ МЕНЯЕТСЯ , ТО ЕСТЬ 2 РАЗ НЕ СОХРАНЯЕТСЯ ДАННЫЕ --- Добавлено --- То есть мне надо 2 раза вводить данные в регистрацию
Если тебе нужно при вводе таких же данных изменить информацию тебе нужно делать UPDATE записи, но это не рекомендовано при регистрации. А проверку я твою увидел что ты сверяешь данные пользователя с тем что есть в бд. Я так полагаю что тут идет проверка на несуществование ID пользователя в сессии если его нет значит он не вошел на сайт.
PHP: session_start(); include "db.php"; if (!isset($_SESSION['logged_user']->id)) header('location: check.php'); if ($_SERVER['REQUEST_METHOD'] == 'POST') { # фильтруем данные $args = [ 'name' => [ 'filter' => FILTER_VALIDATE_REGEXP, 'options' => [ 'regexp' => '/^\S{3,20}$/u' ] ], 'email' => FILTER_VALIDATE_EMAIL, 'password' => FILTER_DEFAULT ]; $filter = filter_input_array(INPUT_POST, $args); $err = []; # Проверяем данные, правда проверка какая то у тебя смутная. if(mysqli_num_rows(mysqli_query($con, "SELECT `id` FROM `users` WHERE `name` = '$filter['name']'"))!= 0) { $err[] = "Пользователь с таким ником уже существует"; } else if(mysqli_num_rows(mysqli_query($con, "SELECT `id` FROM `users` WHERE `email` = '$filter['email']'"))!= 0) { $err[] = "Пользователь с таким email уже существует"; } if ( count( $err ) > 0 ) { echo implode (',', $err); } else { mysqli_query($con, "INSERT INTO `users` (`name`,`email`,`password`) VALUES('$filter['name']', '$filter['email']', '$filter['password']')"); $as = mysqli_query($con, "SELECT `id` FROM `users` WHERE `email` = '$filter['email']'"); $a = mysqli_fetch_assoc($as); $i = $a['id']; $_SESSION['logged_user']->id = $i; $user = mysqli_query($con, "SELECT `id` FROM `users` WHERE `email` = '$filter['email']'"); $a = mysqli_fetch_assoc($user); $us=$a['id']; $ref = $_SESSION['ref_id']; $query = mysqli_query($con, "INSERT INTO `referals` (`id`, `id_user`, `id_usser`) VALUES('','$us', '$ref')"); # точняк забыл редирект, редиректим пользователя на нужную страницу. header ('location: index.php'); exit(); } }
Алгоритм в принципе не очень. Профи используют уник. поля, безусловную вставку и проверяют ее результат. В ответ на POST делают редирект, а не полноценное echo пользователю.