Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
15.02.2014, 10:46
|
|||
|---|---|---|---|
|
|||
php & mysql |
|||
|
#18+
Привет всем помогите плз с таким вопросом: Имеется поисковая форма(search.html). В ней пользователь может выбрать тип поиска(по автору, по названию, по ISBN). B затем вводит само значение поиска. То есть например получается "по автору" и "Майкл". После щелчка "найти" вызывается сценарий "results.php". В ней осуществляется запрос к БД и вывод результата запроса. Проблема в том, что ввожу имя существующего в БД автора(русскими буквами). Запрос выводит 0 строк. Потом зашел в БД и поменял имя автора(написал англ буквами). Сценарий сразу заработал и вывел все книги этого автора. Вопрос: почему php-сценарий не может найти руссконаписанные слова в БД. это код search.html Код: html 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. А это results.php: Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.02.2014, 11:04
|
|||
|---|---|---|---|
php & mysql |
|||
|
#18+
BIS-10-2, Кодировка )) Как всегда... Смотрим кодировку выводимой страницы, кодировку самого скрипта и кодировку соединения с базой... Все три должны быть одинаковыми. если Вы попробуете вывести имя автора (русского) на страницу, то скорее всего увидите крякозябры. И скорее всего (что чаще всего бывает) что неверная кодировка именно соединения (устанавливается запросом "SET NAMES 'кодировка'") И ещё... предполагаю, что такой запрос очень просто взломать и получить доступ к базе. Мне что-то помнится, что addslashes не экранирует обратные кавычки вот рекомендации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.02.2014, 12:36
|
|||
|---|---|---|---|
php & mysql |
|||
|
#18+
Програмёр, addslahes, впрочем как и другие потуги - не защищают от взлома базы - ни разу. Хотите защиту: 1. Не загоняйте в запрос к БД прямые данные из входа. 2. Если выполнить п.1 невозможно, то пользуйте параметризованные запросы _только_. Всё остальное - наивная дурь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.02.2014, 13:08
|
|||
|---|---|---|---|
php & mysql |
|||
|
#18+
Arhat109Програмёр, addslahes, впрочем как и другие потуги - не защищают от взлома базы - ни разу. Хотите защиту: 1. Не загоняйте в запрос к БД прямые данные из входа. 2. Если выполнить п.1 невозможно, то пользуйте параметризованные запросы _только_. Всё остальное - наивная дурь. Насчёт первого - согласен, желательно проводить валидацию данных всегда. Но вот в общем... Я например не представляю как можно взломать базу запросом, в котором все пользовательские данные экранированы. Если Вы знаете, мне было бы интересно ознакомиться с подобными методами взлома, что бы сделать свои кода более надёжными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.02.2014, 15:59
|
|||
|---|---|---|---|
php & mysql |
|||
|
#18+
Програмёр, Щас лениво, и есть большая и интересная задачка. Пошукайте на Хабре была хорошая статья с примерами. Суть в том, что если не проходит простой взлом, то повторное экранирование - проходит. Как-то так. Гораздо проще привыкнуть к бинтованию всего и вся, чем каждый раз заморачиваться и гадать "какая форма запроса вскроет эту фигню". И ещё один момент, с которым сталкивался сам: экранирование не всегда спасает и на валидных данных. Неожиданно при перезаписи в БД уже записанных туда данных получаешь HY093. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2014, 08:10
|
|||
|---|---|---|---|
|
|||
php & mysql |
|||
|
#18+
в results.php внес строку "mysql_set_charset('utf8')". Все равно не находит автора. Я тут подумал, а почему он не выводит его хоть кракозябрами? Получается он не может в таблице понять русские символы? Проверьте правильно ли я вставил "mysql_set_charset('utf8')". results.php: Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2014, 00:03
|
|||
|---|---|---|---|
|
|||
php & mysql |
|||
|
#18+
BIS-10-2, Код: php 1. что за гамно мамонта? Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Гуглить "шаблонизатор" Код: php 1. Код: php 1. Ниче не смущает? Короче, чувак, не тыкай пальцем в небо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=23&mobile=1&tid=1462289]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
82ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 434ms |

| 0 / 0 |
