entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Unexpected token < al enviar formulario

Al enviar los datos del formulario a un php me sale este mensaje : > Unexpected token < en mi web
http://www.andamiosystems.com/contacto.html

El formulario es muy simple

<form action="formu.php" method="post">

<p>Nombre(requerido)<br />
    <span><input type="text" name="nombre" value="" size="40" aria-required="true" aria-invalid="false" /></span> </p>
<p>E-mail (requerido)<br />
    <span><input type="email" name="your-email" value="" size="40" aria-required="true" aria-invalid="false" /></span> </p>
<p>Teléfono<br />
   <span><input type="tel" name="telefono" value="" size="40"  aria-invalid="false" /></span></p>

<p>Mensaje<br />
    <span><textarea name="eltexto" cols="40" rows="10"  aria-invalid="false"></textarea></span> </p>

<p>
<input type="submit" value="Enviar" />
</form>

Llama un php llamado formu.php que tambien es muy simple

<?php

         $cabecera ="From: andamioSystems\r\n"; 
         $sendTo = "[email protected]"; 
         $subject = "formulario"; 
         $nombre = $_POST["nombre"]; 
         $telefono = $_POST["telefono"]; 
         $email = $_POST["email"]; 
         $eltexto = $_POST["eltexto"]; 
        // $headers .= ""; 
         $message = "\nNombre: " . $nombre . "\ntelefono: " . $telefono . "\nemail: " . $email . "\nArea Texto: " . $eltexto; 

        mail($sendTo, $subject, $message, $cabecera);

        header ("Location: contacto.html");  

?>

Muchas gracias chicos

3 Respuestas

3votos

cobasESP Puntos19650

No encuentro el motivo de tu error, se que es porque envias un "<" por algun input, prueba lo siguiente:

-En tu formu.php, quita el header(location:) para que no redirija, el error esta en el php ya que en la página, si el script estuviese mal, no se ejecutaría nada, ya que javascript es un bloque, o todo o nada, y me he dado cuenta que ajax envía y recibe datos, el problema esta en el php.

-Quitando la redirección, al darle al botón te saldrá la página en blanco con algún error y la linea donde ocurre, intenta hacer esto y nos comentas a ver si vamos dando con ello.

suerte!

3votos

Leonardo-Tadei Puntos227320

Hola @gonzalss,

si no veo mal, el error está en que el formualrio se está enviando por AJAX, pero en vez de esperar la respuesta de formu.php para procesarla con JavaScript, hacés que redireccione a la misma página.

Sacar el header ("Location: contacto.html"); de formu.php hará que funcione, pero si tu página está esperando una respuesta JSON, deberías al final poner al menos un JSON válido vacío.

La otra solución es que el formulario se envía como los de toda la vida, en vez de enviar los datos usando AJAX... en este caso sí tiene sentido el header() para volver a la página de envío.

Saludos!

0voto

gonzalss comentado

El formulario llega a su destino, pero :
1- Al darle enviar me sale este mensaje Unexpected token <
2- No se redirige la la página de contacto

2votos

Leonardo-Tadei comentado

No sé qué es que un formualrio llegue a destino... supongo que te referís a que el mail sí se envía.

1- al enviar a mi me sale "JSON.parse: unexpected character at line 2 column 1 of the JSON data". Supongo que por el navegador distinto el mensaje varía un poco.

2- sí se redirige a contacto y ese es el error... como et digo, el formulario no hace un SUBMIT normal sino que se envía por AJAX desde JQuery; luego, el código JS se queda esperando la respuesta en formato JSON, pero lo que recibe es el código HTML de la página contacto.html, porque sí funciona la redirección... y el código HTML no es JSON válido.

2 soluciones posibles:
a) No envíes el formulario por AJAX y se te solucionará el problema.
b) No termines formu.php con una redirección, sino hacé que devuelva JSON válido.

Ambas soluciones son excluyentes!

Saludos

0voto

gonzalss Puntos3720

He puesto este nuevo formulario

<form action="formu.php" method="post">
                    <p>
                        <label for="name">Nombre</label>
                        <input name="nombre" type="text" value="">
                    </p>
                    <p> 
                        <label for="email">Email</label> 
                        <input id="email" name="email" type="text" value="">
                    </p>
                    <p> 
                        <label for="telefono">Teléfono</label> 
                        <input id="telefono" name="telefono" type="text" value="">
                    </p>

                    <p>     
                        <label for="motivo">Comentario<span class="required">*</span></label>
                        <textarea id="eltexto" rows="8" class="aqua_input" name="eltexto"></textarea>
                    </p>
                    <p>
                         <img src="captcha.php" /><br/>
                          <input id="captcha" name="captcha" type="text" >
                    </p>
                    <p class="form-submit">
                        <input name="submit" type="submit" id="submit" value="Enviar" >
                    </p>                        
                </form> 

Y este es el código del php 

<?php

      session_start();
  if(strtoupper($_REQUEST["captcha"]) == strtoupper($_SESSION["captcha"])){
     // REMPLAZO EL CAPTCHA USADO POR UN TEXTO LARGO PARA EVITAR QUE SE VUELVA A INTENTAR
     $_SESSION["captcha"] = md5(rand()*time());

     // INSERTA EL CÓDIGO EXITOSO AQUI
     // var_dump($_POST);

     $cabecera ="From: andamiosystems\r\n"; 
     $sendTo = "[email protected]"; 
     $subject = "formulario"; 
     $nombre = $_POST["nombre"]; 
     $telefono = $_POST["telefono"]; 
     $email = $_POST["email"]; 
     $eltexto = $_POST["eltexto"]; 
    // $headers .= ""; 
     $message = "\nNombre: " . $nombre . "\ntelefono: " . $telefono .  "\nemail: " . $email . "\nArea Texto: " . $eltexto; 

    mail($sendTo, $subject, $message, $cabecera);

    header ("Location: contacto.html");  

    // print($message);

   }else{
     // REMPLAZO EL CAPTCHA USADO POR UN TEXTO LARGO PARA EVITAR QUE SE VUELVA A INTENTAR
     $_SESSION["captcha"] = md5(rand()*time());
     // INSERTA EL CÓDIGO DE ERROR AQUÍ

     header ("Location: index.html.html");

  } 

?>

1voto

Leonardo-Tadei comentado

Y ahora te funciona?

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta