помогите удалить из строки кавычки

D1
На сайте с 10.10.2008
Offline
19
15902

из формы приходит строка(текст) нужно удалить из нее спецсимволы

[Удален]
#1
function strip($text) {
$srting = array("query","select","from","delete","insert","update",";","'",'"',"^","|","\n","\r","\p","<",">");
$result = trim(htmlspecialchars(strip_tags(str_replace($srting,"",$text))));
return $result;
}

Вот держи... Убьет всё намертво ))))))

Еще можешь создать файлик php

<?php

setlocale(LC_ALL, 'ru_RU.CP1251');

if(isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT']!="-"){
define('USER_AGENT',$_SERVER['HTTP_USER_AGENT']);
}else{ die(); }

if($_SERVER['REQUEST_METHOD']=='TRACE'){ die('Попытка взлома!'); }
if(isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])){ die('Попытка взлома!'); }
if(!is_array($GLOBALS)){ die('Попытка взлома!'); }

$badcount = 0;
$baddata = array("UNION",
"OUTFILE",
"FROM",
"SELECT",
"WHERE",
"SHUTDOWN",
"UPDATE",
"DELETE",
"CHANGE",
"MODIFY",
"RENAME",
"RELOAD",
"ALTER",
"GRANT",
"DROP",
"INSERT",
"CONCAT",
"cmd",
"exec",
"--",
// HTML LINE
"\([^>]*\"?[^)]*\)",
"<[^>]*body*\"?[^>]*>",
"<[^>]*script*\"?[^>]*>",
"<[^>]*object*\"?[^>]*>",
"<[^>]*iframe*\"?[^>]*>",
"<[^>]*img*\"?[^>]*>",
"<[^>]*frame*\"?[^>]*>",
"<[^>]*applet*\"?[^>]*>",
"<[^>]*meta*\"?[^>]*>",
"<[^>]*style*\"?[^>]*>",
"<[^>]*form*\"?[^>]*>",
"<[^>]*div*\"?[^>]*>");

if(!isset($_REQUEST)) return;
foreach($_REQUEST as $params => $inputdata){
foreach($baddata as $badkey => $badvalue){
if(is_string($inputdata) && eregi($badvalue,$inputdata)){ $badcount=1; }
}
}

if($badcount==1){
echo "Попытка взлома!";
exit();
}

$array = array( "\x27", "\x22", "\x60", "\t",'\n','\r', '\\', "'",
"¬","#",";","~","[","]","{","}","=","+",")","(",
"*","&","^","%","$","<",">","?","!",".pl", ".php",'"' );

$_GET = str_replace($array, '', $_GET);
$_POST = str_replace($array, '', $_POST);
$_SESSION = str_replace($array, '', $_SESSION);
$_COOKIE = str_replace($array, '', $_COOKIE);
$_ENV = str_replace($array, '', $_ENV);
$_FILES = str_replace($array, '', $_FILES);
$_REQUEST = str_replace($array, '', $_REQUEST);
$_SERVER = str_replace($array, '', $_SERVER);

?>

и инклюдить его верзде, в плане безопасности, но это уже совсем жесть.

dkameleon
На сайте с 09.12.2005
Offline
386
#2
KosoyRoman:
Вот держи... Убьет всё намертво ))))))

больше вреда чем пользы.

имейлы типа delete@from.ru просто пролетают.

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

Дизайн интерьера (http://balabukha.com/)
[Удален]
#3
dkameleon:
больше вреда чем пользы.
имейлы типа delete@from.ru просто пролетают.

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

Ну в плане sql инъекция имел ввиду, а так просто внести не желательные символы в

$srting = array("");

и всё ))

D1
На сайте с 10.10.2008
Offline
19
#4

ругается на функцию

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in .../classInsertTab.php on line 56

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''\hello\')' at line 1select id, city from C_City

function strip($text) {

$srting = array("query","select","from","delete","insert","update",";","'",'"',"^","|","\n","\r","\p","<",">");

$result = trim(htmlspecialchars(strip_tags(str_replace($srting,"",$text))));

return $result;

}

gerkon
На сайте с 21.10.2005
Offline
40
#5

htmlspecialchars

(PHP 3, PHP 4)

htmlspecialchars - конвертирует специальные символы в мнемоники HTML.

Описание

string htmlspecialchars (string string [, int quote_style [, string charset]])

Некоторые символы имеют в HTML специальное значение и должны быть представлены мнемониками HTML для сохранения своего значения. Эта функция возвращает строку с выполненной конвертацией; трансляция выполняется как всегда в современном web-программировании. Если вам нужны все оттранслированные HTML-мнемоники символов, используйте htmlentities().

Эта функция используется для предотвращения ввода вместе с пользовательским текстом разметки HTML, как в досках объявлений или в приложении guest book. Необязательный второй аргумент, quote_style, сообщает функции, что делать с символами одинарных и двойных кавычек. Режим по умолчанию, ENT_COMPAT, обратно совместим только для трансляции двойных кавычек и оставляет одинарные кавычки неоттранслированными. Если установлен ENT_QUOTES, и двойные, и одинарные кавычки транслируются, а если установлен ENT_NOQUOTES - ни одинарные. ни двойные кавычки не транслируются.

Выполняются трансляции:

'&' (амперсанд) становится '&amp;'

" (double quote) становится '&quot;' когда ENT_NOQUOTES не установлен

' (single quote) становится ''', только когда установлен ENT_QUOTES.

< (less than) становится '&lt;'

> (greater than) становится '&gt;'

Пример 1. htmlspecialchars()

$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);

Обратите внимание, что эта функция не транслирует ничего, кроме перечисленного выше. О полной трансляции мнемоник см. htmlentities(). Поддержка второго необязательного аргумента была введена в PHP 3.0.17 и PHP 4.0.3.

Третий аргумент определяет набор символов, используемый при конвертации. По умолчанию это ISO-8859-1. Поддержка третьего аргумента была введена в PHP 4.1.0.

C уважением, Андрей. Пользуюсь этим хостингом уже 4 года! (http://www.replay.ru/index.php?part_id=3600) Ведущий манул Pixshock.net (http://www.pixshock.net)
dkameleon
На сайте с 09.12.2005
Offline
386
#6
dakota1310:
ругается на функцию

строку покажите, в которой ругается.

вообще достаточно mysql_real_escape_string

D1
На сайте с 10.10.2008
Offline
19
#7

я уже так пробывала (текст "hella")

$cl=htmlspecialchars($val, ENT_QUOTES, 'cp1251');

записывает в базу нормально (&quot;hello&quot;) а когда выбираю из списка это значение и вывожу его в текстовом поле то вижу \"hello\" почему видны слеши

[Удален]
#8

php_flag magic_quotes_gpc off

D1
На сайте с 10.10.2008
Offline
19
#9

mysql_real_escape_string тоже робывала но как сказала выше выводит со слешами

код

шаблон

<form method="post">

<select name="name_city">

{foreach from=$arrCity item=name }

<option value="{$name[1]}">{$name[1]}</option>

{/foreach}

</select>

<input type="submit" name="updCity" value="Обновить">

</form>

{$upd}

смарти файл

if(isset($_POST['updCity']))

{

$arr=$t->_getPole('city', 'C_City');

$sm->assign('arrCity', $arr);

$_SESSION['name_city']=$_POST['name_city'];

$str="<form method=post><input type='text' name='upd_c' value='".$_POST['name_city']."'>

<input type='submit' name='seveUpdcity' value='Сохранить изменения'></form>";

$sm->assign('upd', $str);

$sm->assign('tpage',$_GET['page_c14']);

}

dakota1310 добавил 10.10.2008 в 22:27

KosoyRoman:
php_flag magic_quotes_gpc off

magic_quotes_gpc on добраться до файла я не могу для чего это нужно и можно ли сделать программно

V1
На сайте с 10.10.2008
Offline
0
#10

для начала убедиться, что magic_quotes_runtime = "0" (!!!!!!!)

ini_set('magic_quotes_runtime', 0);

а потом:

function remove_magic_quotes_gpc(&$el) {
if ( !is_array($el) )
{
$el = stripslashes($el);
}
else
{
reset($el);
while ( list($key, $value) = each($el) )
{
if ( is_array($el[$key]) )
{
remove_magic_quotes_gpc($el[$key]);
}
else
{
$el[$key] = stripslashes($value);
}
}
reset($el);
}
}
if ( get_magic_quotes_gpc() )
{
remove_magic_quotes_gpc($_GET);
remove_magic_quotes_gpc($_POST);
remove_magic_quotes_gpc($_COOKIE);
}

или

ini_set('magic_quotes_gpc', 0);

все в начало скрипта

а перед вставкой в БД слешавать родным интерфейсом



$query = "SELECT 1 FROM `table` WHERE `data` LIKE '".mysql_escape_string($_POST['data'])."';";

а перед выводом на экран делать так:



print htmlspecialchars($_POST['data']);

2KosoyRoman, жесть (я про первый пост твой)

Не тупо копипастить себе, а с толком разобравшись, что все это значит

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий