С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381

Возникла проблема

17.08.2020, 14:56. Показов 1454. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сайт почему-то не видит поле username, считает его пустым. Кучу раз проверил, может чего-то не замечаю? Код пишу с Ajax
Код PHP:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$_POST['password'] = GenPass(FormChars($_POST['password']), $_POST['username']);
    $_POST['username'] = FormChars($_POST['username']);
    $_POST['rep_password'] = GenPass(FormChars($_POST['rep_password']), $_POST['username']);
    
    if (!$_POST['username'] or !$_POST['password'] or !$_POST['rep_password']) {
        echo "Oops... Something went wrong, check the fields you filled out. pass=".$_POST['password']."<br>name=".$_POST['username']."<br>rep_pass=".$_POST['rep_password'];
    } else {
        $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `username` FROM `users` WHERE `username` = '$_POST[username]'"));
        if (mysqli_num_rows($Row) > 0) {
            echo "This username is already in use.";
        } else {
            $result = mysqli_query($CONNECT, "INSERT INTO `users`  VALUES ('', '$_POST[username]', '$_POST[password]', 0)");
            echo "Успешно";
        }
    }
P.S. Я еще не писал проверку на то, одинаковы ли пароли, поэтому не обращайте внимание на это.
HTML:
HTML5
1
2
3
4
5
6
7
8
9
10
11
<div class="input-group mb-3">
               <input type="text" class="form-control" placeholder="Username" id="Username" required>
           </div>
           <div class="input-group mb-3">
                <input type="password" class="form-control" placeholder="Password" id="Password" required>
            </div>
            <div class="input-group mb-3">
                 <input type="password" class="form-control" placeholder="Repeat password" id="Rep_password" required>
             </div>
             <input type="button" class="btn btn-login-auth shadow-2 mb-4" id="enter" value="Signup">
             <div id="res"></div>
JS:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$(document).ready ( function () {
    $("#enter").bind("click", function () {
        $.ajax ({
            url: "/config",
            type: "POST",
            data: ({username: $("#Username").val(), password: $("#Password").val(), rep_password: $("#Rep_password").val()}),
            dataType: "html",
            success: function (data) {
                if(data == 'Успешно') window.location.href = "/signin";
                else res.innerHTML = data;
            }
        });
    });
});
Выдает следующее:
Oops... Something went wrong, check the fields you filled out.
pass=1e61b688323c442e187623ba14735fde
name=
rep_pass=1e61b688323c442e187623ba14735fd e
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.08.2020, 14:56
Ответы с готовыми решениями:

Возникла проблема с внесением данных в таблицу
Здравствуйте, столкнулся с такой проблемой при внесении новой записи в таблицу заполняются все поля кроме email if...

При добавлении LIMIT в запрос, возникла ошибка с fetch_assoc()
Есть функции: $mysqli=false; define(PER_PAGE,4); function connectDB(){ global $mysqli; $mysqli=new...

Возникла заминка с редиректом
Здравствуйте. Проблема в следующем: изменилась структура сайта, после чего возникла необходимость поставить 301 редирект с несуществущих...

24
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.08.2020, 15:53
Цитата Сообщение от deekep Посмотреть сообщение
Кучу раз проверил
А что именно проверял, и главное как?
0
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
17.08.2020, 15:56
deekep, смотрите что находится в POST:
PHP
1
2
3
var_dump($_POST);
exit;
$_POST['password'] = GenPass(FormChars($_POST['password']), $_POST['username']);
Вероятно что функция FormChars шалит. В одном случае там два параметра, в другом один.

И перед проверкой, было бы неплохо включить вывод ошибок.
0
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381
17.08.2020, 15:59  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
А что именно проверял, и главное как?
Код проверял, правильность написания и тд.

Добавлено через 1 минуту
Цитата Сообщение от sasha0012 Посмотреть сообщение
deekep, смотрите что находится в POST:
Вероятно что функция FormChars шалит. В одном случае там два параметра, в другом один.
Я пробовал записывать username без этой функции, все равно пусто
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.08.2020, 16:03
Цитата Сообщение от deekep Посмотреть сообщение
Код проверял, правильность написания и тд.
Правильность написания и т.д проверять нет смысла, интерпретатор и сам с этим справится. Я не зря спросил как, и выделил что это главное.
А примерно как надо проверять написано тут http://phpfaq.ru/debug
0
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381
17.08.2020, 16:04  [ТС]
PHP
1
2
var_dump($_POST);
exit;
Выдает следующее:
array(3) { ["password"]=> string(32) "1e61b688323c442e187623ba14735fde"
["username"]=> string(0) ""
["rep_password"]=> string(32) "1e61b688323c442e187623ba14735fde" }
0
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
17.08.2020, 16:12
Цитата Сообщение от deekep Посмотреть сообщение
Выдает следующее:
ну? Это что означает? Теперь открываете консоль и смотрите как js ругается. Вероятно он не найдет айдишник Username. Тогда копируем этот айдишник из кода js и поиском по файлу ищем его в коде документа.

Не по теме:


я исхожу из того что вы это поле заполняете перед отправкой



Добавлено через 1 минуту
или возможно у вас несколько id="Username" в документе
0
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381
17.08.2020, 16:13  [ТС]
Цитата Сообщение от sasha0012 Посмотреть сообщение
Теперь открываете консоль и смотрите как js ругается.
Консоль пустая

Цитата Сообщение от sasha0012 Посмотреть сообщение
или возможно у вас несколько id="Username" в документе
один
Я в первом сообщении скинул полный код
Миниатюры
Возникла проблема  
0
28 / 24 / 10
Регистрация: 26.04.2015
Сообщений: 307
17.08.2020, 16:26
Цитата Сообщение от sasha0012 Посмотреть сообщение
смотрите что находится в POST:
Цитата Сообщение от deekep Посмотреть сообщение
Код проверял, правильность написания и тд.
deekep, вас просили сказать, передаёт ли AJAX на сервер данные с клиента?
Сделайте отладку php-кода с установкой breakpoint'a на 1-й строке php-кода.
В ассоциативном массиве $_POST должны быть данные о 3-х ваших переменных с клиента - $_POST['password'], $_POST['username'] и $_POST['rep_password']. Если хотя бы одно из этих полей пустое при заполнении всех их на клиенте, то проблема в AJAX. Если все 3 поля по дебагу показывают данные, введенные на клиентской стороне - то проблемы уже в PHP.
И вам надо дальше делать пошаговую проверку просматривая как изменяются ваши php-переменные и адекватно ли ведёт себя код относительно логики написанного?

Добавлено через 8 минут
Цитата Сообщение от deekep Посмотреть сообщение
["username"]=> string(0) ""
проблема на клиенте.
войдите в инструменты разработчика (F12 если у вас Chrome) - Source - выберите ваш js-файлик с кодом вашего AJAX'a и на строке с AJAX'ом:
JavaScript
1
$.ajax ({
установите брейкпоинт, введите данные и нажмите кнопку c id#enter
и после введите в консоли вашего браузера вот такое:
JavaScript
1
$("#Username").val()
что выдаёт консоль? вы видите там введённое вами значение с именем юзера?
0
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
17.08.2020, 16:35
deekep, да элементарно перед отправкой смотрите что есть а чего нет:
JavaScript
1
2
3
4
5
$(document).ready ( function () {
    $("#enter").bind("click", function () {
         alert($("#Username").val());
        $.ajax ({
            .....
ну это же элементарные вещи...
0
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381
17.08.2020, 16:38  [ТС]
Цитата Сообщение от Wolver Посмотреть сообщение
что выдаёт консоль? вы видите там введённое вами значение с именем юзера?
Да, появляется
Миниатюры
Возникла проблема  
0
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
17.08.2020, 16:47
deekep, разницу между #Username и #username замечаете?
0
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381
17.08.2020, 16:48  [ТС]
Цитата Сообщение от sasha0012 Посмотреть сообщение
разницу между #Username и #username замечаете?
я везде в коде изменил на username, не волнуйтесь
0
28 / 24 / 10
Регистрация: 26.04.2015
Сообщений: 307
17.08.2020, 17:17
Цитата Сообщение от deekep Посмотреть сообщение
data: ({username: $("#Use....
а зачем у вас в data - круглые скобки?
по идее они тут излишние и достаточно фигурных.
ну а если бы была форма то можно было бы сериализовать поля примерно вот так:
JavaScript
1
data: $("#"+ajax_form).serialize()+ '&' + my_element.name + '=' + my_element.value,
Добавлено через 2 минуты
Цитата Сообщение от deekep Посмотреть сообщение
я везде в коде изменил на username, не волнуйтесь
вы после смены проверяли ещё раз php - возможно уже в $_POST всё нормально?
0
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381
17.08.2020, 17:23  [ТС]
Цитата Сообщение от Wolver Посмотреть сообщение
вы после смены проверяли ещё раз php
Проверял, ничего не изменялось
0
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381
17.08.2020, 17:32  [ТС]
Оказывается, никакое из полей не работает. Убрал функцию GenPass, пароль тоже оказался пустым.
PHP
1
2
3
 $_POST['password'] = FormChars($_POST['password']);
    $_POST['username'] = FormChars($_POST['username']);
    $_POST['rep_password'] = FormChars($_POST['rep_password']);
Больше ничего не менял.
В консоли введенные данные видны, а вот обработчик php считает их пустыми.
Миниатюры
Возникла проблема   Возникла проблема  
0
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381
17.08.2020, 17:38  [ТС]
Если не использовать FormChars(), то выходит такая картина.
Миниатюры
Возникла проблема  
0
28 / 24 / 10
Регистрация: 26.04.2015
Сообщений: 307
17.08.2020, 17:41
Цитата Сообщение от deekep Посмотреть сообщение
url: "/config"
у вас проблема вот тут - чё это за упоротое название php-файлика?)))
может вы как в Звёздных войнах III, когда Энакин садил подбитый крейсер на Корусант - "что-то отвалилось"?)

p.s.: ваш изначальный код в шапке поста полностью рабочий, если указать правильно URL к php-файлу.
Потому как у себя я вижу все 3 значения в $_POST на локалхосте тестя ваш код
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.08.2020, 17:45
Цитата Сообщение от deekep Посмотреть сообщение
Если не использовать FormChars(), то выходит такая картина.
В POST массиве значения могут быть 2 типов - строка или массив. Если там появился null, значит где-то ты его руками "испортил".

Не по теме:

Цитата Сообщение от Wolver Посмотреть сообщение
у вас проблема вот тут - чё это за упоротое название php-файлика?)))
Вполне нормальный url

0
116 / 31 / 18
Регистрация: 07.10.2018
Сообщений: 381
17.08.2020, 17:47  [ТС]
Цитата Сообщение от Wolver Посмотреть сообщение
у вас проблема вот тут
И правда, все дело лишь в названии файла. Изменил его и сразу заработало. Огромное спасибо))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.08.2020, 17:47
Помогаю со студенческими работами здесь

Возникла дилемма в php
Всем привет. Есть такой код: &lt;?php if(isset($_POST)) { $mysqli = new mysqli(&quot;localhost&quot;, &quot;root&quot;, &quot;&quot;, &quot;myBase&quot;); ...

Возникла идея создать программу
Возникла идея создать программу для загрузки информации из таблицы в excel-е в базу MySQL. Но так что бы он группировал информацию по...

Возникла проблема с gulp
При вводе слова &quot;gulp&quot; в cmd выводит следующую ошибку: PS C:\Users\aa068\Desktop\project&gt; gulp assert.js:350 throw err; ...

На вашем ПК возникла проблема...
Здравствуйте. У меня случилась такая ситуация после сброса параметров компьютера ( с сохранением личных файлов ), когда виндовс включаю не...

Возникла проблема с header
Занимался вёрсткой сайта. Была следующая идея: сделать header в него добавить на всю ширину картинку с названием сайта. Пока писал на ноуте...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru