Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\X\X\X\X.php on line 50
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\X\X\X\X.php on line 51
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\X\X\X\X.php on line 50
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\X\X\X\X.php on line 51
/applications/core/interface/imageproxy/imageproxy.php?img=http://i.imgur.com/RAwSK1y.png&key=84b61da46decf13884b5856e81828726e15ef4ac5d7ccee3e6765e5929551bae" alt="RAwSK1y.png" />
Codigo :
function protect( $str )
{
if( !is_array( $str ) ) {
$str = preg_replace("/(from|select|insert|delete|where|drop table|show tables)/i","",$str);
$str = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
$str = preg_replace('~&#([0-9]+);~e', 'chr("\\1")', $str);
$str = str_replace("<script","",$str);
$str = str_replace("script>","",$str);
$str = str_replace("<Script","",$str);
$str = str_replace("Script>","",$str);
$str = trim($str);
$tbl = get_html_translation_table(HTML_ENTITIES);
$tbl = array_flip($tbl);
$str = addslashes($str);
$str = strip_tags($str);
return strtr($str, $tbl);
}
else return $str;
}
dei include e usei assim ...
$login = protect( $_POST["login"] );
$senha = protect( $_POST["senha"] );Tenho que trocar ? para
preg_replace_callback().
>
Tenho que trocar ? para
preg_replace_callback().
Sim, pois a função foi reescrita desde as versões 5.5.x para melhorar seu desempenho, entre outras coisas.
>
Sim, pois a função foi reescrita desde as versões 5.5.x para melhorar seu desempenho, entre outras coisas.
Warning: preg_replace_callback(): Requires argument 2, '', to be a valid callback in C:\xampp\htdocs\Paginas\functions.php on line 49
Warning: preg_replace_callback(): Requires argument 2, 'chr(hexdec("\1"))', to be a valid callback inC:\xampp\htdocs\Paginas\functions.php on line 50
Warning: preg_replace_callback(): Requires argument 2, 'chr("\1")', to be a valid callback in C:\xampp\htdocs\Paginas\functions.php on line51
Warning: preg_replace_callback(): Requires argument 2, '', to be a valid callback in C:\xampp\htdocs\Paginas\functions.php on line 49
Warning: preg_replace_callback(): Requires argument 2, 'chr(hexdec("\1"))', to be a valid callback inC:\xampp\htdocs\Paginas\functions.php on line 50
Warning: preg_replace_callback(): Requires argument 2, 'chr("\1")', to be a valid callback in C:\xampp\htdocs\Paginas\functions.php on line51
function protect( $str )
{
if( !is_array( $str ) ) {
$str = preg_replace_callback("/(from|select|insert|delete|where|drop table|show tables)/i","",$str);
$str = preg_replace_callback('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
$str = preg_replace_callback('~&#([0-9]+);~e', 'chr("\\1")', $str);
$str = str_replace("<script","",$str);
$str = str_replace("script>","",$str);
$str = str_replace("<Script","",$str);
$str = str_replace("Script>","",$str);
$str = trim($str);
$tbl = get_html_translation_table(HTML_ENTITIES);
$tbl = array_flip($tbl);
$str = addslashes($str);
$str = strip_tags($str);
return strtr($str, $tbl);
}
else return $str;
}Observe que após a linha 49 você não usa mais "/". Isso é necessário para funcionar corretamente.
Aproveitando a deixa recomendo:
https://regex101.com/r/zB8lE5/1 - pra testar ERs.
http://php.net/manual/pt_BR/function.preg-quote.php- Escapar caracteres
>
Observe que após a linha 49 você não usa mais "/". Isso é necessário para funcionar corretamente.
Aproveitando a deixa recomendo:
https://regex101.com/r/zB8lE5/1 - pra testar ERs.
http://php.net/manual/pt_BR/function.preg-quote.php- Escapar caracteres
deixar assim?
$str = preg_replace_callback('/~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
$str = preg_replace_callback('/~&#([0-9]+);~e', 'chr("\\1")', $str);>
Sim, pois a função foi reescrita desde as versões 5.5.x para melhorar seu desempenho, entre outras coisas.
Fonte http://php.net/manual/pt_BR/migration55.deprecated.php
Vale lembrar que a função não está obsoleta,apenas o modificador /e.
Up.
Importante citar os modificadores do padrão
http://php.net/manual/pt_BR/reference.pcre.pattern.modifiers.php
>
deixar assim?
$str = preg_replace_callback('/~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
$str = preg_replace_callback('/~&#([0-9]+);~e', 'chr("\\1")', $str);
No início e no final da string. Isso resolverá o problema, não sendo necessário utilizar outra função do php
>
No início e no final da string. Isso resolverá o problema, não sendo necessário utilizar outra função do php
isso oque eu fis mesmo assim da erro...
Warning: preg_replace_callback(): Requires argument 2, '', to be a valid callback in C:\xampp\htdocs\Paginas\functions.php on line 49
Warning: preg_replace_callback(): Requires argument 2, '/chr(hexdec("\1"))/', to be a valid callback inC:\xampp\htdocs\Paginas\functions.php on line 50
Warning: preg_replace_callback(): Requires argument 2, '/chr("\1")/', to be a valid callback in C:\xampp\htdocs\Paginas\functions.php on line 51
Warning: preg_replace_callback(): Requires argument 2, '', to be a valid callback in C:\xampp\htdocs\Paginas\functions.php on line 49
Warning: preg_replace_callback(): Requires argument 2, '/chr(hexdec("\1"))/', to be a valid callback inC:\xampp\htdocs\Paginas\functions.php on line 50
Warning: preg_replace_callback(): Requires argument 2, '/chr("\1")/', to be a valid callback in C:\xampp\htdocs\Paginas\functions.php on line 51
$str = preg_replace_callback("/(from|select|insert|delete|where|drop table|show tables)/i","",$str);
$str = preg_replace_callback('/~&#x([0-9a-f]+);~ei/', '/chr(hexdec("\\1"))/', $str);
$str = preg_replace_callback('/~&#([0-9]+);~e/', '/chr("\\1")/', $str);Esqueça o _calback. Use preg_replace mesmo, essa função é válida
Isso que você está tentando fazer não vai funcionar, para uma melhor segurança use a função do seu próprio SGBD, recomendo usar PDO para se proteger disso automaticamente. Para o XSS use htmlentities()
Muito bem colocado @ExtremsX. Esqueci de mencionar qua as funções mysql_* sim estão obsoletas
O modificador e (eval) do preg_replace foi depreciado faz tempo.
Quando utilizar o preg_replace_callback, utilize uma função, seja ela um método de classe, função normal (assinatura definida) ou lambda. Exemplo:
$template = '%{nome}, seja bem vindo ao portal %{portal}';
$data = array(
'nome' => 'Hugo',
'portal' => 'iMasters',
);
$html = preg_replace_callback('@%\{(\w+)\}@', function($matches) use ($data) {
if(array_key_exists($matches[1], $data)) {
return $data[$matches[1]];
}
return null;
}, $template);
echo $html;
@braços
O autor do tópico busca filtrar e escapar de SQL Injection. Basta utilizar Prepared Statements
E evitar todo esse rodeio.
>
O autor do tópico busca filtrar e escapar de SQL Injection. Basta utilizar Prepared Statements
E evitar todo esse rodeio.
Bem frisado. Porém, ao menos eu, me atentei aos erros no preg_replace justamente pelas primeiras respostas não satisfazerem a resolução do dito cujo.
Acho que agrega ao post, já que não tem opção de comentários.
Olá,
Não consegui entender direito a sua dúvida. Qual a versão do PHP que você usa? Estes avisos são lançados desde as versões 5.5.X do PHP quando é utilizado o modificador /e como parâmetro da função preg_replace(). Na própria documentação do PHP é indicado que nestes casos seja utilizada a função preg_replace_callback().
Segue a documentação http://php.net/manual/pt_BR/migration55.deprecated.php .
Abraços, Diogo.