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
Форумы портала PHP.SU :: Версия для печати :: Нужна помощь срочно по базам данным
Форумы портала PHP.SU » » Вопросы новичков » Нужна помощь срочно по базам данным

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

1. ввв - 29 Августа, 2018 - 14:02:48 - перейти к сообщению
Почему при обновлении страницы повторно вносятся данные в базу если условие стоит на нажатии кнопки 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>
2. Мелкий - 29 Августа, 2018 - 14:19:50 - перейти к сообщению
Потому что браузер повторяет весь HTTP запрос. Некоторые браузеры дополнительно переспрашивают, мол будет форма отправлена второй раз, хотите?
А раз форма отправляется повторно - то и кнопка вместе с ней.

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

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


ну а как сделать ридерект
4. Мелкий - 29 Августа, 2018 - 14:49:40 - перейти к сообщению
ввв пишет:
ну а как сделать ридерект

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

Отправить 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-тегом по желанию
5. ввв - 29 Августа, 2018 - 15:09:18 - перейти к сообщению
Мелкий пишет:
ввв пишет:
ну а как сделать ридерект

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

Отправить 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-тегом по желанию

а куда вставить это
6. miketomlin - 29 Августа, 2018 - 19:22:01 - перейти к сообщению
Туда, где вставляете в БД.

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

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

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

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

ну может не туда ну у меня ошибка пожалуйста ткните мне носам куда вставлять код выше
8. miketomlin - 30 Августа, 2018 - 13:52:30 - перейти к сообщению
В конец ветки, в которой выполняется вставка в БД.
(Добавление)
В ответ на POST не надо писать, что «Пароли не совпадают». Тоже делайте редирект. Либо просто на страницу с формой, либо на модиф. страницу с формой, на кот. выводится соотв. сообщение, например по адресу /form.php?error (а на форме проверяйте наличие параметра error и, если он присутствует, выводите сообщение об ошибке).

 

Powered by ExBB FM 1.0 RC1