Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужна помощь срочно по базам данным

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Почему при обновлении страницы повторно вносятся данные в базу если условие стоит на нажатии кнопки submit
ввв
Отправлено: 29 Августа, 2018 - 14:02:48
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2018  


Помог: 0 раз(а)




Почему при обновлении страницы повторно вносятся данные в базу если условие стоит на нажатии кнопки submit
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="style.css">

</head>
<body>
<?
//создание базы данных
$link=mysqli_connect('localhost','root','','reg');
mysqli_query($link,"SET NAMES 'UTF8'");
$query="CREATE DATABASE IF NOT EXISTS reg";
mysqli_query($link, $query)or die(mysql_error($link));
//создание разметки
/*$queryTable="CREATE TABLE users(
user_id INT(5) NOT NULL AUTO_INCREMENT,
surname VARCHAR(50),
name VARCHAR(50),
login VARCHAR(50),
email VARCHAR(50),
password INT(50),
PRIMARY KEY(user_id))";
mysqli_query($link, $queryTable)or die(mysqli_error($link));*/

if (isset($_POST[submit])) {
$surname=trim($_POST["surname"]);
$name=trim($_POST["name"]);
$login=trim($_POST["login"]);
$email=trim($_POST["email"]);
$password=trim($_POST["password"]);
$p_password=trim($_POST["p_password"]);
if ($password==$p_password) {
$queryUser1="INSERT INTO users (user_id,surname, name, login, email, password) VALUES
(NULL,'$surname','$name','$login','$email','$password')";
mysqli_query($link,$queryUser1)OR die(mysqli_error($link));;
mysqli_close($link);

}
else{
echo('Пароли не совпадают');
}

}
?>













<div class="wrap">
<div class="header">
<div class="vidjet">
<img class="vk" src="img/vk.png" width="4%"/>
<img class="vk" src="img/vk.png" width="4%"/>
<img class="vk" src="img/vk.png" width="4%"/></div>
<div class="logo">
<p >Checkalka</p>
</div>
<div>
<ul>
<li><a href="#">Химия</a></li>
<li><a href="#">Математика</a></li>
<li><a href="#">Физика</a></li>

</ul>

</div>
<div style="clear: both;"></div>
</div>
<div class="content">
<center><div class="regis"><p>Регистрация пользователя</p></div><br></center>
<form method="post" action="indexjj.php">
<div class="text">
<p class="danie">Фамилия</p><br><br>
<p class="danie">Имя</p><br><br>
<p class="danie">Логин</p><br><br>
<p class="danie">Эл.почта</p><br><br>
<p class="danie">Пароль</p><br><br>
<p class="danie">Подтвердите пароль</p><br><br>
</div>
<input class="registration" id="surname" type="text" name="surname" value=""><br><br>

<input class="registration" id="name" type="text" name="name" value=""><br><br>

<input class="registration" id="login" type="text"name="login" value="" ><br><br>

<input class="registration" id="email" type="email"name="email" value=""><br><br>

<input class="registration" id="password" type="password"name="password" value=""><br><br>

<input class="registration" id="password" type="password"name="p_password" value=""><br>
<br>
<center><input class="otprav" type="submit" name="submit" value="Зарегистрироваться" ></center>
</form>
</div>
</div>

</body>
</html>

(Отредактировано автором: 29 Августа, 2018 - 14:03:49)

 
 Top
Мелкий Супермодератор
Отправлено: 29 Августа, 2018 - 14:19:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Потому что браузер повторяет весь HTTP запрос. Некоторые браузеры дополнительно переспрашивают, мол будет форма отправлена второй раз, хотите?
А раз форма отправляется повторно - то и кнопка вместе с ней.

Не имеет никакого отношения к базам данных.
Обычно после успеха обработки формы делают редирект куда-то.


-----
PostgreSQL DBA
 
 Top
ввв
Отправлено: 29 Августа, 2018 - 14:23:28
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2018  


Помог: 0 раз(а)




Мелкий пишет:
Потому что браузер повторяет весь HTTP запрос. Некоторые браузеры дополнительно переспрашивают, мол будет форма отправлена второй раз, хотите?
А раз форма отправляется повторно - то и кнопка вместе с ней.

Не имеет никакого отношения к базам данных.
Обычно после успеха обработки формы делают редирект куда-то.


ну а как сделать ридерект
 
 Top
Мелкий Супермодератор
Отправлено: 29 Августа, 2018 - 14:49:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




ввв пишет:
ну а как сделать ридерект

Не пробовали задать такой вопрос своему любимому поисковику?

Отправить header location с адресом куда идти.
PHP:
скопировать код в буфер обмена
  1. header('Location: http://lmgtfy.com/?q=%D0%BA%D0%B0%D0%BA+%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C+%D1%80%D0%B8%D0%B4%D0%B5%D1%80%D0%B5%D0%BA%D1%82');
  2. // html с meta-тегом по желанию


-----
PostgreSQL DBA
 
 Top
ввв
Отправлено: 29 Августа, 2018 - 15:09:18
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2018  


Помог: 0 раз(а)




Мелкий пишет:
ввв пишет:
ну а как сделать ридерект

Не пробовали задать такой вопрос своему любимому поисковику?

Отправить header location с адресом куда идти.
PHP:
скопировать код в буфер обмена
  1. header('Location: http://lmgtfy.com/?q=%D0%BA%D0%B0%D0%BA+%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C+%D1%80%D0%B8%D0%B4%D0%B5%D1%80%D0%B5%D0%BA%D1%82');
  2. // html с meta-тегом по желанию

а куда вставить это
 
 Top
miketomlin
Отправлено: 29 Августа, 2018 - 19:22:01
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




Туда, где вставляете в БД.

И вынесите весь код для работы с БД перед разметкой. А то как-то по-дебильному смотрится.

И нафига пытаться БД и таблицу создавать на каждый чих? Лучше от SQL-инъекций избавьтесь и т.п.
 
 Top
ввв
Отправлено: 29 Августа, 2018 - 22:43:54
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2018  


Помог: 0 раз(а)




miketomlin пишет:
Туда, где вставляете в БД.

И вынесите весь код для работы с БД перед разметкой. А то как-то по-дебильному смотрится.

И нафига пытаться БД и таблицу создавать на каждый чих? Лучше от SQL-инъекций избавьтесь и т.п.

ну может не туда ну у меня ошибка пожалуйста ткните мне носам куда вставлять код выше
 
 Top
miketomlin
Отправлено: 30 Августа, 2018 - 13:52:30
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




В конец ветки, в которой выполняется вставка в БД.
(Добавление)
В ответ на POST не надо писать, что «Пароли не совпадают». Тоже делайте редирект. Либо просто на страницу с формой, либо на модиф. страницу с формой, на кот. выводится соотв. сообщение, например по адресу /form.php?error (а на форме проверяйте наличие параметра error и, если он присутствует, выводите сообщение об ошибке).
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB