Foros del Web » Programando para Internet » PHP »

Problema con Funcion Regular y Campos con Nombres!

Estas en el tema de Problema con Funcion Regular y Campos con Nombres! en el foro de PHP en Foros del Web. Estoy tratando de filtrar que un campo solo admita CARACTERES ALFABETICOS con un largo de 2 - 100 caracteres... el problema es que si coloco ...
  #1 (permalink)  
Antiguo 30/01/2012, 11:35
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Pregunta Problema con Funcion Regular y Campos con Nombres!

Estoy tratando de filtrar que un campo solo admita CARACTERES ALFABETICOS con un largo de 2 - 100 caracteres...

el problema es que si coloco un numero "18912462" me lo deja pasar... como evito esto? paso la funcion que estoy usando:

Código PHP:
Ver original
  1. if (!preg_match('/^[a-zA-ZáéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{3,100}+$/', $Nombre))
  2.     {
  3.         //echo 'Nombre Inválido';
  4.         $error_archivo.="<br>- Ingrese un Nombre Correcto, que no Posea Numeros o Caracteres especiales.";
  5.         $flag='error';
  6.     }

e leido en todas partes y tecnicamente esta bien escrita (digo yo puesto no coloque el 0-9, que se coloca para que acepte los digitos numericos) entonces en que me equivocado? el mensaje que esta en el IF nunca lo pasa....
  #2 (permalink)  
Antiguo 30/01/2012, 11:45
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Respuesta: Problema con Funcion Regular y Campos con Nombres!

Tu expresión regular está bien, al ejecutar tu script contra el array $names, puedo ver que detecta los string "18912462" y "deerme.org" (que no cumplen con el patrón), a si que el problema va por otro lado.

Código PHP:
<?php

$names 
= array("18912462","deerme.org","Juan Carlos","Jorge Gonzales");


foreach( 
$names as $name )
{
        if ( !
preg_match('/^[a-zA-ZáéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{3,100}+$/'$name)  )
        {
                echo 
$name." no cumple con el patrón\n";
        }
}


Saludos
  #3 (permalink)  
Antiguo 30/01/2012, 12:48
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Problema con Funcion Regular y Campos con Nombres!

Bueno e aqui mi file completo:
Código PHP:
Ver original
  1. <?PHP require_once('Connections/Conexion.php');
  2.  
  3. //CONFIGURACION
  4. $maximo_tamano= '524288'; //tamaño maximo de los archivos, 500kb.
  5. //FIN CONFIGURACION
  6. $flag='nada';
  7. $mensaje="nada";
  8. $error_archivo=" ";
  9. //proceso del formulario
  10. // si existe "enviar"...
  11. if (isset ($_POST['Enviar']))
  12.     {      
  13.     //recogemos las variables
  14.     if (isset($_POST['nom']))
  15.     {
  16.       $Nombre=STRTOUPPER($_POST['nom']);
  17.     }
  18.     if (isset($_POST['ced']))
  19.     {
  20.       $Cedula=STRTOUPPER($_POST['ced']);
  21.     }
  22.     if (isset($_POST['prof']))
  23.     {
  24.       $Area=STRTOUPPER($_POST['prof']);
  25.     }  
  26.     //Se Comprueba si el Tamano y el Tipo son el permitido
  27.     if (isset($_FILES['archivo']['tmp_name']))
  28.         {
  29.         $tipo=$_FILES['archivo']['type'];
  30.         /*echo $tipo;*/
  31.         //Formatos de archivo permitidos
  32.         switch ($tipo)
  33.         {
  34.             // Word 2003
  35.             case "application/msword":
  36.             $ext="doc";
  37.             break;
  38.             // Word 2007
  39.             case "application/vnd.openxmlformats-officedocument.wordprocessingml.document":
  40.             $ext="docx";
  41.             break;
  42.             // Excel 2003
  43.             case "application/vnd.ms-excel":
  44.             $ext="xls";
  45.             break;
  46.             // Excel 2007
  47.             case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":
  48.             $ext="xlsx";
  49.             break;
  50.             // PDF
  51.             case "application/pdf":
  52.             $ext="pdf";
  53.             break;
  54.             // PowerPoint 2003
  55.             case "application/vnd.ms-powerpoint":
  56.             $ext="ppt";
  57.             break;
  58.             // PowerPoint 2007
  59.             case "application/vnd.openxmlformats-officedocument.presentationml.presentation":
  60.             $ext="pptx";
  61.             break;
  62.             //Ninguno de los Anteriores
  63.             default:
  64.             $ext="error";
  65.             break;
  66.             }
  67.         }
  68.         //Creo la Ruta Correcta.
  69.         $Ruta="Curriculos/";
  70.         $Ruta.=$Area;
  71.         //Termino la Ruta con Carpeta, Cedula del Trabajador y Extension Original.
  72.         $Archivo=$Ruta;
  73.         $Archivo.='/';
  74.         $Archivo.=$Cedula;
  75.         $Archivo.=".";
  76.         $Archivo.=$ext;
  77.         $tamano=$_FILES['archivo']['size'];
  78.         $number=is_numeric($Cedula);
  79.         if($number==false){ $flag='error'; $error_archivo.="<br>- El Campo Cedula solo acepta valores Numerico.";}
  80.         //Pregunto si se genero un Error Con Respecto al Archivo
  81.     if ($ext=="error") { $flag='error'; $error_archivo.="<br>- Formato de archivo no permitido.";}
  82.     if ($tamano > $maximo_tamano) { $flag='error'; $error_archivo.="<br>- El tama&ntilde;o de su archivo supera el m&aacute;ximo permitido.";}
  83.     if (!preg_match('/^[a-zA-ZáéíóúàèìòùÁÉÍÓÚÀÈÌÒÙÑñ\s]{3,100}+$/', $Nombre))
  84.     {
  85.         //echo 'Nombre Inválido';
  86.         $error_archivo.="<br>- Ingrese un Nombre Correcto, que no Posea Numeros o Caracteres especiales.";
  87.         $flag='error';
  88.     }
  89.     //Se Comprueba si los campos tienen Dato, y si la Variable Error esta Vacia
  90.     if ($Nombre!='' && $Cedula!='' && $Area!='' && $error_archivo!='')
  91.         {
  92.         //Pregunto por el Usuario que se esta anadiendo.
  93.         $colname_BuscaCed = "-1";
  94.         if (isset($_POST['ced'])) {
  95.           $colname_BuscaCed = (get_magic_quotes_gpc()) ? $_POST['ced'] : addslashes($_POST['ced']);
  96.         }
  97.         mysql_select_db($database_Conexion, $Conexion);
  98.         $query_BuscaCed = sprintf("SELECT * FROM empleo WHERE cedula = %s", $colname_BuscaCed);
  99.         $BuscaCed = mysql_query($query_BuscaCed, $Conexion) or die(mysql_error());
  100.         $row_BuscaCed = mysql_fetch_assoc($BuscaCed);
  101.         $totalRows_BuscaCed = mysql_num_rows($BuscaCed);
  102.         // Compruebo si el Usuario y el Curriculo Existe.
  103.         if ($totalRows_BuscaCed!=0)
  104.         {
  105.             //La Cedula ya esta en la BD, procedo a Borrarla para insertarla Nuevamente
  106.             $query_Delete = ("DELETE FROM empleo WHERE cedula = $Cedula");
  107.             $Delete = mysql_query($query_Delete, $Conexion) or die(mysql_error());
  108.             unlink($row_BuscaCed['curriculo']);                                
  109.         }
  110.         else
  111.         {
  112.             //La Cedula no Existe en la Bd Procedo a Insertarla.
  113.         }      
  114.        
  115.         //Inserto el Usuario
  116.             $query_Insert = ("INSERT INTO empleo (nombres,cedula,area,curriculo) VALUES ('$Nombre','$Cedula','$Area','$Archivo')");
  117.             $Insert = mysql_query($query_Insert, $Conexion) or die(mysql_error());
  118.         // Copiamos el Archivo al Servidor     
  119.         if(is_dir($Ruta))
  120.         {
  121.             //La ruta existe por lo tanto no la creo
  122.         }
  123.         else
  124.         {
  125.             //La Ruta no Existe la Creo
  126.             mkdir($Ruta, 0700);
  127.         }
  128.         copy($_FILES['archivo']['tmp_name'], $Archivo);
  129.         //Hago Ok para Saber que si Funciono el Envio!     
  130.         $flag='ok';
  131.         //Mensaje de Exito!
  132.         $mensaje='<div id="ok"><h4><br>Su Resumen Curricular ha sido Cargado Exitosamente.<br><br>Gracias por Preferirnos.</h4></div>';
  133.         }
  134.         else
  135.             {
  136.             //Si Hay Un Campo Vacio o Se Genero un Error al Cargar el Archivo lo Muestro
  137.             $flag='error';
  138.             $mensaje='<div id="error">- Los Campos Marcados Con * Son Requeridos. '.$error_archivo.'</div>';
  139.            
  140.             }
  141. }
  142. ?>
  143. <div id="Empleo">
  144. <div id="LogoBest"><img src="imagenes/BestShop.gif" width="234" height="153" /></div>
  145. <p>En <b>Best Shop</b> es un gusto que nos considere como una excelente alternativa de trabajo.</p>
  146. <p>Ofrecemos un ambiente de trabajo equilibrado, con muchas &aacute;reas de realizaci&oacute;n profesional, donde su crecimiento personal es muy importante para nosotros.</p>
  147. <p>Lo invitamos a formar parte de nuestra base de datos</p>
  148.  
  149. <?PHP
  150. if ($mensaje!="nada")
  151. {
  152. echo $mensaje; /*mostramos el estado de envio del form */
  153. }
  154. ?>
  155.  
  156. <?PHP
  157. if ($flag!='ok')
  158.     {
  159. ?>
  160.     <br >
  161.     <form action="?page=Empleo" method="post" enctype="multipart/form-data">
  162.         <p>Apellidos y Nombres: </p>
  163.         <p><input  <?PHP if ( $flag!="nada" ) { echo 'class="campoerror"';} else {echo 'class="camponormal"';} ?>  type="text" name="nom" size="40" value="<?PHP if (isset($_POST['nom'])){ echo $_POST['nom']; }?>"/>
  164.         <img src="imagenes/interrogacion.gif" width="15" height="15" title="Coloque su Nombre y Apellido por ejemplo: Pirela Lopez Fran Jose" />
  165.         <b style="color:#FF0000"> *</b></p>
  166.         <p>C&eacute;dula de Identidad: </p>
  167.         <p><input <?PHP if ( $flag!="nada" ) { echo 'class="campoerror"';} else {echo 'class="camponormal"';} ?> type="text" name="ced" size="40" value="<?PHP if (isset($_POST['ced'])){ echo $_POST['ced']; }?>"/>
  168.         <img src="imagenes/interrogacion.gif" width="15" height="15" title="Coloque aqui su Cedula de Identidad sin Puntos ni V- E-, por Ejemplo; xxxxxxx" />
  169.         <b style="color:#FF0000"> *</b></p>
  170.         <p>&Aacute;rea de Profesi&oacute;n: </p>
  171.         <p>
  172.         <select name="prof" <?PHP if ( $flag!="nada" ) { echo 'class="campoerror"';} else {echo 'class="camponormal"';} ?>>
  173.             <option>Sin Profesion</option>
  174.             <option>Administracion</option>
  175.             <option>Contaduria</option>
  176.             <option>Recursos Humanos</option>
  177.             <option>Mantenimiento</option>
  178.             <option>Informatica</option>
  179.             <option>Publicidad</option>
  180.             <option>Almacenes</option>
  181.             <option>Otros</option>
  182.         </select>
  183.         <img src="imagenes/interrogacion.gif" width="15" height="15" title="Elija su Area de Profesion segun sus Conocimientos o el Cargo que Busca Desempeñar" /> 
  184.         <b style="color:#FF0000"> *</b></p>
  185.         <p title="Elija su Resumen Curricular para cargalo a nuestra Base de Datos">Resumen Curr&iacute;cular: </p>
  186.         <p><input name="archivo" type="file" id="archivo">
  187.         &nbsp;
  188.         <img src="Imagenes/Adobe.gif" width="24" height="27" />
  189.         &nbsp;
  190.         <img src="Imagenes/Word.GIF" width="25" height="25" />
  191.         &nbsp;
  192.         <img src="Imagenes/Excel.gif" width="26" height="25" />
  193.         &nbsp;
  194.         <img src="Imagenes/PowerPoint.GIF" width="27" height="25" />
  195.         &nbsp;
  196.         Peso M&aacute;ximo 500KB<b style="color:#FF0000"> *</b></p>
  197.         <br><br>
  198.         <input name="Enviar" type="submit" id="boton" value="Enviar" class="Boton">
  199.         &nbsp;
  200.         <input type="reset" name="Submit" value="Resetear" class="Boton">
  201.     </form>
  202.     <?PHP
  203.     }
  204.     ?>
  205. <br><br>
  206. </div>
  207. <?PHP
  208. @mysql_free_result($BuscaCed,$Delete,$Insert);
  209. ?>

por mas q lo veo no encuentro el error :(

Etiquetas: campos, funcion, regular
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 03:47.