Foros del Web » Programando para Internet » PHP »

Problema con preg match

Estas en el tema de Problema con preg match en el foro de PHP en Foros del Web. Hola amigos que tal, veran estoy con un problemita estoy tratando de hacer que el modificar perfil no permita algunos caracteres y esas cosas, les ...
  #1 (permalink)  
Antiguo 24/04/2010, 18:07
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 9 meses
Puntos: 1
Problema con preg match

Hola amigos que tal, veran estoy con un problemita estoy tratando de hacer que el modificar perfil no permita algunos caracteres y esas cosas, les muestro el codigo que tengo hasta ahora, porque parece que no los filtra en la bd, o sea si yo escribo &&& deberia no aparecer en la bd y aparece.

Que es lo que estoy haciendo mal, este es el modificarperfil.php, que tiene un form con un action "modificarperfil.php" y para mostrar los errores lo que hago es

Código PHP:
Ver original
  1. if($_SESSION['msg']['reg-err'])
  2.                         {
  3.                             echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
  4.                             unset($_SESSION['msg']['reg-err']);
  5.                         }
  6.                         ?>

Pero no aparece nada.

Ahora dejo el codigo del modificarperfil.php:


Código PHP:
Ver original
  1. <?php
  2.  error_reporting(E_ALL ^ E_NOTICE);
  3. session_name('pLogin');
  4.  
  5. $usuario=$_SESSION['usuario'];
  6.  
  7.  
  8. if(!$_SESSION['usuario']=='usuario'){
  9. header("Location: index.php");// si no es igual a usuario te direcciona al inicio u a otra pagina
  10. }
  11.  
  12.  
  13.  
  14. include("connect.php"); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
  15.  
  16. $id = $_SESSION['usuario'];
  17.  
  18. if(!isset($id)){
  19.  
  20. echo 'No se ha seleccionado ningun usuario.';
  21.  
  22. }else{
  23.  
  24.  
  25. $query=mysql_query("SELECT * FROM prueba WHERE usuario='$_SESSION[usuario]' ");
  26.  
  27. if(mysql_num_rows($query)>0){
  28. $user_ok=mysql_fetch_array($query);
  29.  
  30.  
  31.  
  32.  
  33. //todo comprobado, ahora solo falta mostrar los datos
  34. echo 'Bienvenid@ <b>'.$user_ok['usuario'].'</b><br>';
  35.  
  36. }else{
  37.  
  38. echo 'La id de usuario seleccionada no existe';
  39. }
  40. }
  41.  
  42.  
  43. if($_POST['submit']=='EDITAR PERFIL')
  44. {
  45.  
  46.    $err=array();
  47.  
  48. if(strlen($_POST['firstname'])>100)
  49. {
  50.     $err[]='Tu(s) nombre(s) debe tener menos de 100 caracteres!';
  51. }
  52. if(!preg_match('/[^0-9\-\_\.]+/i',$_POST['firstname']))
  53. {
  54.     $err[]='Tu(s) nombre(s) contiene caracteres inválidos!';
  55. }
  56. if(strlen($_POST['lastname'])>100)
  57. {
  58.     $err[]='Tu(s) apellido(s) debe tener menos de 100 caracteres!';
  59. }
  60. if(!preg_match('/[^0-9\-\_\.]+/i',$_POST['lastname']))
  61. {
  62.     $err[]='Tu(s) apellido(s) contiene caracteres inválidos!';
  63. }
  64.  
  65.     if(preg_match ("/[;<>&]/", $_POST['informacion_adicional']))
  66.     {
  67.         $err[]="Tu 'informacion adicional' no puede tener caracteres especiales (ej & ; < >)";
  68.        
  69.     }
  70.    
  71.     if(!count($err))
  72.     {
  73.         //Si no hay errores
  74.        
  75.         $_POST['firstname']=mysql_real_escape_string($_POST['firstname']);
  76.         $_POST['lastname']=mysql_real_escape_string($_POST['lastname']);
  77.         $_POST['informacion_adicional']=mysql_real_escape_string($_POST['informacion_adicional']);
  78.        
  79.        
  80.         if(count($err))
  81.             {
  82.                 $_SESSION['msg']['reg-err']=implode('<br />',$err);
  83.             }
  84.                
  85.     header("Location: index.php");
  86.     exit;
  87.        
  88.            
  89.     }
  90.     }
  91.  
  92. //introducimos la modificacion hecha por el usuario
  93.  
  94.  
  95. $firstname=$_POST['firstname'];
  96. $lastname=$_POST['lastname'];
  97. $infoadicional=$_POST['informacion_adicional'];
  98.  
  99.  
  100.  
  101.  
  102. UPDATE prueba
  103. SET firstname='$firstname',lastname='$lastname', informacion_adicional='$infoadicional'
  104. WHERE usuario='$_SESSION[usuario]'  ");
  105.  
  106.  
  107.  
  108.  
  109.  
  110. ?>
  #2 (permalink)  
Antiguo 25/04/2010, 04:31
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 7 meses
Puntos: 26
Respuesta: Problema con preg match

Hay otra forma menos bonita de hacerlo, y es buscando directamente si hay esos caracteres en la variable y ponerlos como "".
  #3 (permalink)  
Antiguo 25/04/2010, 09:23
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Problema con preg match

Es decir, los datos de la bd se insertan, pero no me los filtra que es lo que estoy haciendo mal?
  #4 (permalink)  
Antiguo 25/04/2010, 12:53
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Problema con preg match

Alguien me podria dar una mano? solo necesito saber en que me estoy equivocando.

gracias
  #5 (permalink)  
Antiguo 25/04/2010, 15:46
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Problema con preg match

Hola, estuve tratando de hacer algo, lo unico que hice fue con javascript, pero el tema es que si el navegador lo tiene deshabilitado, no funcionaria, y existiria un bug. Les comento el modificarperfil.php llama al update_cuenta.php.

Aca dejo el codigo del update_cuenta.php:

Código PHP:
Ver original
  1. session_name('pLogin');
  2. include('connect.php'); //incluimos el config.php que contiene los datos de la conexi&oacute;n a la db
  3. $usuario=$_SESSION['usuario'];
  4.  
  5.  
  6. $firstname=$_POST['firstname'];
  7. $lastname=$_POST['lastname'];
  8. $ocupacion=$_POST['ocupacion'];
  9.  
  10.  
  11.  
  12. UPDATE prueba
  13. SET firstname='$firstname',lastname='$lastname',ocupacion='$ocupacion'
  14. WHERE usuario='$_SESSION[usuario]'  ");
  15. echo '<span class="Estilo24">Datos Guardados con &eacute;xito</span>';


El codigo que está mas arriba deberia de ponerlo en el update_cuenta.php o en el modificarperfil.php como está. No me funciona.

Etiquetas: match, preg
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 01:06.