Foros del Web » Programando para Internet » PHP »

Desactivar la validación de class.phpmailer.php y hacer la mía

Estas en el tema de Desactivar la validación de class.phpmailer.php y hacer la mía en el foro de PHP en Foros del Web. Quiero desactivar la validación de class.phpmailer.php solo valida correo y mensaje y quiero hacer mi propia validación desde el formulario porque tengo correo, assumpto, nombre, ...
  #1 (permalink)  
Antiguo 13/01/2010, 18:49
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 9 meses
Puntos: 1
Desactivar la validación de class.phpmailer.php y hacer la mía

Quiero desactivar la validación de class.phpmailer.php solo valida correo y mensaje
y quiero hacer mi propia validación desde el formulario porque tengo correo, assumpto, nombre, mensaje,recapatcha y a lo mejor dentro de un tiempo quiero poner el teléfono por ejemplo

si pongo un correo y un mensaje y pongo enviar envia el mensaje
aunque yo tenga las validaciones hechas en el formulario

siempre prevalece class.phpmailer.php de el formulario lo que no se es que tengo que comentar

no pongo el codigo de class.phpmailer.php porque son 2323 linias

PHPMailer v5.1
http://sourceforge.net/projects/phpm...0for%20php5_6/
class.phpmailer.php

linia 775 por ejemplo he quitado esta linia porque mostraba cuando un mensaje avia sido enviado correctamente para un usuari no le interesa este mensaje
//$this->smtp->do_debug = $this->SMTPDebug;
Advanced Example using Gmail (for PHPMailer v5.0.0 and up)
http://phpmailer.worxware.com/index....=exampleagmail
tengo este fichero que se llama phpmailer.php
<html>

<head>

<link rel="stylesheet" type="text/css" media="screen" href="css/estilos.css" />

</head>

<body>

Código PHP:
<?php

include("class.phpmailer.php");

//include("class.smtp.php"); 



$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP

try {

  
$mail->Host       "localhost"// SMTP server

  
$mail->SMTPDebug  2;                     // enables SMTP debug information (for testing)

  
$mail->SMTPAuth   true;                  // enable SMTP authentication

  
$mail->SMTPSecure "ssl";                 // sets the prefix to the servier

  
$mail->Host       "smtp.gmail.com";      // sets GMAIL as the SMTP server

  
$mail->Port       465;                   // set the SMTP port for the GMAIL server

  
$mail->Username   "[email protected]";  // GMAIL username

  
$mail->Password   "*******";            // GMAIL password

 
$mail->AddAddress(strtolower($_POST['correo']),strtolower($_POST['nombre']) );

$mail->SetFrom('[email protected]''empresa');

$mail->Subject=("empresa ".strtolower($_POST['assumpto']));

$mail->MsgHTML(strtolower($_POST['mensaje']));

$mail->Send();




echo 
"<span class='correcta'><h2>Mensaje enviado correctamente</h2></span>\n";

} catch (
phpmailerException $e) {

Aquí me salia invalid adress y body si no es tan llenos los 2 campos
// echo $e->errorMessage(); //Pretty error messages from PHPMailer

} catch (Exception $e) {

 
// echo $e->getMessage(); //Boring error messages from anything else!

}

?>
</body>

</html>





tengo este fichero que se llama contactar.php es el formulario donde hago las validaciones aun me faltan validaciones en el fichero
<form action="contactar.php" method="post" name="contactar" enctype="multipart/form-data">

<p>Campos obligatoris <span class="obligatorio">*</span></p>



<div>

<label for="correo">Correo <span class="obligatorio">*</span></label>

<input type="text" name="correo" id="correo" value="<?php echo $_POST['correo'] ?>" maxlength="38" size="28" />

<?php

if($_POST['enviar'] and !$_POST['correo'] ){

echo "<span class='validacion'></br>Introduzca el correo</span>";

}

?>

</div>



<div>

<label for="assumpto">Assumpto <span class="obligatorio">*</span></label>

<input type="text" name="assumpto" id="assumpto" value="<?php echo $_POST['assumpte'] ?>" maxlength="38" size="28"/>

<?php



if($_POST['enviar'] and !$_POST['assumpto'] ){

echo "<span class='validacion'></br>Introdusca el assumpto</span>";

}

else if($_POST['enviar'] and preg_match('/[^a-zA-Z ]/' ,$_POST['assumpto'] ) ){

echo "<span class='validacion'></br>El assumpto tiene que ser alfabetico</span>";

}



else if ( $_POST['enviar'] and strlen($_POST['assumpto'])<='5' or strlen($_POST['assumpto'])>='38'){

echo "<span class='validacion'></br>
El mensaje tiene que tener entre 5 i 38 palabras</span>";

}

?>

</div>



<div>

<input type="text" name="nombre" id="nombre" value="<?php echo $_POST['nombre'] ?>" maxlength="38" size="28">

<label for="nombre">Nom i Cogs <span class="obligatorio">*</span></label>

<?php

if($_POST['enviar'] and !$_POST['nombre'] ){

echo "<span class='validacion'></br>Introduzca el nombre</span>";

}

else if($_POST['enviar'] and preg_match('/[^a-zA-Z ]/',$_POST['nombre']) ){

echo "<span class='validacion'></br>El nombre tiene que ser alfabetico</span>";

}

else if($_POST['enviar'] and str_word_count($_POST['nombre']) !=3 ){

echo "<span class='validacion'></br>Faltan los apallidos</span>";

}


else if ( $_POST['enviar'] and strlen($_POST['nombre'])<='9' or strlen($_POST['nombre'])>='38'){

echo "<span class='validacion'></br>El nombre i apellidos tiene de tener entre 9 i 38 palabras</span>";

}

?>


</div>



<div>



<textarea type="text" id="mensaje" name="mensaje" cols="32" rows="10"><?php echo $_POST['mensaje'] ?></textarea>

<label for="mensaje">Mensaje<span class="obligatorio">*</span></label>

<?php

if($_POST['enviar'] and !$_POST['mensaje'] ){

echo "<span class='validacion'>Introduzca el mensaje</span></br>";

}



else if($_POST['enviar'] and preg_match('/[^a-zA-Z0-9 ]/',$_POST['mensaje']) ){

echo "<span class='validacion'></br>
El mensaje solo puede contener valores numéricos i alfanuméricos</span>";

}



else if ( $_POST['enviar'] and strlen($_POST['mensaje'])<='15' or strlen($_POST['mensaje'])>='250'){

echo "<span class='validacion'></br>El mensaje tiene que tener entre 15 y 250 palabras</span>";

}

?>

</div>



<div>

<label for="recaptcha">recaptcha <span class="obligatorio">*</span></label>

<?php

include("correo/recaptcha.php");

?>

</div>



<div class="botones">

<input type="submit" name="enviar" value="enviar" id="enviar" />

</div>

</form>

<?php

include("correo/phpmailer.php");

?>

</div>
  #2 (permalink)  
Antiguo 13/01/2010, 23:04
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: Desactivar la validación de class.phpmailer.php y hacer la mía

en primer lugar, no necesitas desactivar ni modificar la clase de PHPMailer...

¿porque??, pues porque bien puedes hacer tus validaciones primero... y luego, una ves todo esté correcto ya utilizas la clase... así, ya tienes solucionado todo... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/01/2010, 05:54
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 9 meses
Puntos: 1
así la validación a lo mejor tendría que ir antes del try del fichero phpmailer.php

el problema que he visto de phpmailer es que solo valida correo y mensaje

pero yo también quiero que me valide nombre y apellidos y asunto que sean obligatorios

estoy intentando validar desde formulario pero phpmailer pasa de mis validaciones y si tiene correo y mensaje ya lo enviá aunque no haya rellenado nombre y apellidos y asusto

mi pregunta es possible descavtivar la validacion de correo i mensaje de phpmiler i hacer la mia

http://sourceforge.net/projects/phpm...0for%20php5_6/
http://phpmailer.worxware.com/index....=exampleagmail

Última edición por GatorV; 19/01/2010 a las 10:54
  #4 (permalink)  
Antiguo 19/01/2010, 06:14
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 9 meses
Puntos: 29
Respuesta: validacion con phpmailer

Haz tú la comprobación

Código PHP:
Ver original
  1. if($_POST['asunto'] && $_POST['nombre']) {
  2. //se completó asunto y nombre
  3. } else {
  4. //no se completaron los datos
  5. }
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #5 (permalink)  
Antiguo 19/01/2010, 07:11
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: validacion con phpmailer

he probado la sentencia que me has enviado si relleno los dos campos se cumple el if i si no me sale el error
pero el problema esta en class.phpmailer y no en el formulario mi o pero nose que tengo que desactivar
  #6 (permalink)  
Antiguo 19/01/2010, 07:22
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 9 meses
Puntos: 29
Respuesta: validacion con phpmailer

Pero si no se da la condición, no se ejecuta la clase (si lo estás haciendo bien)
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #7 (permalink)  
Antiguo 19/01/2010, 07:23
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
De acuerdo Respuesta: validacion con phpmailer

Cita:
Iniciado por albertrc Ver Mensaje
pero el problema esta en class.phpmailer y no en el formulario mi o pero nose que tengo que desactivar
amigo, porque no pruebas con un validador, para que complicarte tanto tratando de transformar lo redondo en cuadrado, cuando la funcion del php mailer es la de interpretar los codigos para que lleguen casi sin errores a tu mail, incluso datos adjuntos, y con el tipo de servidor de mail que tengas.. creo que ya hace bastante por ti!!

SI crees que es mas seguro hacer una validacion en el script que se diseño para lo que esta arriba, pues te dire que no es asi... cuando te pasaron la solucion arriba, dijiste que se valida el formulario... pues claro hombre... de donde proviene la informacion que introduce al usuario?

COn una validacion antes de salir los datos, tipo Javascript, evitas que el mensaje vaya al servidor, y el cliente solo consume sus recursos para validarlo de manera inmediata.... con una validacion PHP, el cliente debe esperar a que el mensaje vaya al server, y rebote, lo cual puede tardar algo mas... en tonces no entiendo tu punto.

Consejo, usa un Javascript, o ajax, que hay miles por la red
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #8 (permalink)  
Antiguo 19/01/2010, 07:53
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: validacion con phpmailer

Código PHP:

require_once 'PHPMailer.php'

class ValidatingWPHPMailer extends PHPMailer
{

    public function 
AddValidAddress($email ''$name '')
    {
        if ( ! empty(
$email) and ! empty($name)) {
           
$this->AddAddress($email,$name);
        } else {
             throw new 
phpmailerException('Email and FullName are required');
        }
    }

Despúes llamas

Código PHP:
$mail = new ValidatingWPHPMailer();
$mail->AddValidAddress('[email protected]','');
// Y todo lo demas como siempre 
Ojo antes revisa bien las propiedades y métodos a ver si no hay una opción para activar lo que decis.
  #9 (permalink)  
Antiguo 19/01/2010, 10:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Desactivar la validación de class.phpmailer.php y hacer la mía

Temas unidos porfavor NO dupliques temas.
  #10 (permalink)  
Antiguo 19/01/2010, 12:36
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Desactivar la validación de class.phpmailer.php y hacer la mía

Cita:
Iniciado por albertrc Ver Mensaje
así la validación a lo mejor tendría que ir antes del try del fichero phpmailer.php

el problema que he visto de phpmailer es que solo valida correo y mensaje

pero yo también quiero que me valide nombre y apellidos y asunto que sean obligatorios

estoy intentando validar desde formulario pero phpmailer pasa de mis validaciones y si tiene correo y mensaje ya lo enviá aunque no haya rellenado nombre y apellidos y asusto

mi pregunta es possible descavtivar la validacion de correo i mensaje de phpmiler i hacer la mia

[url]http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/[/url]
[url]http://phpmailer.worxware.com/index.php?pg=exampleagmail[/url]

Mi consejo es que empieces por comprar el libro ISBN 0764516507, creeme que ayuda, de todas maneras si querés hacer exactamente lo que decis, cúal fué el problema que tuviste con la respuesta que te deje?

Ya que hace lo que pedis, valida dentro de PHPMailer o en este caso ValidatingWPHPMailer que sería la nueva clase.

A todo lo que tenes hecho tenés que cambiar donde dice
Código PHP:
new PHPMailer 
por
Código PHP:
new ValidatingWPHPMailer 
,
Código PHP:
$mail->AddAddress 
por
Código PHP:
$mail->AddValidAddress 
y agregar el código que te deje, por supuesto eso solo valida email y nombre, chequea que no estén vacios simplemente, si queres validar subject, etc, es exactamente la misma lógica, chequeá esos 5 renglones de código que te sale enseguida.

Etiquetas: desactivar, validar
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:58.