Foros del Web » Programando para Internet » PHP »

error formulario php

Estas en el tema de error formulario php en el foro de PHP en Foros del Web. Hola Tengo un formulario en php y me da el siguiente error al procesarlo. Agradecería cualquier ayuda no acabo de encontrar el fallo. Este el ...
  #1 (permalink)  
Antiguo 18/09/2005, 03:59
 
Fecha de Ingreso: enero-2004
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
error formulario php

Hola

Tengo un formulario en php y me da el siguiente error al procesarlo. Agradecería cualquier ayuda no acabo de encontrar el fallo.

Este el texto que aparece, podéis testarlo en la siguiente página http://www.rapidpaper.com/contacto.htm

Content-Type: text/plain; name="solicitar_server.php"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="solicitar_server.php"
Warning: main(formulario_errorhtm): failed to open stream: No such file or directory in /home/rapidpap/public_html/solicitar_server.php on line 40

Warning: main(): Failed opening 'formulario_errorhtm' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/rapidpap/public_html/solicitar_server.php on line 40


Y estas son las líneas del archivo php que dan error

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

if (empty($empresa) || empty($nombre) || empty($telefono) || empty($email)){

include(formulario_error.htm);
echo "<title>Por favor compruebe que todos los datos requeridos están
cumplimentados</title>"
."<style>"
."mail {font-family: Verdana; font-size: 8pt}"
."</style>"
."<div class=\"mail\">*Por favor compruebe que todos los datos requeridos
están cumplimentados</div>";
  #2 (permalink)  
Antiguo 18/09/2005, 04:17
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
¿las lineas del codigo las copiaste directamente del Script o las trascribiste?, lo digo por que en las lineas dices formulario_error.htm en el include, y el error lo que te dicees que no existe el fichero formulario_errorhtm, fijate que falta el punto, revisa el codigo de solicitar_server.php que tienes en el server, creo que el error esta ahi.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #3 (permalink)  
Antiguo 18/09/2005, 05:19
 
Fecha de Ingreso: enero-2004
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
Este es el código del archivo "solicitar_server.php" que procesa el formulario el include está bien puesto por eso estoy desesperada y no encuentro el error.

include(formulario_error.htm);
echo "<title>Por favor compruebe que todos los datos requeridos están
cumplimentados</title>"
."<style>"
."mail {font-family: Verdana; font-size: 8pt}"
."</style>"
."<div class=\"mail\">*Por favor compruebe que todos los datos requeridos
están cumplimentados</div>";
  #4 (permalink)  
Antiguo 18/09/2005, 06:59
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
si es que soy idiota, el error esta totalmente a la vista, veamos tu tienes
Código PHP:
include(formulario_error.htm); 
y eso esta mal, lo correcto seria
Código PHP:
include('formulario_error.htm'); 

Siento no haberlo visto antes.

P.D.:Perdona si por un casual te llegan 2 mensajes al correo sin sentido, solo con letras sueltas, es que comprobe por 2 veces la pagina para ver el error in situ.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #5 (permalink)  
Antiguo 18/09/2005, 08:37
Usuario baneado!
 
Fecha de Ingreso: agosto-2005
Ubicación: España
Mensajes: 142
Antigüedad: 12 años, 3 meses
Puntos: 0
Yo heobservado dos cosas , la primera veo que uno de los mensajes de error dice formulario_errorhtm , el archivo deberia de ser ,......formulario_error.htm , con el punto , digo yo por otro lado , está claro que el fallo es de ubicación

es decir no se encuentra el archivo de respuesta a la ejección por tanto da el error , puesto que no encuentra el archivo , saludos , WebMasterFrank
  #6 (permalink)  
Antiguo 18/09/2005, 09:20
 
Fecha de Ingreso: enero-2004
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
Agradezco mucho vuestra ayuda. Si lo probáis en estos momentos funciona, es decir procesa los datos correctamente, pero aparecen un código en la parte superior de la página que responde al envío (ya sea correcto o falten datos).

El código es el siguiente

Content-Type: text/plain; name="solicitar_server.php"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="solicitar_server.php"

¿Sabéis a que se puede deber?


Si quisiera que la ventana formulario_error.htm tuviese un tamaño determinado
(por ejemplo 300x300) cómo podría hacerlo.

Un saludo y muchas gracias.
  #7 (permalink)  
Antiguo 19/09/2005, 06:29
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
Parece cosa de un echo o prinf, ¿podrias poner el codigo?(obviamente ocultando todo aeullo que pueda suponer violacion de seguridad)
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #8 (permalink)  
Antiguo 19/09/2005, 07:53
 
Fecha de Ingreso: enero-2004
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
Agradezco enormemente las molestias Bytevamp.
Me gustaría eliminar el texto que aparece según si los campos han sido rellenados correctamente o no (echo "<title>Su petición ha sido enviada correctamente.</title>"
) ¿Cómo puedo hacerlo?

Y una cuestión más, podría hacer que si el formulario se ha enviado correctamente se cargase en la misma página y no se abriese otra.

Un saludo y nuevamente gracias.

Adjunto el código del archivo “solicitar_server.php”

Content-Type: text/plain; name="solicitar_server.php"; format=flowed
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="solicitar_server.php"

<?php
$eleccion=$_POST['eleccion'];
$empresa=$_POST['empresa'];
$nombre=$_POST['nombre'];
$localidad=$_POST['localidad'];
$telefono=$_POST['telefono'];
$email=$_POST['email'];
$tipounidad=$_POST['tipounidad'];
$cantidad=$_POST['cantidad'];
$formato=$_POST['formato'];
$zona=$_POST['zona'];
$frecuencia=$_POST['frecuencia'];
$texto=$_POST['texto'];

/* recipiente */
$to = "[email protected]";

/* Titulo */
$subject = "Formulario";

/* mensaje */
$message = "<html><head><title>Formulario</title></head><body>Eleccion:
<b>".$eleccion." </b><br>Empresa: <b>".$empresa." </b><br>Nombre:
<b>".$nombre." </b><br>Localidad: <b>".$localidad." </b><br>Telefono:
<b>".$telefono." </b><br>Email: <b>".$email." </b><br>TipoUnidad:
<b>".$tipounidad." </b><br>Cantidad: <b>".$cantidad." </b><br>Formato:
<b>".$formato." </b><br>Zona: <b>".$zona." </b><br>Frecuencia:
<b>".$frecuencia." </b><br>Texto: <b>".$texto." </b><br></body></html>";

/* Para ke se envie en modo HTML */
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

if (empty($empresa) || empty($nombre) || empty($telefono) || empty($email)){

include('formulario_error.htm');
echo "<title>Por favor compruebe que todos los datos requeridos están
cumplimentados</title>"
."<style>"
."mail {font-family: Verdana; font-size: 8pt}"
."</style>"
."<div class=\"mail\">*Por favor compruebe que todos los datos requeridos
están cumplimentados</div>";

}
else {
mail($to, $subject, $message, $headers);

include('formulario.htm');
echo "<title>Su petición ha sido enviada correctamente.</title>"
."<meta http-equiv=\"Content-Type\" content=\"text/html;
charset=iso-8859-1\">"
."<link href=\"/styles.css\" rel=\"stylesheet\" type=\"text/css\">"
."<p><strong>Su petición ha sido enviada correctamente."
."En la mayor brevedad posible nos pondremos en contacto con
usted.</strong></p>";
}

?>
  #9 (permalink)  
Antiguo 19/09/2005, 10:22
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
A ver, en primer lugar para eliminar el texto que te aparece
Código:
Content-Type: text/plain; name="solicitar_server.php"; format=flowed Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="solicitar_server.php"
tan solo elimina las tres primeras lineas de tu codigo
Código PHP:
Content-Typetext/plainname="solicitar_server.php"format=flowed
Content
-Transfer-Encoding8bit
Content
-Dispositionattachmentfilename="solicitar_server.php" 
con eso ya no te aparecera.
Con respecto a la otra cuestion ¿a que te refieres?,a lo mejor es que estoy un poco espeso y no lo pillo, pr otro lado una cosa mas, modifica el else por el siguiente:
Código PHP:
else {
mail($to$subject$message$headers);

include(
'formulario.htm');
}; 
Para evitar que se muestre dos veces el mismo texto(si no lo entiendes ahora entra en la pagina haz el envio y mira el resultado) .
Respecto a lo del tamaño de la ventana de error, en principio eso seria con JavaScript(te ayudaria pero en eso soy totalmente novato ).
Bueno cualquier otra duda aqui estoy.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #10 (permalink)  
Antiguo 19/09/2005, 12:37
 
Fecha de Ingreso: enero-2004
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
Hola Bytevamp

Muchas gracias ¡eres un maquinón!.

Respecto a la cuestión anterior me habré explicado mal, la verdad es que a veces cuesta hacerse entender de forma escrita.

Cuando el formulario se procesa de forma correcta (los campos están bien cumplimentados) se abre la ventana a parte que corresponde al fichero “formulario.htm”

else {
mail($to, $subject, $message, $headers);

include('formulario.htm');
};

Pero lo que yo desearía es que esta página se cargase sobre la que se ha rellenado el formulario. Es decir que no saltase ninguna ventana. Espero que me hayas comprendido.


Conseguí quitar el texto que no quería que apareciese del else tal y como me dijiste pero
¿Cómo debería hacerlo del include? *Por favor compruebe que todos los datos requeridos están cumplimentados

include('formulario_error.htm');
echo "<title>Por favor compruebe que todos los datos requeridos están
cumplimentados</title>"
."<style>"
."mail {font-family: Verdana; font-size: 8pt}"
."</style>"
."<div class=\"mail\">*Por favor compruebe que todos los datos requeridos
están cumplimentados</div>";



Cuando se realiza el envío del formulario, el email que me llega aparece con el remitente nobody, se podría conseguir que llegase con el remitente que incluya en el campo email.

Un saludo y muchas gracias.
  #11 (permalink)  
Antiguo 19/09/2005, 14:06
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
Vamos alla, para que los campos marcados con * sean realmente obligatorios pones este codigo antes del </HEAD>
Código HTML:
<script language="JavaScript">

        function Enviar()
        {
            // validación E-Mail
            if (document.form1.email.value.length==0){
               alert("Tiene que escribir su E-Mail")
               document.form1.nombre.focus()
               return ;
            }

	    form1.action = "solicitar_server.php";
    	    form1.submit();
            
        }
    </script> 
Cita:
Nota: el bloque if(){...} lo repites para cada uno de los campos cambiando el mensaje y donde pone email por el nombre del campo de texto.
Asi mismo cambias el codigo de
Código HTML:
<form  method="post" target="mail" name="form1"> 
por
Código PHP:
<form name="form1" method="POST" enctype="text/plain"
y por ultimo el codigo del boton de enviar lo cambias a
Código HTML:
<input name="imageField" type="image" src="boton_enviar.gif"  onClick="javascript:Enviar();" width="86" height="24" border="0"> 
y con esto y un bizcocho, hasta mañana a las 8 , oye que no que esto es broma, respecto a lo de que se abra en la misma ventana(perdon otra vez por 2 correos sin sentido, es que volvi a hacer pruebas)prueba a sustituir
Código PHP:
include('formulario.htm'); 
por
Código PHP:
header ("Location: formulario.php"); 
con esto deberia funcionar y abrirte la pagina en la misma ventana.

Saludos.

P.D.: casi me olvido, al incluir la rutina javascript puedes eliminar to do el codigo siguiente
Código PHP:
if (empty($empresa) || empty($nombre) || empty($telefono) || empty($email)){

include(
'formulario_error.htm');
echo 
"<title>Por favor compruebe que todos los datos requeridos están
cumplimentados</title>"
."<style>"
."mail {font-family: Verdana; font-size: 8pt}"
."</style>"
."<div class=\"mail\">*Por favor compruebe que todos los datos requeridos
están cumplimentados</div>"
;

}
else { 
(no te olvides de la llave del final };), ademas puedes eliminar el archivo formulario_error.htm, ya que con este metodo no te permite enviar el mail hasta que esten puestos los datos obligatorios.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches

Última edición por Bytevamp; 19/09/2005 a las 14:15
  #12 (permalink)  
Antiguo 19/09/2005, 15:52
 
Fecha de Ingreso: enero-2004
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
Muchas gracias por todo.

Cuando cambio tal y como me dijiste para que la página formulario aparezca en la misma, en lugar de abrirse una nueva me aparece el siguiente mensaje

Warning: Cannot modify header information - headers already sent by (output started at /home/rapidpap/public_html/solicitar_server.php:3) in /home/rapidpap/public_html/solicitar_server.php on line 50


Este es el código modificado

}
else {
mail($to, $subject, $message, $headers);
header ("Location: formulario.php");
};


Un saludo.
  #13 (permalink)  
Antiguo 19/09/2005, 16:55
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
¿podrias poner las lineas 1 a 5 de solicitar_server.php?, deben enviar algun contenido al navegador, por eso te da el error.Si me las enseñas puedo localizar el error(creo).
De todos modos,recapitulemos:
contacto.htm:
El codigo quqe tenias inicialmente, mas
Código HTML:
<script language="JavaScript">  
function Enviar() { 
// validación E-Mail 
if (document.form1.email.value.length==0){ 
alert("Tiene que escribir su E-Mail") 
document.form1.nombre.focus() 
return ; 
} 
form1.action = "solicitar_server.php"; 
form1.submit(); 
} </script> 
Cambiando el boton por
Código HTML:
<input name="imageField" type="image" src="boton_enviar.gif"  onClick="javascript:Enviar();" width="86" height="24" border="0"> 
y la etiqueta del form por:
Código HTML:
<form name="form1" method="POST" enctype="text/plain"> 
Y por su parte el archivo solicitar_server.phptiene unicamente este codigo:
Código PHP:
<?php
$eleccion
=$_POST['eleccion'];
$empresa=$_POST['empresa'];
$nombre=$_POST['nombre'];
$localidad=$_POST['localidad'];
$telefono=$_POST['telefono'];
$email=$_POST['email'];
$tipounidad=$_POST['tipounidad'];
$cantidad=$_POST['cantidad'];
$formato=$_POST['formato'];
$zona=$_POST['zona'];
$frecuencia=$_POST['frecuencia'];
$texto=$_POST['texto'];

/* recipiente */
$to "[email protected]";

/* Titulo */
$subject "Formulario";

/* mensaje */
$message "<html><head><title>Formulario</title></head><body>Eleccion:
<b>"
.$eleccion." </b><br>Empresa: <b>".$empresa." </b><br>Nombre:
<b>"
.$nombre." </b><br>Localidad: <b>".$localidad." </b><br>Telefono:
<b>"
.$telefono." </b><br>Email: <b>".$email." </b><br>TipoUnidad:
<b>"
.$tipounidad." </b><br>Cantidad: <b>".$cantidad." </b><br>Formato:
<b>"
.$formato." </b><br>Zona: <b>".$zona." </b><br>Frecuencia:
<b>"
.$frecuencia." </b><br>Texto: <b>".$texto." </b><br></body></html>";

/* Para ke se envie en modo HTML */
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

mail($to$subject$message$headers);
header ("Location: formulario.php");
?>
pues si es asi no deberia saltar ese problema.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches

Última edición por Bytevamp; 19/09/2005 a las 18:08
  #14 (permalink)  
Antiguo 22/09/2005, 10:25
 
Fecha de Ingreso: enero-2004
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
Muchas gracias por todo.

El incluido todo lo que me has dicho pero me da el siguiente error

Method Not Allowed
The requested method POST is not allowed for the URL /contacto.htm.


Una pregunta cuando pongo esto en (document.form1.nombre.focus... En nombre debo poner el nombre dle campo, es decir email, empresa etc.


// validación E-Mail
if (document.form1.email.value.length==0){
alert("Tiene que escribir su E-Mail")
document.form1.nombre.focus()



Un saludo y gracias
  #15 (permalink)  
Antiguo 22/09/2005, 10:49
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
Cita:
Iniciado por Judibari
Muchas gracias por todo.

El incluido todo lo que me has dicho pero me da el siguiente error

Method Not Allowed
The requested method POST is not allowed for the URL /contacto.htm.


Una pregunta cuando pongo esto en (document.form1.nombre.focus... En nombre debo poner el nombre dle campo, es decir email, empresa etc.


// validación E-Mail
if (document.form1.email.value.length==0){
alert("Tiene que escribir su E-Mail")
document.form1.nombre.focus()



Un saludo y gracias

Pues la verdad es que ahora si me pillas(por el error), de todos modos revisa el codigo en Javascript, y ponlo de la siguiemnte forma, a ver si asi
Código HTML:
if (document.form1.email.value.length==0){ 
alert("Tiene que escribir su E-Mail");
document.form1.email.focus();
return;
}
if (document.form1.empresa.value.length==0){ 
alert("Tiene que escribir su E-Mail");
document.form1.empresa.focus();
return;
}
if (document.form1.nombre.value.length==0){ 
alert("Tiene que escribir su E-Mail"); 
document.form1.nombre.focus();
return;
}
if (document.form1.telefono.value.length==0){ 
alert("Tiene que escribir su E-Mail");
document.form1.telefono.focus();
return;
}
form1.action="solicitar_server.php"
form1.submit();
creo que con esto se podra solucionar.
Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #16 (permalink)  
Antiguo 22/09/2005, 12:18
 
Fecha de Ingreso: enero-2004
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
Según el explorer el error está en la línea 21 y se debe a que la función return está fuera de una función.

Eso es lo que pone incluyendo el nuevo código que me enviaste.

Gracias.
  #17 (permalink)  
Antiguo 22/09/2005, 12:37
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
A ver ¿colocaste en contacto.htm el codigo javascript bien?
Código HTML:
<script language="JavaScript"> 
function Enviar() { 
if (document.form1.email.value.length==0){ 
alert("Tiene que escribir su E-Mail");
document.form1.email.focus();
return;
}
if (document.form1.empresa.value.length==0){ 
alert("Tiene que escribir su E-Mail");
document.form1.empresa.focus();
return;
}
if (document.form1.nombre.value.length==0){ 
alert("Tiene que escribir su E-Mail"); 
document.form1.nombre.focus();
return;
}
if (document.form1.telefono.value.length==0){ 
alert("Tiene que escribir su E-Mail");
document.form1.telefono.focus();
return;
}
form1.action = "solicitar_server.php"; 
form1.submit(); 
}
 </script> 
antes del </head> ademas con el codigo para el boton :
Código HTML:
<input name="imageField" type="image" src="boton_enviar.gif"  onClick="javascript:Enviar();" width="86" height="24" border="0"> 
y para el Form:
Código HTML:
<form name="form1" method="POST" enctype="text/plain"> 
si todo esto es correcto, entonces si que no se , yo es como lo tengo en varias paginas y me funciona a la perfeccion. Comprueba asi por si acaso y me cuentas.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
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:29.