Показать сообщение отдельно
  #10 (permalink)  
Старый 11.08.2017, 04:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Tomson123,
я пока не страдаю склерозом, то что недавно написано помню. Не надо цитировать все подряд, и вообще ничего не надо цитировать если ваш комментарий этого не требует. Не превращайте пост таким цитированием в большие бесполезные портянки.

Сообщение от Tomson123
А то малоли что отправят через авдресную строку
Не надо заниматься чепухой - strtr, str_replace и mysql_real_escape_string при выводе данных из базы, это полнейшая чепуха.

mysql_real_escape_string - это для экранирования данных перед записью в базу для исключения инъекции. Эта функция используется оригинальным расширением MySQL, которое разработчики настоятельно не рекомендуют использовать так как в новых версиях РНР оно исключено. Вместо этого расширения используйте mysqli или PDO, и работая с БД посредством подготовленных запросов, в которых экранирование будет выполнятся автоматически самим драйвером.

При выводе данных из БД на страницу, и не только из БД, а любых данных полученных от клиента, к ним применяется функция htmlspecialchars в первую очередь с целю, чтобы заменить html представлением эти два символа: < и >. И делается это для того, чтобы исключить XSS атаку на страницах пользователей, не допустить выполнение любого внедренного кода. htmlentities - производит замену на html-сущности для всех возможных символов, в чем нет никакой необходимости.

Замена же "\'" на "'" и т.п., это глупости. Куда полезнее при записи данных пользователя в БД удалять экранирование пользователя. А каким методом произведен запрос можно узнать из $_SERVER["REQUEST_METHOD"], а с какого домена из $_SERVER["HTTP_ORIGIN"], правда старые браузеры такой заголовок могут и не передавать. В случае проверки браузер ли производит запрос, проверка сложнее.

Сообщение от Tomson123
Буду эксперементировать
Тут не эксперименты требуются, а подумать. Я надеялся, что возникнет вопрос после моего поста, а коли его нет, значит вы не понимаете "бесполезности" своей затеи "при успешном добавлении записи эта запись автоматически отображалась на странице". Это сделать не сложно, но смысл какой?

Пусть у вас всего 5 пользователей. В разные моменты времени они вошли на страницу и каждый из них получил записи из БД существующие на тот момент в базе. То чего вы хотите означает, что каждый из них добавляя новые записи в базу будет видеть только свои добавленные, а те, что могут добавлять в это же время другие пользователи нет. Так как запросы формы асинхронные и не вызывают перезагрузки страницы.

Не "эта запись" должна добавляться на страницу, а все новые записи, которые на момент добавления пользователем своей были добавлены в базу. То есть, например, записи выводятся в контейнерах DIV начиная с первой. Если в атрибут этих контейнеров помещать ID записей, то при отправлении формы нужно получать из атрибута последнего контейнера ID последней (для клиента) записи и отправлять его на сервер. После успешного добавления записи сервер должен получить записи по условию WHERE `type` = 1 AND id > $id ORDER BY id, где $id, это последняя запись существующая у клиента на странице. Вот это он должен вернуть клиенту, а клиент их добавит на страницу в новых добавленных контейнерах.

Сообщение от Tomson123
Проблема в том, что когда я кликаю мышкой по полю ...
Проблема в том, что $("#FormSubmit").click(function (e) { ... это полная ахинея. Что за событие формы обрабатывается в моем коде в строке 01?

Последний раз редактировалось laimas, 11.08.2017 в 06:05.
Ответить с цитированием