Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Простенький вопрос по PHP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt

Цитата:
 забыли уточнить код HTTP 301

По умолчанию идет 302, так что роли особой не играет.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 11:38 27-04-2020
sem88

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вопрос.  есть база нужно реализовать поиск по  email,  если такой уже в базе, то  выдать сообщение "есть совпадение", если нет, то так же написать об этом.
 
первая часть сделана
$query = "SELECT * FROM `tab`  WHERE `email` LIKE  '$email' ";  
 
$result  =  mysqli_query( $link,  $query);
          
     while ($row = mysqli_fetch_array($result))
         {
                         if  ($row['email'] == $email) {echo "есть совпадение ";}
 
                       }
 
а вот как сделать, чтобы выдавалось сообщение, что "совпадений не найдено" ?

Всего записей: 79 | Зарегистр. 13-04-2007 | Отправлено: 19:52 13-05-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sem88
Жуть, зачем вытаскивать адреса по like и потом в цикле сравнивать?
 
Что мешает сделать WHERE email = 'адрес' и если что то вернулось (можно даже не возвращать данные, а просто count), то есть, а иначе- нет.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 20:01 13-05-2020
sem88

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Цитата:
Жуть, зачем вытаскивать адреса

в меру своего  понимания, учимся.  
 
 
Цитата:
Что мешает сделать WHERE email = 'адрес' и если что то вернулось (можно даже не возвращать данные, а просто count), то есть, а иначе- нет.

 
почитал про count (Посчитать количество элементов массива), как это можно применить сюда?

Всего записей: 79 | Зарегистр. 13-04-2007 | Отправлено: 20:13 13-05-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sem88
$query = "SELECT count(*) FROM `tab`  WHERE `email`= '$email' "
Можно даже без count - тогда просто смотрим вернулось ли что - есть, иначе нет.
С count смотрим какое число вернулось - 0 если ничего нет и больше, если есть.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 20:26 13-05-2020
sem88

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii спасибо за ответ.
Но если я правильно понимаю,  ваш вариант работает, только если мы хотим узнать - да или нет. А если еще нужно будет  выдать - Да есть и вывести запись, где именно встречается этот email, мы можем обойтись без цикла? Я так понимаю, что нет.

Всего записей: 79 | Зарегистр. 13-04-2007 | Отправлено: 10:00 18-05-2020 | Исправлено: sem88, 10:55 18-05-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sem88

Цитата:
ваш вариант работает, только если мы хотим узнать - да или нет.

читаем первое сообщение
 

Цитата:
есть база нужно реализовать поиск по  email,  если такой уже в базе, то  выдать сообщение "есть совпадение", если нет, то так же написать об этом.

если хочется выводить, то да, в цикле, и если поле не уникальное.  но не через LIKE делать запрос.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 22:24 18-05-2020
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не пойму, почему shuffle не работает в таком коде?

Код:
 
$ids = [195, 94, 103];
 
echo '<pre>';
print_r($ids);
shuffle($ids);
echo '<pre>';
print_r($ids);die;
 

Вывод всегда один:

Код:
 
Array
(
    [0] => 195
    [1] => 94
    [2] => 103
)
Array
(
    [0] => 94
    [1] => 103
    [2] => 195
)
 

 
Добавлено:
Есть ли реальный вариант рандомизировать?

Всего записей: 1066 | Зарегистр. 14-03-2014 | Отправлено: 21:22 21-06-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber
значит у вас при запуске или как то иначе генератор сидится одинаково
читать о mt_srand
 
но можете протестировать тут - http://sandbox.onlinephpfunctions.com/
вывод меняется.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 21:28 21-06-2020 | Исправлено: Mavrikii, 21:38 21-06-2020
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Похоже эта штука применена...
PHP srand problems with suhosin

Всего записей: 1066 | Зарегистр. 14-03-2014 | Отправлено: 21:54 21-06-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
Похоже эта штука применена

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

Код:
mt_srand(0);
 
$ids = [195, 94, 103];
 
echo '<pre>';
print_r($ids);
shuffle($ids);
echo '<pre>';
print_r($ids);die;
 

где аргумент mt_srand не ноль, а что то еще. поэтому генератор выдает одни и те же ситуации при запуске.
нужно искать, где и как сидируется генератор.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 21:57 21-06-2020 | Исправлено: Mavrikii, 22:09 21-06-2020
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спс большое, буду смотреть. На том же сервере с той же версией php, только на другом вирт.сайте nginx все работает.

Всего записей: 1066 | Зарегистр. 14-03-2014 | Отправлено: 22:22 21-06-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber
возможно копать в сторону https://www.php.net/manual/en/ini.core.php#ini.auto-prepend-file
то есть прописан файл, который подключается перед всеми файлами, там может стоять сид.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 22:27 21-06-2020
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Остановил memcached - начало генерировать. Видимо надо в его настройки посмотреть.

Всего записей: 1066 | Зарегистр. 14-03-2014 | Отправлено: 23:01 21-06-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
Остановил memcached - начало генерировать.

он не имеет никакого отношения к генератору.
как вариант - вывод работы вашего скрипта кэшируется на какое то время.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 23:03 21-06-2020
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
как вариант - вывод работы вашего скрипта кэшируется на какое то время.

Псц) Конечно же... В этом дело и было. Хотя несколько раз делал "memcached restart".

Всего записей: 1066 | Зарегистр. 14-03-2014 | Отправлено: 23:06 21-06-2020
The_Immortal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
 
Происходят поистине мистические вещи. Работаю в LXC-контейнере под Proxmox. Версия PHP: 7.1.33-16+ubuntu18.04.1+deb.sury.org+1
 
Проблема в том, что одно из сторонних приложений делает сравнение

Код:
$timeZoneLocal = date_default_timezone_get();
$timeZoneGlobal = ini_get('date.timezone');
if (strcmp($timeZoneLocal, $timeZoneGlobal) || strlen($timeZoneGlobal) < 1) {
// если сюда попадаем, то далее будет всё плохо
} else {
    echo Html::tag('p', "Установленный часовой пояс: {$timeZoneGlobal}");
}

Что выводит браузер при этом:

Код:
$timeZoneLocal = date_default_timezone_get(); // пусто
$timeZoneGlobal = ini_get('date.timezone'); // UTC

Захожу на сервер и смотрю что там:

Код:
php -r "var_dump(ini_get('date.timezone'),date_default_timezone_get());"
string(0) ""
string(13) "Europe/Moscow"

Вызываю в браузере

Код:
<?php
phpinfo();
?>
Обращаю внимание на всякий случай на
Код:
Loaded Configuration File /etc/php/7.1/fpm/php.ini  
Далее перехожу к блоку date, где наблюдаю:

Код:
date/time support enabled
timelib version 2016.05
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone UTC

Возвращаюсь в консоль, вывожу php -i и смотрю блок date:

Код:
date/time support => enabled
timelib version => 2016.05
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => Europe/Moscow

Проверяю файл /etc/php/7.1/fpm/php.ini:

Код:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Moscow
Больше в этом файле по-поводу timezone ничего не обнаруживается.
 
Вопрос в общем-то один: что вообще происходит?
 
Спасибо!

Всего записей: 1496 | Зарегистр. 10-01-2009 | Отправлено: 04:35 03-08-2020 | Исправлено: The_Immortal, 04:37 03-08-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
The_Immortal
консольная версия php и fpm - это разные вещи, с разными конфигурационными файлами.
консольный конфиг в папке cli, а fpm в папке fpm.
 
сделайте php --ini и увидите откуда грузится.
для fpm вы нашли, для cli будет
/etc/php/7.1/cli/php.ini
 

Цитата:
Проверяю файл /etc/php/7.1/fpm/php.ini:

сдается мне, что все же посмотрели в cli

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 04:45 03-08-2020 | Исправлено: Mavrikii, 04:51 03-08-2020
The_Immortal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, а как мне тогда решить проблему? А именно, почему date_default_timezone_get() в браузере возвращает пустоту, а  ini_get('date.timezone') возвращает UTC, когда должен Europe/Moscow?

Цитата:
сдается мне, что все же посмотрели в cli
Нет, это прямо из браузера я вывел строку.

Всего записей: 1496 | Зарегистр. 10-01-2009 | Отправлено: 04:51 03-08-2020 | Исправлено: The_Immortal, 04:56 03-08-2020
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
The_Immortal

Цитата:
 А именно, почему date_default_timezone_get() в браузере возвращает пустоту

потому, что зона не прописана в php.ini, а берется системная.
 

Цитата:
Нет, это прямо из браузера я вывел строку.

тогда бы не было пустоты. в чем то вы запутались. либо конфиг изменен, но fpm не перезапущен.
 
загляните в оба .ini, перезапустите fpm и сравните
 
как вариант - может быть еще append_file, который ставит зону. у меня, к примеру, обычно в php.ini зона не ставится, а ставится в приложении.

Всего записей: 9716 | Зарегистр. 20-09-2014 | Отправлено: 04:53 03-08-2020 | Исправлено: Mavrikii, 04:57 03-08-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10

Компьютерный форум Ru.Board » Интернет » Web-программирование » Простенький вопрос по PHP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru