Comunidad PHPeros
Lenguajes => PHP => Mensaje iniciado por: Zeuser 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
-
Para poner un codigo dale al Boton de PHP o al del #
-
Que dices tio? antes de postear mira lo que pregunto, ya que tu post no tiene ningun sentido.
SAlu2 :D
-
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() (http://www.php.net/empty)
<?
//Comprobamos si se ha lanzado el formulario
if ($_POST['enviar']) {
//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";
}
}
?>
-
En estos casos es cuando biene vien hacer uso del Javascript, te dare un codigo JS que me pasaron hace tiempo:
<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
<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
-
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
<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() (http://www.php.net/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";
}
-
Ya está, ya me funciona perfecto, muchas gracias ;)
-
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
-
Si se trataba de comprovar si faltaba algún campo, podías haber usado esto:
$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 ;)