Foros del Web » Programando para Internet » PHP »

Problema de validación de form de email

Estas en el tema de Problema de validación de form de email en el foro de PHP en Foros del Web. Hola gente cómo están? Me pidieron solucionar un error con un formulario de envío de emails con PHP en una web y no consigo corregirlo. ...
  #1 (permalink)  
Antiguo 16/03/2018, 20:41
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Problema de validación de form de email

Hola gente cómo están?

Me pidieron solucionar un error con un formulario de envío de emails con PHP en una web y no consigo corregirlo.

Cuando se envía el mensaje aparece una página con la siguiente leyenda:

Strict Standards: Non-static method PhpCaptcha::Validate() should not be called statically in /www/dominiodeprueba.com/htdocs/prueba/formulario/sendmail.php on line 11

El código del formulario sendmail.php es el siguiente:
(la línea 11 que genera el error es el IF)

Código:
<?php
//cambiar el contenido entre comillas por la direcci n de su dominio -A- la cual se desea enviar el mail

//$correo="[email protected]";
$correo="[email protected]";

//se incluye la clase php-captcha
require_once('php-captcha.inc.php');

//Si no han pasado alguna variable por POST o no valida el captcha -> error
if ((count($_POST)<=0) || (!PhpCaptcha::Validate($_POST['captcha']))) header("Location: ".$_POST['errorOcurred']);
else {
    $body="";

    //estos campos no se envian al cuerpo del mensaje
    $hide = array("successfully", "errorOcurred", "subject", "captcha", "submit"); 

    //para cada campo enviado del formulario - si no son especiales se agregan al cuerpo
    foreach ($_POST as $key => $value) if (!in_array($key, $hide)) $body .= $key . ": " . $value. "\n";

    //se envia el mail
    mail($correo, $_POST['subject'], $body);

    //se direcciona a la pagina de agradecimiento
    header("Location: ".$_POST['successfully']);
}
?>
Si alguien puede darme una mano estaré muy agradecido!!!
Gracias!!!!!
Saludos!
  #2 (permalink)  
Antiguo 16/03/2018, 20:55
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema de validación de form de email

Saludo

Pues el error indica que el método no debe ser llamado estáticamente,
así que eso es lo que se debe cambiar, pero si antes funcionaba,
entonces tal vez la librería (php-captcha.inc.php
) tal vez sufrió
algún cambio, así que primero a revisar como esta definida esta,
y a partir de ahí, hacer el cambio en el llamado.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 16/03/2018, 21:02
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema de validación de form de email

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo

Pues el error indica que el método no debe ser llamado estáticamente,
así que eso es lo que se debe cambiar, pero si antes funcionaba,
entonces tal vez la librería (php-captcha.inc.php
) tal vez sufrió
algún cambio, así que primero a revisar como esta definida esta,
y a partir de ahí, hacer el cambio en el llamado.
Gracias por tu respuesta pero no soy especialista ne PHP y sólo conozco algunas cosas, realmente no se como solucionar esto.

No se si ayuda pero ese archivo "php-captcha-inc" tiene el siguiente código en la función Validate.
Quizá ayude a alguno de ustedes a decirme cómo corregirlo

Código:
      // call this method statically
      function Validate($sUserCode, $bCaseInsensitive = true) {
         if ($bCaseInsensitive) {
            $sUserCode = strtoupper($sUserCode);
         }
         
         if (!empty($_SESSION[CAPTCHA_SESSION_ID]) && $sUserCode == $_SESSION[CAPTCHA_SESSION_ID]) {
            // clear to prevent re-use
            unset($_SESSION[CAPTCHA_SESSION_ID]);
            
            return true;
         }
         
         return false;
      }

Muchas gracias!
  #4 (permalink)  
Antiguo 16/03/2018, 21:52
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Problema de validación de form de email

No se si mi compañero @mortiprogramador te quiera dar la respuesta, pero al ver el codigo que expones y tu comentario
Cita:
no soy especialista ne PHP y sólo conozco algunas cosas,
Yo en lugar de darte la respuesta te invito a que aprendas, los conceptos de accesibilidad de una función esta en lo mas básico que puedes encontrar, busca cualquier tutorial de PHP POO y estudialo, de las primeras cosas que te mencionara sera esto.

Por otro lado si no tienes tiempo de aprender te recomiendo contratar a alguien que si sepa y te ayude con el problema.
  #5 (permalink)  
Antiguo 17/03/2018, 22:39
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Problema de validación de form de email

Cita:
Strict Standards: Non-static method PhpCaptcha::Validate() should not be called statically in /www/dominiodeprueba.com/htdocs/prueba/formulario/sendmail.php on line 11
Este error es debido a que cambio la versión de php a la 7 o superior, y se debe a que esas intentando llamar a un método de una clase como si fuera estático cuando no lo es, esto era valido en versiones anteriores a la 7.

Código PHP:
Ver original
  1. class foo {
  2.     function bar() {
  3.         echo 'I am not static!';
  4.     }
  5. }
  6.  
  7. foo::bar();
Si tu ejecutas este ejemplo debes de obtener el error que expones al principio de este hilo.
Para solucionarlo solo tienes que declarar tu método como estático como se muestra en el ejemplo.
Código PHP:
Ver original
  1. class foo {
  2.     static function bar() {
  3.         echo 'I am not static!';
  4.     }
  5. }
  6.  
  7. foo::bar();
Con esta explicación puedes resolver tu problema.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Última edición por Triby; 23/03/2018 a las 17:21 Razón: Remover cita a mensaje inapropiado

Etiquetas: email, form
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 21:41.