Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 22.06.2014
Сообщений: 7

Форма и добавления данных в базу

04.06.2016, 17:59. Показов 681. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Я уверен, где то на форуме уже есть решение подобного вопроса, но я уже дня 3 мучаюсь и перепробовал массу скриптов и решений данной проблемы, но она не решилась по прежнему. Проблема заключается в чем, если 3 страницы, регистрации, авторизации и проверки, в итоге при попытке зарегистрироваться, он выдает что такой логин уже есть, а занеся юзверя через phpmyadmin пишет что я в ввожу неверные данные. Вот код:
register.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?
$link = mysqli_connect("fdb15.agilityhoster.com", "2140303_mmm", "123456", "2140303_mmm");
 
if(isset($_POST['submit']))
{
    $err = array();
 
    # проверям логин
    if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))
    {
        $err[] = "Логин может состоять только из букв английского алфавита и цифр";
    }
 
    if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30)
    {
        $err[] = "Логин должен быть не меньше 3-х символов и не больше 30";
    }
 
    # проверяем, не сущестует ли пользователя с таким именем
    $query = mysqli_query($link, "SELECT COUNT(user_login) FROM users WHERE user_login='".mysqli_real_escape_string($link, $_POST['login'])."'");
    if(mysqli_num_rows($query) > '')
    {
        $err[] = "Пользователь с таким логином уже существует в базе данных";
    }
 
    # Если нет ошибок, то добавляем в БД нового пользователя
    if(count($err) == '')
    {
 
        $login = $_POST['login'];
 
      
        $password = md5(md5(trim($_POST['password'])));
 
        mysqli_query($link,"INSERT INTO `users` (`user_login`, `user_password`) VALUES ('login', 'password')");
        header("Location: login.php"); exit();
    }
    else
    {
        print "<b>При регистрации произошли следующие ошибки:</b><br>";
        foreach($err AS $error)
        {
            print $error."<br>";
        }
    }
}
?>
 
<form method="POST">
Логин <input name="login" type="text"><br>
Пароль <input name="password" type="password"><br>
<input name="submit" type="submit" value="Зарегистрироваться">
</form>
login.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?
function generateCode($length=6) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    $code = "";
    $clen = strlen($chars) - 1;
    while (strlen($code) < $length) {
            $code .= $chars[mt_rand(0,$clen)];
    }
    return $code;
}
 
$link=mysqli_connect("fdb15.agilityhoster.com", "2140303_mmm", "123456", "2140303_mmm");
mysqli_select_db($link, "users");
 
if(isset($_POST['submit']))
{
    # Вытаскиваем из БД запись, у которой логин равняеться введенному
    $query = mysqli_query($link,"SELECT user_id, user_password FROM users WHERE user_login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");
    $data = mysqli_fetch_assoc($query);
 
    # Сравниваем пароли
    if($data['user_password'] === md5(md5($_POST['password'])))
    {
        # Генерируем случайное число и шифруем его
        $hash = md5(generateCode(10));
 
        if(!@$_POST['not_attach_ip'])
        {
            # Если пользователя выбрал привязку к IP
            # Переводим IP в строку
            $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
        }
 
        # Записываем в БД новый хеш авторизации и IP
        mysqli_query($link, "UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");
 
        # Ставим куки
        setcookie("id", $data['user_id'], time()+60*60*24*30);
        setcookie("hash", $hash, time()+60*60*24*30);
 
        # Переадресовываем браузер на страницу проверки нашего скрипта
        header("Location: check.php"); exit();
    }
    else
    {
        print "Вы ввели неправильный логин/пароль";
    }
}
?>
<form method="POST">
Логин <input name="login" type="text"><br>
Пароль <input name="password" type="password"><br>
Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>
<input name="submit" type="submit" value="Войти">
</form>
check.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
$link=mysqli_connect("fdb15.agilityhoster.com", "2140303_mmm", "123456", "2140303_mmm");
mysqli_select_db($link, "users");
 
if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
{
    $query = mysqli_query($link, "SELECT *,INET_NTOA(user_ip) AS user_ip FROM users WHERE user_id = '".intval($_COOKIE['id'])."' LIMIT 1");
    $userdata = mysqli_fetch_assoc($query);
 
    if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id'])
 or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR'])  and ($userdata['user_ip'] !== "0")))
    {
        setcookie("id", "", time() - 3600*24*30*12, "/");
        setcookie("hash", "", time() - 3600*24*30*12, "/");
        print "Хм, что-то не получилось";
    }
    else
    {
        print "Привет, ".$userdata['user_login'].". Всё работает!";
    }
}
else
{
    print "Включите куки";
}
?>
Прошу помочь решить эту проблему

Добавлено через 8 минут
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.06.2016, 17:59
Ответы с готовыми решениями:

Форма добавления данных в БД
помогите преобразовать код!!! имею код страницы регистрации &lt;html&gt; &lt;head&gt; &lt;title&gt;АДМИНИСТРИРОВАНИЕ&lt;/title&gt; &lt;meta...

Ошибка добавления в базу данных
$code = random(5); $_SESSION = array( 'type' =&gt; 'register', 'email' =&gt; $_POST, 'name' =&gt; $_POST, 'password' =&gt;...

Форма добавления данных + вывод на одной странице
Доброго времени суток всем, не так давно начал изучать php/mysql/java, поэтому нуждаюсь в совете и наставлении). Коротко о том что...

3
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
04.06.2016, 18:46
Вы используете COUNT в запросе. Это означает, что ваш запрос в любом случае вернёт 1 строку, с количеством найденных записей. Поэтому это условие:
Цитата Сообщение от MixFraim Посмотреть сообщение
PHP
1
if(mysqli_num_rows($query) > '')
Бессмысленно. 1 строка всегда будет больше, чем ''.

В общем, уберите COUNT, а само условие можно сократить:
PHP
1
2
if(mysqli_num_rows($query))
    // логин занят
1
0 / 0 / 0
Регистрация: 22.06.2014
Сообщений: 7
04.06.2016, 19:30  [ТС]
Ну данные добавлять начал, но выдает теперь более странную ошибку, ругается на header на всех страницах
Что то из разряда: Warning: Cannot modify header information - headers already sent by
но при этом запись добавляет

Добавлено через 10 минут
Прошу прощения за глупый вопрос, решение нашел.
Спасибо

Добавлено через 23 минуты
Поправил header с помощью скрипта(на форуме нарыл) а как исправить эту проблему с куками? сайт не отправляет куки видимо, и чек не пускает дальше.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
04.06.2016, 20:35
MixFraim, тыц
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.06.2016, 20:35
Помогаю со студенческими работами здесь

Код добавления данных в базу перестал работать после изменения
всем привет. делаю форму для добавления данных в базу. в один момент все работало, но после изменения перестало. помогите пожалуйста,...

Нужна функция для записи в базу данных + форма
Нужна функция для записи в базу данных + форма (пример) Суть: отдельный файл с функциями и там же конект написан до базы, вот форма...

Компонент добавления URL адресов в базу данных.
Прошу помощи с PHP кодом У меня есть компонент для добавления пользователем URL адресов в базу данных. Функция компонента позволяет...

Форма отправки значений в Базу данных
выводит на браузере после добавления значений на формы Forbidden You don't have permission to access /&lt;php echo $_SERVER; on this...

Форма загрузки файлов с добавление имени в базу данных
Здравствуйте, есть форма и обработчик для загрузки файлов на сервер, подскажите как сделать что бы, на автомате имена обоих файлов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru