Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Эльт
1 / 1 / 0
Регистрация: 04.04.2015
Сообщений: 11
#1

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

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

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

При регистрации пользователя отправляется в базу логин и пароль. Логин приходит успешно, а вот вместо пароля пустое место, хотя в базе 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2015, 16:58
Ответы с готовыми решениями:

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

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

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

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

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

8
Trukl
Заблокирован
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
Trukl
Заблокирован
04.04.2015, 17:44 #4
Потому что эту функцию используют перед выводом в "браузер". А при добавлении в БД она бесполезна.
1
Василий Макогон
269 / 225 / 11
Регистрация: 20.04.2012
Сообщений: 820
04.04.2015, 22:26 #5
Цитата Сообщение от Эльт Посмотреть сообщение
$login = htmlspecialchars($login);
люди, откуда вы берете эти примеры?
ну неужели трудно включить голову и посмотреть документацию?
htmlspecialchars нужен при ВЫВОДЕ данных
0
Para bellum
Эксперт PHP
3959 / 2945 / 931
Регистрация: 06.01.2011
Сообщений: 8,618
05.04.2015, 10:54 #6
Цитата Сообщение от Василий Макогон Посмотреть сообщение
люди, откуда вы берете эти примеры?
Попов. И этим всё сказано
0
Эльт
1 / 1 / 0
Регистрация: 04.04.2015
Сообщений: 11
06.04.2015, 14:55  [ТС] #7
Он самый Разбираю его примеры и переписываю удобнее и лучше... Думаю это лучший способ для обучения
0
Василий Макогон
269 / 225 / 11
Регистрация: 20.04.2012
Сообщений: 820
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2015, 19:04

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

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

PHP и submit - при повторном выборе возвращается пустое значение
На событие onChange выпадающего списка поставлен submit формы. Так вот, он...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru