Foros del Web » Programando para Internet » PHP »

cambio de funcion eregi() a preg_match

Estas en el tema de cambio de funcion eregi() a preg_match en el foro de PHP en Foros del Web. buenas tardes;nose si el archivo este lo tendre que poner aqui pero hay va:es codigo hml: _es un cambio de eregi() a preg_match ya que ...
  #1 (permalink)  
Antiguo 08/03/2013, 14:58
 
Fecha de Ingreso: octubre-2010
Mensajes: 8
Antigüedad: 14 años
Puntos: 0
cambio de funcion eregi() a preg_match

buenas tardes;nose si el archivo este lo tendre que poner aqui pero hay va:es codigo hml:

_es un cambio de eregi() a preg_match ya que con la version d php 5.3 o superior da fallos en php nuke(en el archivo mainfile.php:
-si alguien m corrije el codigo si hubiera algun fallo se lo agradezco;


if (!defined('ADMIN_FILE')) {
foreach ($_GET as $sec_key => $secvalue) {
if ((preg_match("/<[^>]*script*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*object*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*iframe*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*applet*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*meta*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*style*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*form*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*img*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*onmouseover*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*body*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/\([^>]*\"?[^)]*\)/i", $secvalue)) ||
(preg_match("/\"/i", $secvalue)) ||
(preg_match("/inside_mod/i", $sec_key))) {
die ($htmltags);
}
}
foreach ($_POST as $secvalue) {
if ((preg_match("/<[^>]*onmouseover*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]script*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*body*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]style*\"?[^>]*>/i", $secvalue))) {
die ($htmltags);
}
}
}
  #2 (permalink)  
Antiguo 10/03/2013, 12:38
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: cambio de funcion eregi() a preg_match

Te devuelve un error?

Cuál?

Si fuera mi código quedaria algo similar a:

Código PHP:
foreach ($_GET as $sec_key => $secvalue) {
if (
preg_match("/<[^>]*script*\"?[^>]*>|<[^>]*object*\"?[^>]*>|<[^>]*iframe*\"?[^>]*>|<[^>]*applet*\"?[^>]*>|<[^>]*meta*\"?[^>]*>|<[^>]*style*\"?[^>]*>|<[^>]*form*\"?[^>]*>|<[^>]*img*\"?[^>]*>|<[^>]*onmouseover*\"?[^>]*>|<[^>]*body*\"?[^>]*>|\([^>]*\"?[^)]*\)|/\"/i"$secvalue) ||
preg_match("/inside_mod/i"$sec_key)) {
die (
$htmltags);
}


Es decir, elimiaria el llamado a la función y colocaria los OR como los he puesto.

Quizas falta escapar o algun paréntesis, pero seria similar...

Salu2!
  #3 (permalink)  
Antiguo 10/03/2013, 12:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: cambio de funcion eregi() a preg_match

Aún siguen siendo ejemplos bastante redundantes, ya que cada sub-expresión comparte mucho en común.

Código PHP:
if ((preg_match("/<[^>]*script*\"?[^>]*>/i"$secvalue)) ||
(
preg_match("/<[^>]*object*\"?[^>]*>/i"$secvalue)) ||
(
preg_match("/<[^>]*iframe*\"?[^>]*>/i"$secvalue)) ||
(
preg_match("/<[^>]*applet*\"?[^>]*>/i"$secvalue)) ||
(
preg_match("/<[^>]*meta*\"?[^>]*>/i"$secvalue)) ||
(
preg_match("/<[^>]*style*\"?[^>]*>/i"$secvalue)) ||
(
preg_match("/<[^>]*form*\"?[^>]*>/i"$secvalue)) ||
(
preg_match("/<[^>]*img*\"?[^>]*>/i"$secvalue)) ||
(
preg_match("/<[^>]*onmouseover*\"?[^>]*>/i"$secvalue)) ||
(
preg_match("/<[^>]*body*\"?[^>]*>/i"$secvalue)) || 
Incluso así sigue siendo bastante extensa y redundante.
Código PHP:
$regex "/<[^>]*script*\"?[^>]*>|<[^>]*object*\"?[^>]*>|<[^>]*iframe*\"?[^>]*>|<[^>]*applet*\"?[^>]*>|<[^>]*meta*\"?[^>]*>|<[^>]*style*\"?[^>]*>|<[^>]*form*\"?[^>]*>|<[^>]*img*\"?[^>]*>|<[^>]*onmouseover*\"?[^>]*>|<[^>]*body*\"?[^>]*>|\([^>]*\"?[^)]*\)|/\"/i"
Eso, en términos prácticos, quedaría así.
Código PHP:
$regex '/<[^>]*(?:script|object|iframe|applet|meta|style|form|img|onmouseover|body)*\"?[^>]*>/'
A ver si mueven este tema al sub-foro de RegExp, ya que es un problema muy a parte.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: eregi, funcion, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:33.