Foros del Web » Programando para Internet » PHP »

!Aqui teneis la version 2.0 de mi formulario de contacto! pero con error :( ayuda

Estas en el tema de !Aqui teneis la version 2.0 de mi formulario de contacto! pero con error :( ayuda en el foro de PHP en Foros del Web. jo... con lo ilusionado que estaba, mi mejor codigo si señor muy bueno... de esos codigos de los que te dan error y no lo ...
  #1 (permalink)  
Antiguo 02/10/2005, 08:28
 
Fecha de Ingreso: septiembre-2005
Mensajes: 101
Antigüedad: 12 años, 2 meses
Puntos: 0
Sonrisa !Aqui teneis la version 2.0 de mi formulario de contacto! pero con error :( ayuda

jo... con lo ilusionado que estaba, mi mejor codigo si señor muy bueno...

de esos codigos de los que te dan error y no lo ves.

bueno aunque soy novatillo jeje...

ahi va el codigo y por si alguien lo quiere usar es licencia GPL

me da parse error en la linea 33 jur...

de paso lo revisais un poquito por si tiene otro fallo para evitar tener que estar abriendo mas hilos

Código PHP:
<?php
//////////////////////////////////////////////////
/*       Formulario de contácto Versión 2.0     */
/*          Por Alexis Carrasco Muñoz           */
/* Este archivo debera ser incluido en la página*/
/*              Bajo licencia GPL               */
/*        Prohibido el ánimo de lucro           */
//////////////////////////////////////////////////

/*Indica la dirección del destinatario*/
$email "email del destinatario"
?>
<form action='contacto.php' method=post>
  <div align='center'>
  <table width='400' border="0">
      <tr>
        <td width='85'>Su Nombre: </td>
        <td width='305'><input type=text name='nombre' size=16></td>
      </tr>
      <tr>
        <td>Su E-mail: </td>
        <td><input type=text name=email size=16></td>
      </tr>
      <tr>
        <td>Su Mensaje: </td>
        <td><textarea name=coment cols=32 rows=6></textarea></td>
      </tr>
  </table>
  <p>
    <input type=submit value='Enviar'>
  </p>
  </div>
</form>
<?php
}else{
    
/*Cuerpo del formulario*/
    
$cuerpo "E-mail enviado\n";
    
$cuerpo .= "Nombre: " $HTTP_POST_VARS["nombre"] . "\n";
    
$cuerpo .= "E-mail: " $HTTP_POST_VARS["email"] . "\n";
    
$cuerpo .= "Mensaje: " $HTTP_POST_VARS["coment"] . "\n";

    
/*Envio del mail*/
    
mail("$email","E-mail via web",$cuerpo);
    
    
/*Comprobación*/
    
if (mail("$email","Formulario recibido",$cuerpo))
      echo 
"El envio ha sido correcto, gracias por contáctar con nosotros, Le responderemos lo más rápido posible.";
    else
      echo 
"El envio ha sido incorrecto, puede contactar con nosotros a traves de <a href='mailto:$email'>$email</a>";
}
?>
gracias de antemano, salu2


EDITO: En esta linea
Código:
<form action='contacto.php' method=post>
como puedo hcaer para que action lo ponga como el archivo actual?

pq si alguien que no sabe de php lo usa y cambia el nombre de la pagina se va a liar muuucho

venga otra vez salu2

Última edición por papixulooo; 03/10/2005 a las 12:53
  #2 (permalink)  
Antiguo 02/10/2005, 08:32
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Donde está el if() veo que pones un else{} pero no veo el if() ni la condicion (que supongo que será para mostrar el formulario o enviar el email...)

Saludos,
__________________
sergiold
  #3 (permalink)  
Antiguo 02/10/2005, 08:41
 
Fecha de Ingreso: junio-2005
Mensajes: 6
Antigüedad: 12 años, 5 meses
Puntos: 0
Creo que el problema que comentas se soluciona con esto:

<form action='<?php echo $PHP_SELF;?>' method=post>

Lo que hace la variable $PHP_SELF es devolverte el nombre del archivo que estas ejecutando en este momento.

Un saludo
  #4 (permalink)  
Antiguo 02/10/2005, 09:12
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por swell
Creo que el problema que comentas se soluciona con esto:

<form action='<?php echo $PHP_SELF;?>' method=post>

Lo que hace la variable $PHP_SELF es devolverte el nombre del archivo que estas ejecutando en este momento.

Un saludo
$PHP_SELF es obsoleto, lo correcto es usar $_SERVER['PHP_SELF'], osease, variables superglobales: www.php.net/reserved.variables

Lo que dice sergiold es muuuuy cierto! ¿dónde quedó el if()??. Además de eso, se te agradecería facilitaras a hubicar la línea del error (comentala), preferentemente usar las etiquetas de código PHP (facilitan mucho la lectura) y que colocaras el error exácto que te arroja; todo para poder ayudarte mejor.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 02/10/2005, 10:53
Avatar de Master Solution  
Fecha de Ingreso: octubre-2005
Mensajes: 51
Antigüedad: 12 años, 2 meses
Puntos: 1
Ademas de que no se encuentra el if, hay una sentencia que no tiene punto y coma (;) al final de la misma.

Deberia quedar asi:

Código:
$email = "email del destinatario";
Y otra cosa que queria comentarles, yo para los formularios, nunca le pongo el action a donde debe ir apuntando (siempre que este sea el mismo archivo que se esta viendo), o sea al no ponerlo, el navegador lo envia a la misma pagina, o sea, hace lo mismo que si hubiese puesto:

Código:
<form action="<?=$_SERVER['PHP_SELF']?>">
En cambio yo lo dejo asi:

Código:
<form>
Queria saber que inconvenientes encuentran con usarlo de esta manera, y porque (no) hacerlo de esta o la otra.
__________________
-=[ 3KLabs ]=-
-=[ Diseño - Programación - Desarrollo ]=-
-=[ Posicionamiento en Buscadores ]=-
-=[ Hosting de Calidad ]=-
  #6 (permalink)  
Antiguo 02/10/2005, 20:14
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por Master Solution
yo para los formularios, nunca le pongo el action a donde debe ir apuntando (siempre que este sea el mismo archivo que se esta viendo), o sea al no ponerlo, el navegador lo envia a la misma pagina
El tema en sì es HTML, no PHP (solo la aclaración) y es un error no colocarlo ¿por qué?; no es stándar, sometelo a un verificador de HTML y te dará error... simple y sencillamente a el ser un formulario debes indicarle hacia dónde han de ir los datos. Cierto, quizá con algún navegador (IE, para qué nos hacemos) no haya problemas pero: ¿estás seguro todos los navegadores se comportarán asì??...

Tengase en cuenta que HTML es mucho antes de PHP . Un saludo!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 03/10/2005, 07:28
 
Fecha de Ingreso: septiembre-2005
Mensajes: 101
Antigüedad: 12 años, 2 meses
Puntos: 0
vaya veo que ha dado de que hablar e cambiado las etiquetas code por php lo siento me despiste

gracias por la aclaracion de el destino del formulario ;)

la condicional esa no se que hara ahi xD yo no la puse jaja da igual no molesta ya lo quitare ciao gracias

en cuanto a la variable $email no hace falta poner ; puesto que cuando pongo ?> deberia cerrar la linea automaticamente no? lo lei en la guia oficial php
  #8 (permalink)  
Antiguo 03/10/2005, 18:36
Avatar de Master Solution  
Fecha de Ingreso: octubre-2005
Mensajes: 51
Antigüedad: 12 años, 2 meses
Puntos: 1
Cita:
Iniciado por jam1138
El tema en sì es HTML, no PHP (solo la aclaración) y es un error no colocarlo ¿por qué?; no es stándar, sometelo a un verificador de HTML y te dará error... simple y sencillamente a el ser un formulario debes indicarle hacia dónde han de ir los datos. Cierto, quizá con algún navegador (IE, para qué nos hacemos) no haya problemas pero: ¿estás seguro todos los navegadores se comportarán asì??...

Tengase en cuenta que HTML es mucho antes de PHP . Un saludo!
Cierto, pequeño detalle, entiendo perfectamente la diferencia entre HTML y PHP, pero esta bien, igual, me aclaraste la duda.

Pero muchas veces se tienen URLs que pueden ser variables (en el sentido de que cambian), o que para poder acceder de vuelta a la misma seccion del archivo, se tiene que tener tambien las variables pasadas a traves de la URL. Por eso creo que es mas conveniente usar $_SERVER['REQUEST_URI'] ya que este entregara la URL completa, en cambio $_SERVER['PHP_SELF'] solo el nombre del archivo.

Tengo varios sitios en los que en ninguno especifico el action de los formularios, y se que es compatible con Firefox, IE, Opera, Netscape, y varios mas ya que nunca tuve problemas con eso.

Pero igual gracias por sacarme la duda, ya los pondre.

Perdon por desviar un poco el post, volviendo al tema, corregiste los errores que te dijeron??, en ese caso nose cual es el problema que tenes ahora, especifica por favor.
__________________
-=[ 3KLabs ]=-
-=[ Diseño - Programación - Desarrollo ]=-
-=[ Posicionamiento en Buscadores ]=-
-=[ Hosting de Calidad ]=-
  #9 (permalink)  
Antiguo 04/10/2005, 00:44
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por Master Solution
creo que es mas conveniente usar $_SERVER['REQUEST_URI'] ya que este entregara la URL completa, en cambio $_SERVER['PHP_SELF'] solo el nombre del archivo.
Ya lo dijó un gran personaje: "Todo es relativo. Nada es absoluto". No siempre es bueno recibir toda la URI; quizá te pueda estorbar los valores pasados a travéz de ella, quizá puedan representar un problema de seguridad...

Para este caso... se trata de un formulario que usa method POST y cuyos datos son enviados a el mismo archivo y que solo se limita a recibir dichos datos. No veo problema con rescatar toda la URI pero tampoco le veo caso; solo intereza el nombre del archivo. Además (al margen del tema), por seguridad, considero mejor limitarse a manejar un solo metodo de recibir datos.... pero solo es mi opinión .

papixulooo:
Es buena pregunta: ¿qué pasa en nuestra comunidad?*... gente posteando solo para subir temas sin aportar nada nuevo, como exigiendo resuelvan su problema lo más rápido posible, ni siquiera dejan pasar un tiempo considerable y, peor aún, ni siquiera son capaces de explicar qué es lo que quieren!!!!. De muy mal gusto ¿no?. La impresión que dejan es de una falta de respeto para quienes, con las mejores intenciones, ofrecen su ayuda en la medida de lo posible. Personalmente me cansan temas así que al finalizar de leer ya ni pensar claramente puedo, termino por pasarlos de largo.

... pero bueno, volviendo a tu caso, hiciste los cambios (que bien)... ... ¿y?.

Un saludo!
*El usuario entenderá...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 04/10/2005 a las 06:26
  #10 (permalink)  
Antiguo 04/10/2005, 05:38
 
Fecha de Ingreso: septiembre-2005
Mensajes: 101
Antigüedad: 12 años, 2 meses
Puntos: 0
jeje....:$ lo siento...

ya se de donde salia esa condicional!!!
era una funcion que comprobaba si el formulario estaba vacio, osea si al ejecutar la pagina habia informacion para enviar, y si no pues salia el formulario, en caso de que hubiera algo ejecutaba ya la funcion mail()
este es el estado actual.

en cuanto al tema del destino del formulario personalmente prefiero $_SERVER['REQUEST_URI] puesto que tengo muchos problemas con scripts de internet que se redirigen a... por ejemplo www.dominio.com/script.php?script=script

cuando lo estoy incluyendo en otra página pero bueno.. eso a eleccion

este es el codigo actual...

Código PHP:
<?php
//////////////////////////////////////////////////
/*       Formulario de contácto Versión 2.3     */
/*          Por Alexis Carrasco Muñoz           */
/* Este archivo debera ser incluido en la página*/
/*              Bajo licencia GPL               */
/*        Prohibido el ánimo de lucro           */
//////////////////////////////////////////////////

/*Indica la dirección del destinatario*/
$email "email del destinatario";
if (!
$HTTP_POST_VARS){;
?>
<form action='<?php $_SERVER['REQUEST_URI'?>' method=post>
  <div align='center'>
  <table width='400' border="0">
      <tr>
        <td width='85'>Su Nombre: </td>
        <td width='305'><input type=text name='nombre' size=16></td>
      </tr>
      <tr>
        <td>Su E-mail: </td>
        <td><input type=text name=email size=16></td>
      </tr>
      <tr>
        <td>Su Mensaje: </td>
        <td><textarea name=coment cols=32 rows=6></textarea></td>
      </tr>
  </table>
  <p>
    <input type=submit value='Enviar'>
  </p>
  </div>
</form>
<?php
}else{
    
/*Cuerpo del formulario*/
    
$cuerpo "E-mail enviado\n";
    
$cuerpo .= "Nombre: " $HTTP_POST_VARS["nombre"] . "\n";
    
$cuerpo .= "E-mail: " $HTTP_POST_VARS["email"] . "\n";
    
$cuerpo .= "Mensaje: " $HTTP_POST_VARS["coment"] . "\n";

    
/*Envio del mail*/
    
mail("$email","E-mail via web",$cuerpo);
    
    
/*Comprobación*/
    
if (mail("$email","Formulario recibido",$cuerpo))
      echo 
"El envio ha sido correcto, gracias por contáctar con nosotros, Le responderemos lo más rápido posible.";
    else
      echo 
"El envio ha sido <strong>incorrecto</strong>, puede contactar con nosotros a traves de <a href='mailto:$email'>$email</a>";
}
?>
y me da fallo de conexion en la linea 44 y la linea 47...

que son justo donde esta la funcion mail()

la primera para enviar la segunda para comprobar...

eso ya es problema del server no?

PD: ejecuto el codigo en maquina local

salu2
  #11 (permalink)  
Antiguo 04/10/2005, 06:24
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cuando ocupas la función mail() estás enviando (...intentando enviar) un correo. El ocuparla 2 veces es un error, estarías mandando 2 correos (a menos que lo quieras así).

Para comprobar el envio ha sido existoso puedes hacerlo directamente en el if():
Código PHP:
if(mail("...")) echo "OK";
else echo 
"nones"
Cita:
eso ya es problema del server no?
Es muy probable (por lo común), más no se podría asegurar a el 100% (no más del 90% )... no indicas cuál es "el fallo". Lee las recomendaciones de mi firma...

En las FAQ encontrarás temas sobre cómo ocupar dicha función en local. Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 04/10/2005 a las 06:29
  #12 (permalink)  
Antiguo 04/10/2005, 09:59
 
Fecha de Ingreso: septiembre-2005
Mensajes: 101
Antigüedad: 12 años, 2 meses
Puntos: 0
Si voy a quitar el simple y dejo solo la comprobación el error que me da es error de conexión no me especifica nada mas.

este es el estado actual del codigo...

Código PHP:
<?php
//////////////////////////////////////////////////
/*       Formulario de contácto Versión 2.3     */
/*          Por Alexis Carrasco Muñoz           */
/* Este archivo debera ser incluido en la página*/
/*              Bajo licencia GPL               */
/*        Prohibido el ánimo de lucro           */
//////////////////////////////////////////////////

/*Indica la dirección del destinatario*/
$email "email del destinatario";

/*Se comprueba si hay datos en el formulario*/
if (!$HTTP_POST_VARS){;
?>
<form action='<?php $_SERVER['REQUEST_URI'?>' method=post>
  <div align='center'>
  <table width='400' border="0">
      <tr>
        <td width='85'>Su Nombre: </td>
        <td width='305'><input type=text name='nombre' size=16></td>
      </tr>
      <tr>
        <td>Su E-mail: </td>
        <td><input type=text name=email size=16></td>
      </tr>
      <tr>
        <td>Su Mensaje: </td>
        <td><textarea name=coment cols=32 rows=6></textarea></td>
      </tr>
  </table>
  <p>
    <input type=submit value='Enviar'>
  </p>
  </div>
</form>
<?php
}else{
    
/*Cuerpo del formulario*/
    
$cuerpo "E-mail enviado\n";
    
$cuerpo .= "Nombre: " $HTTP_POST_VARS["nombre"] . "\n";
    
$cuerpo .= "E-mail: " $HTTP_POST_VARS["email"] . "\n";
    
$cuerpo .= "Mensaje: " $HTTP_POST_VARS["coment"] . "\n";
    
    
/*Se comprueba y envía en E-mail*/
    
if (mail("$email","E-mail via Web",$cuerpo))
      echo 
"El envio ha sido correcto, gracias por contáctar con nosotros, Le responderemos lo más rápido posible.";
    else
      echo 
"El envio ha sido <strong>incorrecto</strong>, puede contactar con nosotros a traves de <a href='mailto:$email'>$email</a>";
}
?>
  #13 (permalink)  
Antiguo 07/10/2005, 23:09
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
Cita:
el error que me da es error de conexión
Que tipo de error?? Pon el error tal y como te aparece.
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #14 (permalink)  
Antiguo 08/10/2005, 00:06
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 12 años, 8 meses
Puntos: 1
Haciendo un parentesis, quiero ocupar este espacio para realizar una consulta relacionada con el tema.

si se tiene 3 archivos (de todas maneras un metodo muy carretero)
1. formulario.htm
2. procesar_formulario.php
3. envio_realizado.htm

cuando se confirma el envio del correo a través del if, en el caso de que es exitoso
¿cómo se puede hacer para redireccionar hacia la página "envio_realizado.htm", simplemente header("location: pagina.htm")? ya que lo he estado intentando pero llego a un error

Warning: Cannot modify header information

gracias por el espacio.
Oscar

Última edición por under_ground; 08/10/2005 a las 00:15
  #15 (permalink)  
Antiguo 08/10/2005, 00:38
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
http://www.forosdelweb.com/f18/problema-con-header-339347/
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
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 10:10.