Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> убить опасные символы 
:(
    Опции темы
fakeman
Дата 9.11.2009, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Хотел узнать будет ли такое работать ?
 
Код

function ecr($string)
{
    for($i=0;$i<strlen($string);$i++)
    {
        $res='';
        switch ($string[$i])
        {
            case '\/' : $res=$res.'&#47';
            case '\\' : $res=$res.'&#47';
            case '\'' : $res=$res.'&#39';
            case '/"' : $res=$res.'&#34';
            case '/<' : $res=$res.'&#60';
            case '/>' : $res=$res.'&#62';
            case '/&' : $res=$res.'&#38';
            case '/?' : $res=$res.'&#63';
            default:
             $res=$res.$string[$i];
        }
        return $res;
    }
}


Менять опасные символы на неопасные smile smile
PM MAIL   Вверх
Pitlord
Дата 9.11.2009, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: 4
Всего: 7



fakeman, опасные символы? Звучит, как бред.
PM MAIL   Вверх
bars80080
Дата 9.11.2009, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



что вы хотите защитить от "опасных" символов?
PM MAIL WWW   Вверх
NLspieler
Дата 9.11.2009, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



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


PM MAIL   Вверх
fakeman
Дата 9.11.2009, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



bars80080,  Все поля где пользователь может что то вводить.. 

NLspieler,  stripslashes(strip_tags($_POST['regemail'])); при таком всякие / \ проходят... 
PM MAIL   Вверх
Simpliest
Дата 9.11.2009, 04:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3





--------------------
user posted image
PM   Вверх
nerezus
Дата 9.11.2009, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



fakeman, ну вы там что, книжек фленова поначитались, что какие-то символы убить хотите?

Ничего убивать не надо, надо просто правильно работать с данными.
Экранировать, к примеру.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Simpliest
Дата 9.11.2009, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3





--------------------
user posted image
PM   Вверх
NLspieler
Дата 9.11.2009, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



А, я понял, в чем проблема.
Из форм некоторые символы, такие, как например " или ' приходяд
в экранированном состоянии.

И для борьбы с этим есть стандартная функция stripslashes

Код

//Причем, эту функцию нужно всегда применять в ПЕРВУЮ ОЧЕРЕДЬ. Следовательно твой вариант:
$_POST['regemail'] = stripslashes(strip_tags($_POST['regemail'])); //не работает.

$_POST['regemail'] = strip_tags(stripslashes($_POST['regemail'])); 
//а так должен работать. Причем это нужно делать в самом начале скрипта.

Есть еще другой способ, полного отключения экранирования, но он довольно сложен,
поэтому можно воспользоватся "костыльной" функцией stripslashes.



Это сообщение отредактировал(а) NLspieler - 9.11.2009, 08:41
PM MAIL   Вверх
MoLeX
Дата 9.11.2009, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(.htaccess)

php_flag magic_quotes_gpc Off



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
brother79
Дата 9.11.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: 2
Всего: 6



Есть стандартные методы, о которых писалось выше, но если уж решили руками делать - то зачем этот switch? Есть же str_replace и preg_replace, передаёшь параметрами массивы и они заменяют попарно эл-ты.


--------------------
PM MAIL WWW   Вверх
Ипатьев
Дата 9.11.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Simpliest, никогда это не употребляйте сами, и не давайте другим.
htmlspecialchars называется функция, которая употребляется в случае, если не применялась strip_tags()

fakeman, я так понимаю, что внятно сформулировать опасность этих символов вы не можете? чем вам, к примеру, не угодили символы '/?'
Что такого ужасного могут натворить эти два символа?

PM MAIL   Вверх
brother79
Дата 9.11.2009, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: 2
Всего: 6



Цитата(fakeman @  9.11.2009,  00:59 Найти цитируемый пост)
Хотел узнать будет ли такое работать ?


Сразу что-то не посмотрел внимательно, 

нет не будет работать, надо  
        $res='';
вынести за цикл, а не в цикле обнулять рез-тат.


--------------------
PM MAIL WWW   Вверх
MoLeX
Дата 9.11.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



brother79, да и return тоже вынести надо
Код

function ecr($string)
{
   $res='';

    for($i=0;$i<strlen($string);$i++)
    {
        switch ($string[$i])
        {
            case '\/' : $res=$res.'&#47';
            case '\\' : $res=$res.'&#47';
            case '\'' : $res=$res.'&#39';
            case '/"' : $res=$res.'&#34';
            case '/<' : $res=$res.'&#60';
            case '/>' : $res=$res.'&#62';
            case '/&' : $res=$res.'&#38';
            case '/?' : $res=$res.'&#63';
            default:
             $res=$res.$string[$i];
        }
    }

    return $res;
}



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
sTa1kEr
Дата 9.11.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



MoLeX, так это тоже не будет работать.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.