Foros del Web » Programando para Internet » PHP »

validacion de telefono con php

Estas en el tema de validacion de telefono con php en el foro de PHP en Foros del Web. quiero validar el teléfono hay algo que no hago bien porque siempre me sale el mensaje que entre el teléfono por favor esto tendría que ...
  #1 (permalink)  
Antiguo 03/07/2011, 08:12
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
validacion de telefono con php

quiero validar el teléfono

hay algo que no hago bien porque siempre me sale el mensaje que entre el teléfono por favor
esto tendría que salir después de pulsar al botón de enviar al formulario y tampoco tendría que salir la primera vez que entre en el formulario

estoy utilizando la función ereg [0-9]{9}
9digitos y los valores que esperen sean del 0 al 9

he hecho 4 variables
1 para el prefijo
2 para los 2 o 3 primeros números de teléfono
3 para los 2 números de teléfono centrales
4 para los 2 últimos números de teléfono

5 esta variable tiene concatenada las 4 variables superiores

$prefijo_telefono = (int) $_POST['prefijo_telefono'];
$telefono_2_o_3_primeros_digitos = (int) $_POST['telefono_2_o_3_primers_digitos'];
$telefono_2_digitos_centrales = (int) $_POST['telefono_2_digitos_centrales'];
$telefono_2_ultimos_digitos = (int) $_POST['telefono_2_ultimos_digitos'];

$telefono = (int) $prefijo_telefono . $telefono_2_o_3_primeros_digitos . $telefono_2_digitos_centrals . $telefono_2_ultimos_digitos;

if($telefono != ereg("[0-9]{9}",$telefono)
){


?>

<label for="telefono">Prefijo + Telèfono: *</label><br/>
<select id="prefijo_telefono" name="prefijo_telefono">
<option value="" selected="selected"> - Prefijo Telèfono - </option>
<optgroup label="Prefijo">
<option value="972">972</option>
<option value="93">93</option>
<option value="977">977</option>
<option value="973">973</option>
</optgroup>
</select>
- <input type="text" name="telefono_2_o_3_primeros_digitos" size="3" maxlength="3"/> - <input type="text" name="telefono_2_digitos_centrales" size="2" maxlength="2"/> - <input type="text" name="telefono_2_ultimos_digitos" size="2" maxlength="2"/> <br/>
<?php
echo 'Introduzca el telefono por favor<br/>';
}
  #2 (permalink)  
Antiguo 03/07/2011, 08:18
Avatar de Sanchy_com  
Fecha de Ingreso: marzo-2011
Ubicación: Uruguay
Mensajes: 35
Antigüedad: 13 años, 1 mes
Puntos: 5
Respuesta: validacion de telefono con php

El script se esta ejectuando cuando se carga la pagina?

De este manera puede que la variable $telefono nisiquiera este cargada de valores.

A su vez, estas haciendo if($telefono...) para mostrar los campos del formulario, en vez de hacer if($telefono..) para mostrar el error.


Deberías poner el condigo completo ya que no sabemos cuando se empieza a ejecutar la validación del telefono (de esta manera pareciera que se ejecuta al cargar la pagina, y como no hay cargados valores para el telefono, obviamente va a dar error).
Además, no conozco la funcion 'ereg' pero no creo que la estes utilizando bien. Estas comparando una cadena con ella misma modificada :S parece muy raro.
  #3 (permalink)  
Antiguo 03/07/2011, 08:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: validacion de telefono con php

quiero validar el teléfono

hay algo que no hago bien porque siempre me sale el mensaje que entre el teléfono por favor
esto tendría que salir después de pulsar al botón de enviar al formulario y tampoco tendría que salir la primera vez que entre en el formulario

estoy utilizando la función ereg [0-9]{9}
9digitos y los valores que esperen sean del 0 al 9

he hecho 4 variables
1 para el prefijo
2 para los 2 o 3 primeros números de teléfono
3 para los 2 números de teléfono centrales
4 para los 2 últimos números de teléfono

5 esta variable tiene concatenada las 4 variables superiores

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.     <head>
  3.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4.         <title></title>
  5.     </head>
  6.     <body>
  7.         <form action="formularo_de_registro.php" method="post">
Código PHP:
Ver original
  1. $prefijo_telefono = (int) $_POST['prefijo_telefono'];
  2.  $telefono_2_o_3_primeros_digitos = (int) $_POST['telefono_2_o_3_primers_digitos'];
  3.  $telefono_2_digitos_centrales = (int) $_POST['telefono_2_digitos_centrales'];
  4.  $telefono_2_ultimos_digitos = (int) $_POST['telefono_2_ultimos_digitos'];
  5.  
  6.  $telefono = (int) $prefijo_telefono . $telefono_2_o_3_primeros_digitos . $telefono_2_digitos_centrals . $telefono_2_ultimos_digitos;
  7.  
  8.  if($telefono != ereg("[0-9]{9}",$telefono)
  9.  ){
  10.  
  11.  
  12.  ?>
Código HTML:
Ver original
  1. <label for="telefono">Prefijo + Telèfono: *</label><br/>
  2.  <select id="prefijo_telefono" name="prefijo_telefono">
  3.  <option value="" selected="selected"> - Prefijo Telèfono - </option>
  4.  <optgroup label="Prefijo">
  5.  <option value="972">972</option>
  6.  <option value="93">93</option>
  7.  <option value="977">977</option>
  8.  <option value="973">973</option>
  9.  </select>
  10.  - <input type="text" name="telefono_2_o_3_primeros_digitos" size="3" maxlength="3"/> - <input type="text" name="telefono_2_digitos_centrales" size="2" maxlength="2"/> - <input type="text" name="telefono_2_ultimos_digitos" size="2" maxlength="2"/> <br/>
Código PHP:
Ver original
  1. <?php
  2.  echo 'Introduzca el telefono por favor<br/>';
  3.  }

Código HTML:
Ver original
  1. <input type="submit" name="registrar-se" value="Registrar-se"/><br/>
  2.         </form>
  3.     </body>
  4. </html>

Última edición por albertrc; 03/07/2011 a las 08:44
  #4 (permalink)  
Antiguo 03/07/2011, 09:10
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: validacion de telefono con php

No sé si se los números de teléfonos varían en los países de centro america o sudamérica como pasa con EE.UU(10 números), pero en España son 3 prefijo y 6 números.

¿No te sería más fácil con expresiones regulares?

Código PHP:
<?php
$num 
"(916)111-111";
if (
preg_match('/\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{3}/x'trim($num)))
    echo 
"numero correcto";
else
    echo 
"numero incorrecto";
?>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #5 (permalink)  
Antiguo 03/07/2011, 10:28
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: validacion de telefono con php

lo que quiero es que la primera vez que entre no muestre que tengo que entrar el numero de teléfono hasta que envié el formulario

y otra cosa si envió el formulario y hay algo incorrecto no tenga que volver a rellenar todos los campos

si lo hago con ereg es porque soy novato y lo hago como pueda
[0-9]{9]
que el numero sea del 0-9 y 9 dígitos

lo he hecho todo en el mismo fichero formulario de registro
y después cuando los datos son correctos poder hacer un insert y poder hacer update y select


quiero las cosas fáciles y sencillas al principio porque sino no me entero de nada
  #6 (permalink)  
Antiguo 03/07/2011, 10:34
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: validacion de telefono con php

albertrc::
1º)Tu código original contiene

Código PHP:
Ver original
  1. $prefijo_telefono = (int) $_POST['prefijo_telefono'];
  2.  $telefono_2_o_3_primeros_digitos = (int) $_POST['telefono_2_o_3_primers_digitos'];
  3.  $telefono_2_digitos_centrales = (int) $_POST['telefono_2_digitos_centrales'];
  4.  $telefono_2_ultimos_digitos = (int) $_POST['telefono_2_ultimos_digitos'];
  5.  
  6.  $telefono = (int) $prefijo_telefono . $telefono_2_o_3_primeros_digitos . $telefono_2_digitos_centrals . $telefono_2_ultimos_digitos;
  7.  
  8.  if($telefono != ereg("[0-9]{9}",$telefono)
  9.  ){

dónde $_POST['telefono_2_o_3_primers_digitos']; difiere de $_POST['telefono_2_o_3_primeros_digitos'];


Es un error de tipeo, o esta asi en tu código?

2º)se recomienda el uso de preg_match() e en favor de ereg()

$control_telefono="/[0-9]{9}/";
if(!preg_match($control_telefono,$telefono)){
#Error
}


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 03/07/2011, 10:38
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: validacion de telefono con php

Es un error de tipeo
  #8 (permalink)  
Antiguo 03/07/2011, 10:39
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: validacion de telefono con php

Cita:
Iniciado por albertrc Ver Mensaje
lo que quiero es que la primera vez que entre no muestre que tengo que entrar el numero de teléfono hasta que envié el formulario

y otra cosa si envió el formulario y hay algo incorrecto no tenga que volver a rellenar todos los campos
Eso lo resuelves fácil poniendo una condición dentro del value del input, siempre y cuando el action del form esté en la misma página.
Algo del estilo: (es un ejemplo, adaptalo a tú código)

Código PHP:
if( isset($_POST['submit']))
{
 
if (preg_match('/\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{3}/x', trim($_POST['telefono'])))
$numero = $_POST['telefono'];
?>  

}

//Y en la parte del formulario:
//mostraremos el valor que tuvo anteriormente en caso de ser correcto
//de no ser así saldría vacío.

<input type="text" name="telefono" value="<?php if( isset($numero) ) echo $numero ?>" />
Cita:
Iniciado por albertrc Ver Mensaje
si lo hago con ereg es porque soy novato y lo hago como pueda
[0-9]{9]
que el numero sea del 0-9 y 9 dígitos
Yo sólo te dí un consejo, es cosa tuya aceptarlo o no. No me pongo a mirar si eres novato o no, sólo te di una idea para que ocupara menos código.

Cita:
Iniciado por albertrc Ver Mensaje
quiero las cosas fáciles y sencillas al principio porque sino no me entero de nada
Pero es que la gente del foro está para echarte una mano (si quieren), no para que se adapten a tú método de trabajo.
Además es más sencillo usar una expresión regular y preg_match() que ereg() en este caso.
Una cosa es ser novato y otra no querer usar una función que le resulte más fácil.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #9 (permalink)  
Antiguo 03/07/2011, 10:51
Avatar de Sanchy_com  
Fecha de Ingreso: marzo-2011
Ubicación: Uruguay
Mensajes: 35
Antigüedad: 13 años, 1 mes
Puntos: 5
Respuesta: validacion de telefono con php

Una cosa que es clara, es que para aprender, hay que probar y errar, y seguir probando y errando

Fijate los consejos que te aportan y trata de implementarlos, de una forma, de otra. Despues, si seguis sin poder, volves a mostrar como fue que lo hiciste y volves a pedir ayuda.
  #10 (permalink)  
Antiguo 03/07/2011, 10:51
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: validacion de telefono con php

ahora ya va mejor con tu sistema

$validacion_telefono = "/[0-9]{9}/";
if(!preg_match($validacion_telefono, $telefono)){
echo 'Introduzca el telefono porfavor ex: 972-22-44-68<br/>';
}

ahora me faltaría que la primera vez que entras no salga el mensaje y si enviás el formulario y hay campos incorrectos no se tenga que rellenar todos otra vez

creo que con esto seria suficiente no para validar un telefono
  #11 (permalink)  
Antiguo 03/07/2011, 10:56
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: validacion de telefono con php

Cita:
Iniciado por albertrc Ver Mensaje
ahora me faltaría que la primera vez que entras no salga el mensaje y si enviás el formulario y hay campos incorrectos no se tenga que rellenar todos otra vez
Ya te comente que sólo tienes que guardar el valor en una variable si es correcto al hacer el submit y mostrarlo en el value del input.
Te puse hasta como hacerlo pero hablo para las paredes...
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #12 (permalink)  
Antiguo 03/07/2011, 10:58
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: validacion de telefono con php

perdona gracias a todos por vuestra ayuda i vuestro tiempo
  #13 (permalink)  
Antiguo 03/07/2011, 11:07
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: validacion de telefono con php

ya he puesto las variables en el value pero tengo un problema si no pongo nada me sale 0 porque valido las variables con (int) por cuestiones de seguridad sql injection xss i otra historias

el submit no me funciona o es porque tanto en el name como value tengo registro
<input type="submit" name="registro" value="Registro"/><br/>

si tengo muchos campos podria poner el if submit cogiendo todo el formulario no
if( isset($_POST['submit']))
{

}

Última edición por albertrc; 03/07/2011 a las 11:18
  #14 (permalink)  
Antiguo 03/07/2011, 11:22
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: validacion de telefono con php

validar las variables con (int)?, con (int) convertis la cadena en un entero, que en tu caso, de poco vale, ya que no vas a estar haciendo operaciones con los numeros telefónicos.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #15 (permalink)  
Antiguo 03/07/2011, 11:58
Avatar de Sanchy_com  
Fecha de Ingreso: marzo-2011
Ubicación: Uruguay
Mensajes: 35
Antigüedad: 13 años, 1 mes
Puntos: 5
Respuesta: validacion de telefono con php

Cita:
Iniciado por albertrc Ver Mensaje
ya he puesto las variables en el value pero tengo un problema si no pongo nada me sale 0 porque valido las variables con (int) por cuestiones de seguridad sql injection xss i otra historias

el submit no me funciona o es porque tanto en el name como value tengo registro
<input type="submit" name="registro" value="Registro"/><br/>

si tengo muchos campos podria poner el if submit cogiendo todo el formulario no
if( isset($_POST['submit']))
{

}
ese if esta muy bien. el problema es donde lo pones.

a ver. si vos haces un if lo que este dentro del if se va a ejecutar solo cuando se cumplan las condiciones. si vos pones el formulario dentro del if nunca se va a mostrar.

Yo separaría todo lo que es validacion y el formulario por otro lado.

te muestro un ejemplo?

Código PHP:
<?php
                        
if( isset($_POST['submit']) ) {
                            
$succesful TRUE;
                            if( isset(
$_POST['empresa']) && $_POST['empresa'] != '' $succesful FALSE//texto antibots        
                            
if(! isset($_POST['nombre']) || trim($_POST['nombre']) == '' || trim($_POST['nombre']) == 'Nombre')  {
                                
$succesful FALSE;
                                
$error_nombre '';
                            }
                            if(! isset(
$_POST['telefono']) || trim($_POST['telefono']) == '' || trim($_POST['telefono']) == 'Telefono')  {
                                
$succesful FALSE;
                                
$error_telefono '';
                            }
                            if(! isset(
$_POST['email']) || trim($_POST['email']) == '' || trim($_POST['email']) == 'E-mail') {
                                
$succesful FALSE;
                                
$error_email '';    
                            }
                            if(! isset(
$_POST['mensaje']) || trim($_POST['mensaje']) == '' || trim($_POST['mensaje']) == 'Escribanos un mensaje') {
                                
$succesful FALSE;
                                
$error_mensaje '';    
                            }                
                            if( 
$succesful == TRUE ) {                                    
                                
$nombre strip_tags $_POST['nombre'] );        
                                
$telefono strip_tags $_POST['telefono'] );
                                
$email strip_tags $_POST['email'] );
                                
$mensaje strip_tags $_POST['mensaje'] );            
                                    
                                
$to '[email protected]';
                                
$subject "Mensaje desde pagina";
                                
$message 'Mensaje de: ' $nombre ' - ' .  $email ' - ' $telefono "\n\n" $mensaje;                    
                                
$header "From: Sanchy.com <[email protected]>";
                                
                                
$mail_sent mail($to$subject$message$header);
                                
                                if(
$mail_sent == TRUE) {
                                
                                    
//ingresar datos a la BD
                                    
                                
}
                                
                        }    
                        
                    
?>

Código HTML:
<form id="contacto-form" action="contacto.php#mensaje-enviado" method="post">           
					
						<?php if( isset($error_nombre) ) : ?>
							<div class="error-active">							
						<?php endif; ?>     
                                <p class="error">Por favor escrib&iacute; tu nombre:</p><br/>
                                <input type="text" class="input" value="<?php if(isset($_POST['nombre'])) echo $_POST['nombre']; else echo 'Nombre'; ?>" name="nombre" /><br/>
						<?php if( isset($error_nombre) ) : ?>
							</div><!-- .error-active -->							
						<?php endif; ?>     
							
							
						<span style="display:none">
							<input type="text" class="input" value="" name="empresa" /><br/>
						</span>
						
						
						<?php if( isset($error_telefono) ) : ?>
							<div class="error-active">							
						<?php endif; ?>     
								<p class="error">Por favor escrib&iacute; un tel&eacute;fono:</p><br/>  
								<input type="text" class="input" value="<?php if(isset($_POST['telefono'])) echo $_POST['telefono']; else echo 'Telefono'; ?>" name="telefono" /><br/>   
						<?php if( isset($error_telefono) ) : ?>
							</div><!-- .error-active -->							
						<?php endif; ?>          
							 
							 
						<?php if( isset($error_email) ) : ?>
							<div class="error-active">							
						<?php endif; ?>     
								<p class="error">Por favor escrib&iacute; un e-mail:</p><br/>
								<input type="text" class="input" value="<?php if(isset($_POST['email'])) echo $_POST['email']; else echo 'E-mail'; ?>" name="email" /><br/>
						<?php if( isset($error_email) ) : ?>
							</div><!-- .error-active -->							
						<?php endif; ?>  
						
						
						<?php if( isset($error_mensaje) ) : ?>
							<div class="error-active">							
						<?php endif; ?>     
								<p class="error">Parece que olvidaste escribir un mensaje:</p><br/>
								<textarea rows="0" cols="0" class="textarea" name="mensaje"><?php if(isset($_POST['mensaje'])) echo $_POST['mensaje']; else echo 'Escribanos un mensaje'; ?></textarea><br/>    
						<?php if( isset($error_mensaje) ) : ?>
							</div><!-- .error-active -->							
						<?php endif; ?>                  
						
						
						<?php if( isset($mail_message) ) : ?>
							<div class="error-active">							
						<?php endif; ?>     
							<p class="error errorbig"><?php echo $mail_message; ?></p><br/>               
                                <input type="submit" class="submit" value="Enviar mensaje" name="submit" />
						<?php if( isset($mail_message) ) : ?>
							</div><!-- .error-active -->							
						<?php endif; ?>      
                        <div id="mensaje-enviado"></div>
						
					</form> 

Asi, validando cada campo por separado, cuando un campo esta erroneo:

- Se setea TRUE una variable de error para cada campo, luego en el HTML si la variable seteada para el campo correspondiente esta en TRUE, haces todo lo que quieras hacer y mostrar


Espero te sirva de algo
  #16 (permalink)  
Antiguo 03/07/2011, 13:34
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: validacion de telefono con php

Sanchy_com

tienes razon es mejor separar la validacion del formulario asi queda mas claro

si se tiene que añadir o quitar algo es mas rapido i se entiende mejor

Etiquetas: Ninguno
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 20:32.