Странность в PHP-скрипте

elitedesign
На сайте с 25.10.2012
Offline
69
504

Друзья. Мой мозг похоже перегрелся, не могу сходу определить причину в своем же коде. Переработал видимо.

https://wappartner.club/123.txt

Почему то даже если пользователей в таблице еще нет, все равно выскакивает ошибка №5, при этом все выполняется согласно алгоритму (новый пользователь создается).

{"request":[{"error":"5"}]}

Почему? Не могу понять. Ошибка должна выскакивать только если пользователь с указанным e-mail уже существует в базе. При первом открытии, когда еще пользователей нет в базе, когда таблица users пустая, не должна выскакивать ошибка 5, а она выводится. При этом все работает согласно алгоритму, новый пользователь успешно создается.

Сломал голову, подскажите, где у меня ошибка в логике. Заранее спасибо за Ваше время.

edogs software
На сайте с 15.12.2005
Offline
775
#1

Более или менее логичное объяснение, что у Вас где-то ранее задается $data = ['error'=>'5']; , тем более что $data Вы не инициализируете.

Второй вариант что по какой-то причине у Вас скрипт вызывается 2 раза, Вы получаете второй ответ.

Из общих корявостей - зря escape-ите $POST['password'] в данной ситуации.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#2

т.е. пользователь создался, но у вас всё равно ошибка 5?

Браузер случаем два раза страницу не запрашивает?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
elitedesign
На сайте с 25.10.2012
Offline
69
#3

Спасибо всем. А также про замечание насчет escape для поля пароля (поправлю этот момент).

У меня данная страница инклудится из общего скрипта.

Вот общая картина происходящего:

Из этого файла: https://wappartner.club/012.txt

Инклудится вот этот: https://wappartner.club/123.txt

(подключается строчкой: include('./'.$api_name.'/'.$api_method.'.php'); в первом файле)

Как все задумывалось:

В скрипт POST-запросом (через PHP CURL) передаются данные о пользователе для добавления в таблицу. Идет проверка наличия пользователя в базе. Если его нет, то происходит добавление в таблицу. Если такой пользователь есть, то возникает ошибка 5. А у меня текст об ошибке 5 в любом случае выскакивает, причем сам алгоритм скрипта при этом почему то работает как нужно - пользователь проверяется и либо создается либо нет, если уже есть.

elitedesign
На сайте с 25.10.2012
Offline
69
#4

Заметил такую вещь. Из PHP не работала команда INSERT через MySQLi после обновления MySQL-сервера. Прочел, что нужно в my.conf прописать sql_mode = '';

После этого INSERT заработала. Сейчас провел эксперимент, в PHP-коде после выполнения любого INSERT в таблицу MYSQL, PHP игнорит к примеру вот такие записи: echo '123'; exit;

До выполнения INSERT строчка срабатывает, после выполнения уже нет.

Вот так echo '123'; exit; работает:

А вот так уже нет (игнорируется):

Чудеса. Уже начинаю думать в сторону криво работающего или криво настроенного mysql-сервера

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#5
. Прочел, что нужно в my.conf прописать sql_mode = '';

Нет. В новой версии строгие правила добавления данных. Вызовите ошибку mysql и вы увидите, что скорее всего проблема в структуре таблицы. Возможно добавляется NULL туда, куда этого нельзя делать.

elitedesign
На сайте с 25.10.2012
Offline
69
#6

Еще раз всем спасибо. Действительно, проблема была в том, что curl_exec($curl) вызывался два раза. В первом случае, когда была проверка на наличие ошибок, второй раз когда я хотел увидеть на экране результат ответа.

Удачной работы и хорошего настроения!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий