PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (8): « 1 2 3 [4] 5 6 7 8 »

> Найдено сообщений: 108
freelsd Отправлено: 03 Февраля, 2016 - 21:44:27 • Тема: Составление sql запроса на основе данных от пользователя? • Форум: Вопросы новичков

Ответов: 11
Просмотров: 365
Viper пишет:
freelsd пишет:
Как правильно генерировать такие запросы?
в цикле.
1. Получаете массив переменных
2. Циклом по массиву из пункта 1
3. Фильтруете
4. Проверяете
5. Подставляете в запрос, не забывая про экранирование(или через что у вас там запросы выполняются).

PS! Если заранее не знаете какой тип ожидать на входе, то лучше ИМХО задать их через правила фильтрации.


Нет, задача не совсем в этом. Нужно на основе того какие параметры выберет пользователь составить запрос. Например захотел он чтобы в запросе были все записи не позднее какой-то даты, соответственно в запросе добавилось "where lastdate > user_param_data", а если ему нужно выбрать по определенному городу то where city="user_selected_city". В первом посте я пример привел. То поля и условия, которые будут в запросе составляются пользователем. Так понятней должно быть.
freelsd Отправлено: 03 Февраля, 2016 - 18:39:20 • Тема: Составление sql запроса на основе данных от пользователя? • Форум: Вопросы новичков

Ответов: 11
Просмотров: 365
В общем, такая ситуация: пользователь выбирает в форме параметры и их значения. Например, param1 числовой от 1-50, param2 строковый "test" и param3 datetime (тут дата). Так вот, на основе его выбора нужно составить запрос типа:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM test WHERE param1 >1 AND param1 <50 AND param2 = "test" AND last_date > param3
  2.  


Я думаю так понятно. Но число параметров может быть разное, а некоторые параметры не будут использованы вообще. Как правильно генерировать такие запросы? Спасибо.
freelsd Отправлено: 24 Января, 2016 - 09:53:04 • Тема: Запуск ресурсоемкой задачи из админ-панели • Форум: Вопросы новичков

Ответов: 6
Просмотров: 307
Для потомков, рабочий вариант для windows: http://stackoverflow[dot]com/questio[dot][dot][dot]-and-get-its-pid
freelsd Отправлено: 23 Января, 2016 - 18:43:02 • Тема: Запуск ресурсоемкой задачи из админ-панели • Форум: Вопросы новичков

Ответов: 6
Просмотров: 307
Viper пишет:
freelsd пишет:
Смотрите, я загружаю файл и процешу файл, но мне нужно чтобы вывод был не после того как скрипт отработает, а в прямом эфире.
большинство толковых загрузчиков "умеет" калбеки и статусы. Если у вас велосипед, то реализовываем сами. За пример можно покопаться в http://www.plupload.com/examples/events


Вопрос более общий - как запустить код на php "в фоне". То есть чтобы пользователь, если даже закроет браузер, не помешал выполнению задачи, и скрипт проработает, пока не завершится.

CODE (htmlphp):
скопировать код в буфер обмена
  1. $cmd = "start /B  \"php test.php > C:\\users\\alex\\desktop\\123.txt\"";
  2. pclose( popen($cmd,'r'));

Так работает, но в файл не перенаправляется. И не ясно как определить успещность запуска скрипта.
freelsd Отправлено: 23 Января, 2016 - 17:45:37 • Тема: Запуск ресурсоемкой задачи из админ-панели • Форум: Вопросы новичков

Ответов: 6
Просмотров: 307
OrmaJever пишет:
freelsd пишет:
3)Но как от скрипта получать результаты в реальном времени? Например, чтобы аяксом каждые 30 секунд производились запросы к скрипту и он возвращал какие-то данные (но так не получится, потому что скрипт работать будет, значит нужен какой-то промежуточный?)

а это всё зависит от приложения которое вы собрались запускать. Оно например может например записывать в файл ход действий, или выводить что-то в консоль. Если же оно это не делает, а просто молча что-то выполняет то никак вы это не сделаете. Максимум что вы можете получить в таком случае дак это только статус работает/не работает.


Ну чтобы, например аякс статус получал, скрипт должен возвращать данные в базу или файл, по-другому видимо никак. И тут нужен какой-то промежуточный скрипт. Типа
рабочий скрипт ->скрипт вывода<-интерфейс с аяксом. Но вот еще вопрос - как запустить скрипт работать а дальше сценарий страницы выполнять (что-то типа никсового &) только чтобы не зависело от платформы. Короче, чтобы вызов неблокирующим был.


Я подробнее опишу, чтобы понятно было. Смотрите, я загружаю файл и процешу файл, но мне нужно чтобы вывод был не после того как скрипт отработает, а в прямом эфире. Только как такое сделать я хз.
freelsd Отправлено: 23 Января, 2016 - 16:22:01 • Тема: Запуск ресурсоемкой задачи из админ-панели • Форум: Вопросы новичков

Ответов: 6
Просмотров: 307
В общем, такая ситуация - нужно из интерфейса запустить скрипт (например через exec() или system()), который будет производить расчеты а в это время часть интерфейса будет недоступна, но состояние работы скрипта должно как-то выводится полльзователю. Я такого раньше не реализовывал, поэтому идея такая:

1)Запускаем скрипт через system (только как потом перенаправить пользователя на главную страницу, ведь этот вызов, вроде как, блокирующий)
2)Сделать запись в бд, что идет работа и часть интерфейса показываться не будет (смотрим в бд, если есть запись о том что работа идет, то не показываем некоторые меню)
3)Но как от скрипта получать результаты в реальном времени? Например, чтобы аяксом каждые 30 секунд производились запросы к скрипту и он возвращал какие-то данные (но так не получится, потому что скрипт работать будет, значит нужен какой-то промежуточный?)
freelsd Отправлено: 22 Января, 2016 - 21:22:23 • Тема: Как вернуть код ошибки из функции? • Форум: Вопросы новичков

Ответов: 11
Просмотров: 627
Всем спасибо, все понял.
freelsd Отправлено: 22 Января, 2016 - 15:41:07 • Тема: Как вернуть код ошибки из функции? • Форум: Вопросы новичков

Ответов: 11
Просмотров: 627
TuX560 пишет:
freelsd пишет:
В Си, например, в функцию можно было указатель на переменную указать, куда, например кода запишется. Такая практика есть в пхп или как ошибки отлавливаются правильнее всего?

Можно и так, но если у Вас не будет ошибки то переменную все равно передавать придется, можно хоть тип у возвращаемого значения смотреть и возвращать массив или код ошибки, как было сказано выше, дело ваше, зависит от конкретных ситуаций.
(Добавление)
freelsd пишет:
Понял, наверное с исключениями и буду работать. Но еще интересно как это раньше решалось, когд исключений в РНР не было?

Вариантов много и нет одного на все случаи жизни(если мне не изменяет память в автозагрузчике и вовсе по стандарту запрещено кидать исключения)


Хотел бы узнать хотя бы несколько вариантов, если не сложно.
freelsd Отправлено: 22 Января, 2016 - 15:24:11 • Тема: Как вернуть код ошибки из функции? • Форум: Вопросы новичков

Ответов: 11
Просмотров: 627
Понял, наверное с исключениями и буду работать. Но еще интересно как это раньше решалось, когд исключений в РНР не было?
freelsd Отправлено: 22 Января, 2016 - 09:24:12 • Тема: Как вернуть код ошибки из функции? • Форум: Вопросы новичков

Ответов: 11
Просмотров: 627
Viper пишет:
Либо в сессию ошибку сохранять в массив и потом выводить, либо сразу возвращать массив.

У меня скрипт без интерфейса, в общем-то. Вы предлагаете в массив добавить поле типа "код ошибки" или как? В Си, например, в функцию можно было указатель на переменную указать, куда, например кода запишется. Такая практика есть в пхп или как ошибки отлавливаются правильнее всего?
freelsd Отправлено: 22 Января, 2016 - 08:27:54 • Тема: Как вернуть код ошибки из функции? • Форум: Вопросы новичков

Ответов: 11
Просмотров: 627
В общем, у меня есть функция, которая возвращает массив, а при неудаче false. Как мне еще возвращать при надобности код ошибки, в случае неудачи функции?
freelsd Отправлено: 19 Декабря, 2015 - 12:51:28 • Тема: Хеширование паролей • Форум: Вопросы новичков

Ответов: 2
Просмотров: 167
Мелкий пишет:
md5 всегда был небезопасен для хэширования паролей. md5 создан, чтобы вычисляться быстро. А для хэширования пароля нужна обратная характеристика - он должен считаться долго.

freelsd пишет:
Какой алгоритм лучше использовать?

А что, есть много вариантов? http://php.net/manual/en/password.constants.php
BCRYPT и default, т.е. тот же самый bcrypt.
Используйте default, плюс сразу добавьте обработку password_needs_rehash. Когда добавится другой алгоритм и дефолт поменяется - вам не придётся модифицировать приложение.
Можно cost покрутить, но лучше не надо, если точно не знаете, что это даст.

freelsd пишет:
И содержит ли в себе выходной хеш все данные, которые понадобятся потом для использования в проверяющей функции?

Да, содержит. И используемый алгоритм, и хэш пароля и используемую соль. В общем - всё. Потому поле в базе рекомендуется делать в 255 символов.


Благодарю.
freelsd Отправлено: 19 Декабря, 2015 - 12:19:07 • Тема: Хеширование паролей • Форум: Вопросы новичков

Ответов: 2
Просмотров: 167
В общем-то вопрос - чем? Есть функция password_hash(), которая генерирует хеш по одному из алгоритмов. Какой алгоритм лучше использовать? И содержит ли в себе выходной хеш все данные, которые понадобятся потом для использования в проверяющей функции? Раньше все было просто - юзался md5, но сейчас он имеет статус небезопасного, как я понимаю?
freelsd Отправлено: 27 Ноября, 2015 - 11:19:10 • Тема: Подключение нескольких страниц с разным функционалом к одному шаблону • Форум: Вопросы новичков

Ответов: 1
Просмотров: 129
Есть некий шаблон страницы, и чтобы подключить рабочую страницу, раньше использовалась конструкции типа:

PHP:
скопировать код в буфер обмена
  1. $page = $_GET['page]
  2. include("inc/".$page.".php");


Но как вообще правильно подключать основную часть страницы? С точки зрения безопасности и функциональности. Спасибо.
freelsd Отправлено: 18 Октября, 2015 - 17:02:22 • Тема: Очень медленный SELECT и UPDATE • Форум: Работа с СУБД

Ответов: 4
Просмотров: 1014
OrmaJever пишет:
freelsd пишет:
но без циклов не получится

а я думаю получается... Просто вы не в ту сторону думаете

Поясните, пожалуйста.

Страниц (8): « 1 2 3 [4] 5 6 7 8 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB