Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 04.04.2015
Сообщений: 11
1

Пустое значение в БД

04.04.2015, 16:58. Показов 1792. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Перелопатил "пол интернета" :р, но не нашел решения проблемы, прошу помощи! Проблема заключается:

При регистрации пользователя отправляется в базу логин и пароль. Логин приходит успешно, а вот вместо пароля пустое место, хотя в базе password NOT NULL! Подскажите в чем может крыться ошибка
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
<?php
    if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
    if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
 if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    {
    exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
    }
    //если логин и пароль введены, то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
    $login = stripslashes($login);
    $login = htmlspecialchars($login);
 $password = stripslashes($password);
    $password = htmlspecialchars($password);
 //удаляем лишние пробелы
    $login = trim($login);
    $password = trim($password);
 // подключаемся к базе
    include ("db.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 
 // проверка на существование пользователя с таким же логином
    $result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
    $myrow = mysql_fetch_array($result);
    if (!empty($myrow['id'])) {
    exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
    }
 // если такого нет, то сохраняем данные
    $result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
    // Проверяем, есть ли ошибки
    if ($result2=='TRUE')
    {
    echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a>";
    }
 else {
    echo "Ошибка! Вы не зарегистрированы.";
    }
    ?>
Добавлено через 6 минут
Форма регистрации, она проста и в ней все вроде правильно

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
    <head>
    <title>Регистрация</title>
    </head>
    <body>
    <h2>Регистрация</h2>
    <form action="save_user.php" method="post">
<p>
    <label>Ваш логин:<br></label>
    <input name="login" type="text" size="20" maxlength="20">
    </p>
<p>
    <label>Ваш пароль:<br></label>
    <input name="password" type="password" size="20" maxlength="20">
    </p>
<p>
    <input type="submit" name="submit" value="Зарегистрироваться">
</p></form>
    </body>
    </html>
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2015, 16:58
Ответы с готовыми решениями:

Пустое значение в POST
Всем день добрый, возникла следующая проблема, которую ни как не удается решить. Имеется форма...

следующие пустое значение массива
Здравствуйте! Такая проблема, есть массив: Array ( =&gt; 2 =&gt; 4 =&gt; =&gt; =&gt; ) Как в этом...

Присваивается пустое значение в цикле
Здравствуйте, подскажите пожалуйста, в чем мб ошибка. Есть текстовый файл, достаем оттуда...

Пустое значение ключа массива
Подскажите. Если имеем массив в котором имеются пустые значения 1 =&gt; &quot;bar&quot;, 2 =&gt; &quot;foo&quot;, 3...

8
Заблокирован
04.04.2015, 17:05 2
Лучший ответ Сообщение было отмечено Эльт как решение

Решение

Цитата Сообщение от Эльт Посмотреть сообщение
if (empty($login) or empty($password))
Ты же их
Цитата Сообщение от Эльт Посмотреть сообщение
{ unset($login);
{ unset($password);}
а значит:
PHP
1
if (!isset($login) or !isset($password))
PHP
1
2
3
4
5
6
$login = stripslashes($login);
//$login = htmlspecialchars($login); это лишняя строка 
$password = stripslashes($password);
//$password = htmlspecialchars($password); это лишняя строка 
 
$result2 = mysql_query ("INSERT INTO `users` (`login`,`password`) VALUES('$login','$password')")// тут добавь кавычки на всякий случай и проверь правильно ли написано password в таблице.
1
1 / 1 / 0
Регистрация: 04.04.2015
Сообщений: 11
04.04.2015, 17:38  [ТС] 3
Спасибо, дело было в кавычках, можно поподробнее почему htmlspecialchars это лишние? И за isset спасибо!
0
Заблокирован
04.04.2015, 17:44 4
Потому что эту функцию используют перед выводом в "браузер". А при добавлении в БД она бесполезна.
1
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
04.04.2015, 22:26 5
Цитата Сообщение от Эльт Посмотреть сообщение
$login = htmlspecialchars($login);
люди, откуда вы берете эти примеры?
ну неужели трудно включить голову и посмотреть документацию?
htmlspecialchars нужен при ВЫВОДЕ данных
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
05.04.2015, 10:54 6
Цитата Сообщение от Василий Макогон Посмотреть сообщение
люди, откуда вы берете эти примеры?
Попов. И этим всё сказано
0
1 / 1 / 0
Регистрация: 04.04.2015
Сообщений: 11
06.04.2015, 14:55  [ТС] 7
Он самый Разбираю его примеры и переписываю удобнее и лучше... Думаю это лучший способ для обучения
0
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
06.04.2015, 15:41 8
Цитата Сообщение от Эльт Посмотреть сообщение
Думаю это лучший способ для обучения
тебя два человека сейчас носом ткнули в факт того, что это - ересь и говнокод. Это наихудший способ для изучения. Хуже только заставить обезьяну на php писать.

в контексте примера
Цитата Сообщение от Trukl Посмотреть сообщение
$login = htmlspecialchars($login);
функция htmlspecialchars ВООБЩЕ не нужна. Она отвечает за форматирование в мнемоники служебных символов HTML. Она нужна при выводе пользовательских данных, которые забил пользователь (например, сообщения из гостевой книги), а не когда ты хочешь "обезопасить" данные, которые потом будут в SQL запросе использоваться.

А как-раз эскейпинга данных в запросе нет.

В общем читай правильные ресурсы, например phpfaq.ru , а не говнокод попова изучай.
1
1 / 1 / 0
Регистрация: 04.04.2015
Сообщений: 11
06.04.2015, 19:04  [ТС] 9
ну это хорошо что тыкают, скрипт и вправду говно, вот сижу и меняю его. А ресурсы черпаю не только с пхпфак, но и пхп.нет. На счет htmlspecialchars уже понял давно и стер к чертям)
1
06.04.2015, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2015, 19:04
Помогаю со студенческими работами здесь

Htmlspecialchars() выдаёт пустое значение
Учусь по книге. Ввёл один из примеров и получилось не так как в книге. &lt;? $name = $_GET;...

Пустое значение $POST выдает ошибку
Привет всем. Когда в $POST нет ни какого значения браузер выводит ошибку такого вида Undefined...

Зачем присваивать переменной $salt пустое значение?
В качестве примера возьму обычный метод, который генерирует соль для пароля(скопипастил с какого то...

Пустое значение
Доброе время суток этот скрипт обновлять список сообщений при приходе нового сообщения &lt;?php...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru