Бесплатные PHP скрипты - форум техподдержки

Бесплатные PHP скрипты - форум техподдержки

Форум техподдержки WR-Скриптов на php. Обсуждаем: основы программирования на PHP 5 - 7 версий, различные подходы к написанию скриптов на php 7 без MySQL. А также WR-скрипты: бесплатные доски объявлений, скрипты форумов, Гостевые книги, Каталог ссылок, Галерея, Фотоальбом, Счётчики, Рассылки, Анекдот и другие. Принимаются пожелания для новых версий. Сообщите какой скрипт нужен для Вашего сайта, постараемся найти или реализовать. Скачать скрипты можно бесплатно. Вместе мы сделаем бесплатные php скрипты лучше и доступнее!

Главная сайта бесплатных php скриптовГлавная сайта   ПоискПоиск  
Сегодня: 20.04.2024 - 17:25:58
Страницы:  1  

При обработке форм теряются или возникают слэши.

Объявление - WR-Scriptы в UTF-8 кодировке

Активно обновляю скрипты и перевожу их в UTF-8 кодировку. Список перекодированных php скриптов доступен на главной странице сайта. Скачивайте скрипты и устанавливайте на свой сайт! В ближайшее время обновлю каталог знакомств, форум Про, фотоальбом, доски объявлений лайт и ЛЮКС.

На форуме, пожалуйста, пишите что модернизировать в скриптах в первую очередь. Постараюсь исправить большую часть пожеланий!
Планирую продолжить работы весь 2023 год.

АвторСообщение

pash_ka

P
гость

Часто у начинающих программистов на PHP вознкает такая проблема: после сохранения данных формы оказывается, что задублировались символы \ или наоборот, куда-то исчезли.
И зачастую, на тестовом сервере все работает, а у хостера - глючит.

Проблема возникла из-за того, что исторически на многих серверах сключена опция PHP magic_quotes_gpc.
Её ввели из-за того, что начинающие программисты часто забывали эскейпить управляющие символы при записи в БД и из-за этого SQL-запросы оказывались уязвимы. Или вообше неработали. Однако, автоматический эскейп сам по себе добавил неразбериху, т.к. некоторые скрипты ожидают что он включен, а другие - наоборот. Так что в итоге рекомендация разработчиков - не использовать этот режим.

Что-же нужно делать? Моё мнение - данные в программе должны представляться в исходном виде, немодифицированными. А эскейпится - при записи в БД или выводе в HTML.
Чтобы этого достичь, при чтении данных формы надо сначала проверить включен-ли magic_quotes_gpc а затем, при необходимости, удалить лишние слэши при помощи stripslashes().
Пример:

Код:


$text = stripslashes_smart($_POST['text']);

function stripslashes_smart($val){
return get_magic_quotes_gpc()?stripslashes($val):$val;
}

См. также:
http://ru.php.net/manual/ru/function.get-magic-quotes-gpc.php
http://ru.php.net/manual/ru/function.stripslashes.php

Сообщение # 1 21.03.06 - 22:37:35

vladik-kiev

V
гость

не люблю я это дело - удаление слэшей...

Сообщение # 2 22.03.06 - 22:49:42

pash_ka

P
гость

Ну и я не люблю.... Тем не менее, у меня половина кода (написанная до того времени когда я узнал, про magic_quotes_gpc) требует эту опцию, так что даже на своём серваке пришлось включить. :(

Сообщение # 3 23.03.06 - 09:54:22

pash_ka

P
гость

Да, я тут подумал... способ который я привел выше плох тем, что при каждом вызове приходится делать проверку... А это процессорное время... Так что вариант 2:

Код:

$text = stripslashes_smart($_POST['text']);

if(get_magic_quotes_gpc()){
function stripslashes_smart($val){return stripslashes($val);}
}else{
function stripslashes_smart($val){return $val;}
}

Так все равно остаются затраты на вызов лишней функции (хотя есть надежда что PHP распознает такие вещи и обрабатывает их аналогично inline-функциям в С), но это уже не исправимо.

Разве что где-нить в одном мемте в начале программы проверить и все переменные подменить типа так:

Код:

if(get_magic_quotes_gpc()){
foreach($_REQUEST as $key=>$val){
$_REQUEST[$key] = stripslashes($val);
}
}

$text = $_REQUEST['text'];

Сообщение # 4 23.03.06 - 10:02:55
Распространённые ошибки :Предыдущая темаСледующая тема: Как писать текстовые строки: ', " и heredoc
Страницы:  1  

Сообщение
Имя E-mail
Сообщение

Нажмите на точку возле имени для обращения к участнику

Смайлы:

Ещё смайлы
Эмодзи
         
Защитный код: (введите цифры, которые на синем фоне)
Ответ на вопрос: (Какой сейчас год?)
   
WR-Счётчик
Powered by WR-Forum Professional © 2.3 UTF-8 beta версия