Foros del Web » Programando para Internet » PHP »

validacion

Estas en el tema de validacion en el foro de PHP en Foros del Web. Hola, Quisiera saber como le hago para validar un formulario pero en especial un campo llamado NewEmail el cual si los usuarios no introducen direcciones ...
  #1 (permalink)  
Antiguo 19/06/2006, 12:44
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
validacion

Hola,

Quisiera saber como le hago para validar un formulario pero en especial un campo llamado NewEmail el cual si los usuarios no introducen direcciones de @myisp.com no se podrán registrar. Saludos
__________________
Hospedaje Web al mejor costo!
  #2 (permalink)  
Antiguo 19/06/2006, 13:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tienes una FAQ al respecto en el foro de PHP .. intenta revisarla. (Se basa en uso de expresiones regulares para mayor efectividad).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 19/06/2006, 14:30
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
si estas muy vago aca te pongo un codigo

Código PHP:

function comprobar_email($email){
    
$mail_correcto 0;
    
//compruebo unas cosas primeras
    
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
       if ((!
strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
          
//miro si tiene caracter .
          
if (substr_count($email,".")>= 1){
             
//obtengo la terminacion del dominio
             
$term_dom substr(strrchr ($email'.'),1);
             
//compruebo que la terminación del dominio sea correcta
             
if (strlen($term_dom)>&& strlen($term_dom)<&& (!strstr($term_dom,"@")) ){
                
//compruebo que lo de antes del dominio sea correcto
                
$antes_dom substr($email,0,strlen($email) - strlen($term_dom) - 1);
                
$caracter_ult substr($antes_dom,strlen($antes_dom)-1,1);
                if (
$caracter_ult != "@" && $caracter_ult != "."){
                   
$mail_correcto 1;
                }
             }
          }
       }
    }
    if (
$mail_correcto)
       return 
true;
    else
       return 
false;

  #4 (permalink)  
Antiguo 19/06/2006, 20:18
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Preguntas:

1.- En donde válida si el correo es @myisp.com?
2.- Si mi campo se llama NewEmail debo sustituir $email por $NewEmail ?

GRACIAS Y SALUDOS

CLUSTER: ECHARE UN VISTAZO AL FAQ ;)
__________________
Hospedaje Web al mejor costo!

Última edición por urgido; 19/06/2006 a las 21:53
  #5 (permalink)  
Antiguo 21/06/2006, 00:10
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
para ser más exacto a la funcion que le que le quiero añadir esta modificación es la siguiente:

Código PHP:
$FormData[3] = trim(strip_tags($_POST['NewEmail'])); 

"NewEmail" es el nombre del campo del formulario. Saludos
__________________
Hospedaje Web al mejor costo!
  #6 (permalink)  
Antiguo 21/06/2006, 06:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Nefertiter
si estas muy vago aca te pongo un codigo

Código PHP:

function comprobar_email($email){
    
$mail_correcto 0;
    
//compruebo unas cosas primeras
    
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
       if ((!
strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
          
//miro si tiene caracter .
          
if (substr_count($email,".")>= 1){
             
//obtengo la terminacion del dominio
             
$term_dom substr(strrchr ($email'.'),1);
             
//compruebo que la terminación del dominio sea correcta
             
if (strlen($term_dom)>&& strlen($term_dom)<&& (!strstr($term_dom,"@")) ){
                
//compruebo que lo de antes del dominio sea correcto
                
$antes_dom substr($email,0,strlen($email) - strlen($term_dom) - 1);
                
$caracter_ult substr($antes_dom,strlen($antes_dom)-1,1);
                if (
$caracter_ult != "@" && $caracter_ult != "."){
                   
$mail_correcto 1;
                }
             }
          }
       }
    }
    if (
$mail_correcto)
       return 
true;
    else
       return 
false;

Sería recomendable que usases expresionres regulares para ese tipo de validaciones .. Fijate en el ejemplo que comenté que está en las FAQ's .. apenas un par de líenas para validar una cadena con bastantes condiciones según su sintax ..

La FAQ mencionada:
http://www.forosdelweb.com/showthrea...423#post333423

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 22/06/2006, 00:44
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Hola, pues he aplicado alguno de las sugerencias que me han repondido y he llegado al siguiente código:

Código PHP:
## email
        
if(strstr($_POST['NewEmail'], '@')=="@myisp.com")
        {
        
$FormData[3] = trim(strip_tags($_POST['NewEmail']));
        }
        else {
        
$ErrorMensaje $Idioma['registro']['error3'];
        } 
Tengo un problema que cuando ingreso una direccion [email protected] me bota el error como si hubiese introducido un @yahoo.com Y la verdad no le hayo el error. Un saludo
__________________
Hospedaje Web al mejor costo!

Última edición por urgido; 22/06/2006 a las 00:52
  #8 (permalink)  
Antiguo 22/06/2006, 06:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Realmente ya no sé que es lo que quieres validar ..

Primero tendrías que validar como "expresión" que es una dirección de e-mail valida. Las direcciones de e-mail tienen cierto formato standard y definido (por eso te dejé el link hacia la FAQ que lo valida según esos standares.

Ahora .. si tu quieres validar cosas como por ejemplo que tu "domino" sea tuISP.com por ejemplo (el "domino es lo que vá despues de la @ por si acaso ...) OK .. entonces es cosa de usar en lo preferente una expresión regular para tal fin ..

Concreta que es lo que realmente quieres .. así la respuesta que te puedan dar será más acertada.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 22/06/2006, 14:10
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Lo que quiero es válida "si el correo es @myisp.com, entonces el _POST se enviará, sino se devolvera un error". Saludos espero haya quedado claro heheh y gracias Cluster x la paciencia.


POR CIERTO YO HABÍA HECHO ESTE PEQUEÑO EJEMPLO PERO CREO QUE QUEDARÍA UN "BUG" O NO SE, SE ME HACE QUE LO TOY HACIENDO MAL. SALUDOS

Código PHP:
if(strstr($_POST['NewEmail'], '@')=="")
{
//sigue

else if(
strstr($_POST['NewEmail'], '@')=="@myisp.com")
{
$FormData[3] = trim(strip_tags($_POST['NewEmail']));
}
else {
$ErrorMesaje $Idioma['registro']['error3'];

__________________
Hospedaje Web al mejor costo!
  #10 (permalink)  
Antiguo 22/06/2006, 16:52
 
Fecha de Ingreso: julio-2005
Mensajes: 86
Antigüedad: 18 años, 9 meses
Puntos: 3
pues usa la funcion explode
Código PHP:
$NewEmail $_POST["NewEmail"];
$comprueba explode("@"$NewEmail);
$comprobado $comprueba[1]; 
y luego pones un if como este
Código PHP:
if ($comprobado == "MyIsp.com") {
lo que qieras que haga si es MyIsp.com

;) Espero ser lo mas claro posble.

Una cosa, dónde se envia? BBDD? ;)
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 17:21.