Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Duda de funcion

Estas en el tema de Duda de funcion en el foro de PHP en Foros del Web. Hola tengo que implementar un captcha pero tengo una duda en esta funcion. Código PHP: <?php // The form processor PHP code function  process_si_contact_form () {      $userName  = @ $_POS ...
  #1 (permalink)  
Antiguo 05/04/2017, 11:50
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 15 años, 4 meses
Puntos: 0
Duda de funcion

Hola tengo que implementar un captcha pero tengo una duda en esta funcion.

Código PHP:
<?php

// The form processor PHP code
function process_si_contact_form()
{

    
$userName = @$_POS['userName'];
    
$password =  @$_POS['password'];

    if (
$_SERVER['REQUEST_METHOD'] == 'POST' && @$_POST['do'] == 'contact') {
        
// if the form has been submitted

        
foreach($_POST as $key => $value) {
            if (!
is_array($key)) {
                
// sanitize the input data
                
if ($key != 'ct_message'$value strip_tags($value);
                
$_POST[$key] = htmlspecialchars(stripslashes(trim($value)));
            }
        }

        
$captcha = @$_POST['ct_captcha']; // the user's entry for the captcha code

        
$errors = array();  // initialize empty error array

        // Only try to validate the captcha if the form has no errors
        // This is especially important for ajax calls
        
if (sizeof($errors) == 0) {
            require_once 
dirname(__FILE__) . '/securimage.php';
            
$securimage = new Securimage();

            if (
$securimage->check($captcha) == false) {
                
$errors['captcha_error'] = 'Verifica el resultado del captcha.';

//echo '<script language="javascript">alert("Verifica el resultado del captcha.");</script>';

            
}
        }

        if (
sizeof($errors) == 0) {
            
// no errors, send the form
            
$return = array('error' => 0'message' => $userName);
            die(
json_encode($return));
        } else {
            
$errmsg 'mensaje ok?';
            foreach(
$errors as $key => $error) {
                
// set up error messages to display with each field
                
$errmsg .= " - {$error}\n";
            }
            
$return = array('error' => 1'message' => $errmsg);
            die(
json_encode($return));
        }
    } 
// POST
// function process_si_contact_form()

?>
Veo que se realiza 2 veces la misma condición
Código PHP:
if (sizeof($errors) == 0
y que lanza varios mensajes de error (innecesarios a mi punto de vista)
Código PHP:
$errmsg 'mensaje ok?';
            foreach(
$errors as $key => $error) {
                
// set up error messages to display with each field
                
$errmsg .= " - {$error}\n"
me gustaria simplificarlo pero al meterle mano se me desconfigura todo, quiero que cuando sea error solo mande un alert con un mensaje de error y cuando la condición se cumpla que envié unas mediante post las variables $userName y $password.. ¿alguna ayuda? Gracias!
  #2 (permalink)  
Antiguo 05/04/2017, 13:43
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 10 años, 4 meses
Puntos: 30
Respuesta: Duda de funcion

Bueno, no tiene mucha complicacion, solo ha que seguir el orden y la estructura.

Código PHP:
Ver original
  1. <?php
  2. // The form processor PHP code
  3. function process_si_contact_form()
  4. {
  5.     $userName = @$_POST['userName'];
  6.     $password =  @$_POST['password'];
  7.  
  8.     if ($_SERVER['REQUEST_METHOD'] == 'POST' && @$_POST['do'] == 'contact') {
  9.         // if the form has been submitted
  10.  
  11.         foreach($_POST as $key => $value) {
  12.             if (!is_array($key)) {
  13.                 // sanitize the input data
  14.                 if ($key != 'ct_message') $value = strip_tags($value);
  15.                 $_POST[$key] = htmlspecialchars(stripslashes(trim($value)));
  16.             }
  17.         }
  18.  
  19.         $captcha = @$_POST['ct_captcha']; // the user's entry for the captcha code
  20.  
  21.         $errors = array();  // initialize empty error array
  22.  
  23.         // Only try to validate the captcha if the form has no errors
  24.         // This is especially important for ajax calls
  25.         if (sizeof($errors) == 0) {
  26.             require_once dirname(__FILE__) . '/securimage.php';
  27.             $securimage = new Securimage();
  28.  
  29.             if ($securimage->check($captcha) == false) {
  30.                 $errors['captcha_error'] = 'Verifica el resultado del captcha.';
  31.                 //echo '<script language="javascript">alert("Verifica el resultado del captcha.");</script>';
  32.             }
  33.  
  34.             // no errors, send the form
  35.             $return = array('error' => 0, 'message' => $userName);  
  36.         } else {
  37.             $errmsg = 'mensaje ok?';
  38.             foreach($errors as $key => $error) {
  39.                 // set up error messages to display with each field
  40.                 $errmsg .= " - {$error}\n";
  41.             }
  42.             $return = array('error' => 1, 'message' => $errmsg);  
  43.         }
  44.         die(json_encode($return));
  45.     } // POST
  46. } // function process_si_contact_form()
  47.  
  48. ?>

Pero el código que tu compartiste tiene el $_POST de las variables userName y password mal escrito, le falta una "T"
  #3 (permalink)  
Antiguo 05/04/2017, 14:15
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Duda de funcion

Hola Triby2 ! Gracias por responder.
Creo que ahora fallo, toma el resultado incorrecto como correcto, pero sigo buscando una solución.
Dentro del código intento declarar una acción javascript como variable de php ¿eso se puedo?
Saludos.
  #4 (permalink)  
Antiguo 05/04/2017, 15:02
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Duda de funcion

La función regresa un json como error así que solo tienes que usar el json desde javascript, no requieres alterar la función.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 05/04/2017, 19:03
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda de funcion

No entiendo lo que quieres hacer con esa función pero lo del captcha es facil

Asignas un valor aleatorio alfanumerico a una variable, haces la rutina de imagen de la variable, luego encriptas la variable y la asignas a una variable sesion...

Todo eso entorno al formulario ...
  #6 (permalink)  
Antiguo 06/04/2017, 07:29
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Duda de funcion

Lose, estoy teniendo problemas solo con ie11, todos los demas navegadores no tienen ningun problema

Etiquetas: funcion, html, variable
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 12:18.