Autor Tema: Envío Formulario  (Leído 2070 veces)

Desconectado Zeuser

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 1
    • Ver Perfil
Envío Formulario
« en: 18 de Octubre de 2006, 20:22:26 pm »
Buenas. Ahora estoy creando un formulario desde 0, sin coger nada de ningún lado y ir aciendo.
Esta vez no me da error de programacion ( almenos no me lo especifica en la web)

El tema es una tonteria, lo que pasa es que ami me gastaron una broma asi, y con esta excusa aprendo a crear un formulario XD



Aquí mis archivos:


amors.php

<form id="form1" name="form1" method="post" action="enviar.php">
  <label>
  <div align="center">Tu nombre:
    <input type="text" name="nom" />
    <br />
    <br />
    Tu Apellido:
  <input type="text" name="cognom" />
  <br />
  <br />
   Edad:
   <input type="text" name="edat" />
   <br />
   <br />
  Nombre de tu enamorada:
  <input type="text" name="nom2" />
  <br />
  <br />
  Su apellido:
  <input type="text" name="cognom2" />
  <br />
  <br />
  Su Edad:
  <input type="text" name="edat2" />
  <br />
  <br />
  <br />
  <input type="submit" name="enviar" value="Enviar" />
  <br />
  <br />
  <br />
  <br />
</div>
  </label>
</form>

enviar.php


<?
if($_POST["nom"] && $_POST["cognom"] && $_POST["edat"] && $_POST["nom2"] && $_POST["cognom2"] && $_POST["edat2"] && $_POST["enviar"]){

$nom $_REQUEST["nom"];
$cognom $_REQUEST["cognom"];
$edat $_REQUEST["edat"];
$nom2 $_REQUEST["nom2"];
$cognom2 $_REQUEST["cognom2"];
$edat2 $_REQUEST["edat2"];

mail("nolodigoporsiacaso@hotmail.com""Amors"$nom$cognom$edat$nom2$cognom2$edat2);

echo 
"<p>Tus amores han sido enviados a [b]<<email ocultado>>[/b] Gracias por tu información cariño ;)<p>";
}

else{
echo 
"Deves rellenar todos los datos para saber tu resultado";
}


?>


Sino pongo ningun dato: me sale bien: deves rellenar todos los datos para saber tu resultado.

El problema es que si los relleno todos, igualmente tambien me sale lo mismo.

En que fallo? Si es en toda la estructura, es decir que no tiene sentido alguno decidmelo, ya que no he seguido ninguna pauta y loe echo con mis conocimientos y ir relacionando, osea ke...

Salu2:D
« Última modificación: 19 de Octubre de 2006, 15:41:09 pm por Raken »

Comunidad PHPeros

Envío Formulario
« en: 18 de Octubre de 2006, 20:22:26 pm »

Desconectado Antonio285

  • PHPer@ Fijo
  • ***
  • Mensajes: 194
  • Karma: 0
  • Sexo: Masculino
  • No hay mal que por bien no venga..
    • Ver Perfil
Re: Envío Formulario
« Respuesta #1 en: 18 de Octubre de 2006, 20:35:23 pm »
Para poner un codigo dale al Boton de PHP o al del #

Desconectado Zeuser

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 1
    • Ver Perfil
Re: Envío Formulario
« Respuesta #2 en: 18 de Octubre de 2006, 21:33:09 pm »
Que dices tio? antes de postear mira lo que pregunto, ya que tu post no tiene ningun sentido.

SAlu2 :D

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Envío Formulario
« Respuesta #3 en: 19 de Octubre de 2006, 15:39:18 pm »
Citar
mail("nolodigoporsiacaso@hotmail.com", "Amors", $nom, $cognom, $edat, $nom2, $cognom2, $edat2);

echo "<p>Tus amores han sido enviados a Aqui has puesto tu email xDGracias por tu información cariño ;)<p>";
}
;D ;D ;D Mejor te lo escondo.


Respecto al código... Ese IF no tiene demasiado sentido. Quieres comprobar si los datos han sido rellenados, sin embargo haciendo if($_POST["variable"]) sólo estás verificando si la variable ha sido creada, y esas variables sí se crean, aunque estén vacías.

Para verificar si un campo está vacío puedes usar la función empty()


<?
//Comprobamos si se ha lanzado el formulario
if ($_POST[&#39;enviar&#39;]) {

//Recogemos los datos para hacerlo un poco más ameno
$nom $_POST["nom"];
$cognom $_POST["cognom"];
$edat $_POST["edat"];
$nom2 $_POST["nom2"];
$cognom2 $_POST["cognom2"];
$edat2 $_POST["edat2"];

//Comprobamos que los campos NO estén vacíos
if (!empty($nom) && !empty($cognom) && !empty($edat) && !empty($cognom2) && !empty($edat2)) {


mail("nolodigoporsiacaso@hotmail.com""Amors"$nom$cognom$edat$nom2$cognom2$edat2);

echo 
"<p>Tus amores han sido enviados a *** Gracias por tu información cariño ;)<p>";
}

else{
echo 
"Deves rellenar todos los datos para saber tu resultado";
}

}
?>
« Última modificación: 19 de Octubre de 2006, 15:42:28 pm por Raken »
Raken - Moderador para PHP y HTML

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: Envío Formulario
« Respuesta #4 en: 19 de Octubre de 2006, 15:51:27 pm »
En estos casos es cuando biene vien hacer uso del Javascript, te dare un codigo JS que me pasaron hace tiempo:
Código: [Seleccionar]
<script language="javascript" type="text/javascript">
function vacio(q) {
        for ( i = 0; i < q.length; i++ ) {
                if ( q.charAt(i) != " " ) {
                        return true
                }
        }
        return false
}
function validar(F) {
       
        if( vacio(F.titulo.value) == false ) {
                alert("Rellene todos los datos porfavor.")
                return false
                } else {
    return true
                }

}
</script>

Ese es el codigo javascript, lo que hace es mirar si un area esta escrita y si lo está envia el formulario, sin embargo si no estan rellenados te envia un mensaje de error y no envia el formulario
para ello deves agregar en la etiqueta <FORM> esto: OnSubmit="return validar(this);"

Voy a ajustarte los codigos para que funcione:

AMORS.PHP
Código: [Seleccionar]
<script language="javascript" type="text/javascript">
function vacio(q) {
        for ( i = 0; i < q.length; i++ ) {
                if ( q.charAt(i) != " " ) {
                        return true
                }
        }
        return false
}
function validar(F) {
       
        if( vacio(F.nom.value) == false && vacio(F.cognom.value) == false && vacio(F.edat.value) == false && vacio(F.nom2.value) == false && vacio(F.cognom2.value) == false && vacio(F.edat2.value) == false) {
                alert("Rellene todos los datos porfavor.")
                return false
                } else {
    return true
                }

}
</script>
<form id="form1" name="form1" method="post" action="enviar.php" OnSubmit="return validar(this);">
  <label>
  <div align="center">Tu nombre:
    <input type="text" name="nom" />
    <br />
    <br />
    Tu Apellido:
  <input type="text" name="cognom" />
  <br />
  <br />
   Edad:
   <input type="text" name="edat" />
   <br />
   <br />
  Nombre de tu enamorada:
  <input type="text" name="nom2" />
  <br />
  <br />
  Su apellido:
  <input type="text" name="cognom2" />
  <br />
  <br />
  Su Edad:
  <input type="text" name="edat2" />
  <br />
  <br />
  <br />
  <input type="submit" name="enviar" value="Enviar" />
  <br />
  <br />
  <br />
  <br />
</div>
  </label>
</form>

ENVIAR.PHP

<?php

$nom 
$_REQUEST["nom"];
$cognom $_REQUEST["cognom"];
$edat $_REQUEST["edat"];
$nom2 $_REQUEST["nom2"];
$cognom2 $_REQUEST["cognom2"];
$edat2 $_REQUEST["edat2"];

$mensaje $nom."<BR>".$cognom."<BR>".$edat."<BR>".$nom2."<BR>".$cognom2."<BR>".$edat2;
mail("nolodigoporsiacaso@hotmail.com""Amors"$mensaje);
// NO SE SI LO SABRAS, PERO EN MAIL EL PRIMER HUECO = EMAIL, 2º = ASUNTO, 3º = MENSAJE, 4º = HEADERS
// Con tantas variables separadas por comas haces confundir bastante a la funcion
echo "<p>Tus amores han sido enviados a <<email ocultado>> Gracias por tu información cariño ;)<p>";

?>


Un saludo,
Si no entiendes algo comunicamelo y te lo explico, pero es bastante sencillo xD
TLX
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Envío Formulario
« Respuesta #5 en: 19 de Octubre de 2006, 16:14:52 pm »
No te negaré, TLX, que JavaScript es una buena alternativa pero hay que decir que todo código que ofreces visible y manipulable por el cliente, no es nada seguro.

Por ejemplo este código podría ser omitido si crease una página HTML en mi ordenador con un
Código: [Seleccionar]
<form action="www.webdezeuser.com/enviar.php">
Los datos serían enviados, y no habría código que impidiese que estén vacíos.


Por cierto, Zeuser, mírate también la función trim(), que funciona para eliminar los espacios de delante y detrás del string, es decir, que si pones solo un espacio en el formulario lo suprime y acompañado de la función empty() lo detectas como una variable vacía.  ;)




########## EJEMPLO 1 ###########

//Variable con un espacio delante
echo $variable;

//Quitamos el espacio en blanco a la variable
$variable trim($variable);

//Variable SIN ESPACIO delante. Si la variable entera era un espacio, ya no tiene nada.
echo $variable;






######### EJEMPLO 2 ############


//Ahora combinando con EMPTY

//Variable con un espacio delante.
echo $variable;

//Quitamos el espacio en blanco a la variable
$variable_limpia trim($variable);

//Variable SIN ESPACIO DELANTE
echo $variable_limpia;

if (empty(
$variable)) {
  echo 
"Está limpia";

} else {

 echo 
"No está vacía";  //Devolverá que no está vacía porque tiene un ESPACIO como contenido.
}


if (empty(
$variable_limpia)) {
  echo 
"Está limpia";  //Devolverá que está limpia, es decir, vacía. Porque antes tenía un espacio blanco del formulario pero lo hemos suprimido.

} else {

 echo 
"No está vacía";  
}

« Última modificación: 19 de Octubre de 2006, 16:24:44 pm por Raken »
Raken - Moderador para PHP y HTML

Desconectado Zeuser

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 1
    • Ver Perfil
Re: Envío Formulario
« Respuesta #6 en: 19 de Octubre de 2006, 16:24:58 pm »
Ya está, ya me funciona perfecto, muchas gracias ;)

« Última modificación: 19 de Octubre de 2006, 16:26:41 pm por Zeuser »

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: Envío Formulario
« Respuesta #7 en: 19 de Octubre de 2006, 16:54:12 pm »
Es cierto lo que dices Raken, pero tambien es posible hacer que ese codigo no pueda accederse desde fuera
Solo cambiandole el name al boton de enviar
Ponle por ejemplo de name "Asdiahgasf"
Y pones un if($_POST[Asdiahgasf]) {
/* CODIGO */
} else {
echo "No intentes acceder a este sitio sin pasar por el formulario";
}

Y otra solucion a eso seria hacer en el mismo archivo el formulario y el script de enviar

Un saludo!!
TLX
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Ishamato

  • PHPero Avanzado
  • ****
  • Mensajes: 346
  • Karma: 3
  • Sexo: Masculino
  • PHPero adicto
    • Ver Perfil
Re: Envío Formulario
« Respuesta #8 en: 19 de Octubre de 2006, 18:50:21 pm »
Si se trataba de comprovar si faltaba algún campo, podías haber usado esto:
Citar
$error 0;
foreach (
$_POST as $valor) {
     if ($valor == "") { 
          $error 1
     }
}
if (
$error == 0) {
//TODOS LOS CAMPOS ESTAN COMPLETOS
} else {
//FALTA ALGUNO DE COMPLETAR
}

Ante todo, quiero decir que este código está creado por NaVeDa y que yo os lo muestro como ayuda, pero en ningún momento promociono que sea mio o algo parecido ;)

<? echo "Aprendiendo y descubriendo poco a poco"; ?>