Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: mastertianmat3 en 31 Agosto 2006, 19:26 pm



Título: ayuda para un formulario de contacto
Publicado por: mastertianmat3 en 31 Agosto 2006, 19:26 pm
hola, tengo una duda acerca de esto:
tengo estos dos archivos de formulario de contacto en php, funcionan correctamente, y son faciles de modificar.
el unico problema es que asi el usuario no escriba nada en el formulario, este se envia y generea un correo bacio en mi buzon. ¿como puedo complementar este codigo para que no se envie si no tiene los campos llenos?

contact.php---------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulario de contacto</title>
</head>
<body bgcolor="e9e9e9">

<form method="post" action="enviar.php">
  <p>
  <?php
$ipi = getenv("REMOTE_ADDR");
$httprefi = getenv ("HTTP_REFERER");
$httpagenti = getenv ("HTTP_USER_AGENT");
?>
   
  <input type="hidden" name="ip" value="<?php echo $ipi ?>" />
  <input type="hidden" name="httpref" value="<?php echo $httprefi ?>" />
  <input type="hidden" name="httpagent" value="<?php echo $httpagenti ?>" />
  </p>
  <p><font face="arial" size="-1"><strong>Nombre:</strong></font> <br />
    <input type="text" name="visitor" size="35" />
    <br />
    <font face="arial" size="-1"><strong>Email:</strong></font><br />
    <input type="text" name="visitormail" size="35" />
    <br />
    <font face="arial" size="-1"><strong>Ciudad:</strong></font><br />
    <input type="text" name="visitorcity" size="35" />
    <br /> 
 
     <font face="arial" size="-1"><strong>Area a a contactar:</strong></font><br />
     <select name="attn" size="1">
       <option value=" Gerencia">Gerencia </option>
       <option value=" Ventas">Ventas</option>
       <option value=" Soporte tecnico">Soporte Tecnico</option>
     </select>
    <br/>

     <font face="arial" size="-1"><strong>Mensaje:</strong></font>
    <br/>
     <textarea name="notes" rows="4" cols="30"></textarea>
    <br/>
    <br/>
    <font  face="arial" size="-1">Verifique la informacion ingresada y pulse el boton enviar</font><br/>
    <br/>
    <input type="submit" value="Enviar" />
    <br/>
  </p>
</form>

</body>
</html>



enviar.php------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Confirmacion</title>
<style type="text/css">
<!--
input {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: x-small;
color: #FFFFFF;

border: 1px solid #48546F;

}
-->
<!--
A:link {COLOR: #6C6C6C; TEXT-DECORATION: none}
  A:visited {COLOR: #6C6C6C; TEXT-DECORATION: none}
  A:active {TEXT-DECORATION: none}
  A:hover {
   COLOR: black;
   TEXT-DECORATION: underline;
   
   
} -->

-->
</style>
</head>
<body bgcolor="e9e9e9">
<?php
if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,".")))
{
echo "<h2>Has ingresado un mail incorrecto, intantalo de nuevo</h2>\n";
$badinput = "<h2>El mensaje no ha sido enviado</h2>\n";
}
if(empty($visitor) || empty($visitormail) || empty($notes ) || empty($visitorcity)) {
echo "<h2>No has llenado todos los campos, el email no ha sido enviado con exito</h2>\n";
}
echo $badinput;

$fecha = date("j / n / Y") ;


$attn = $attn ;
$subject = $attn;

$notes = stripcslashes($notes);

$message = "Area a contactar: $attn \n
De: $visitor\n
Email:($visitormail)\n
Ciudad: $visitorcity \n
Mensaje enviado: $notes \n
El mensaje fue enviado el $fecha\n

Informacion adicional:
IP = $ip \n
";

$from = "From: $visitormail\r\n";


mail("rrcreativos1@uniweb.net.co", $subject, $message, $from);

?>

<p align="left">
<font face="arial" size="-1">Muchas gracias por ponerte en contacto </font><?php echo $visitor ?> ( <?php echo $visitormail ?> )
<br />

<font face="arial" size="-1">El mensaje fue dirigido a:</font> <?php echo $attn ?>
<br />
<font face="arial" size="-1">Mensaje enviado:</font><br />
<?php $notesout = str_replace("\r", "<br/>", $notes);
echo $notesout; ?>
<br />
<font face="arial" size="-1">El mensaje fue enviado el: </font><?php echo $fecha ?>


<br />
<br />
<a href="contact.php">volver</a>
</p>

</body>
</html>


gracias de antemano por la ayuda que me presten


Título: Re: ayuda para un formulario de contacto
Publicado por: mastertianmat3 en 31 Agosto 2006, 19:28 pm
otra duda, en el contact.php hay una casilla de seleccion donde dice a donde quiere dirigir su email. hay alguna forma de independizar un mail para cada opcion?


Título: Re: ayuda para un formulario de contacto
Publicado por: Belem en 1 Septiembre 2006, 03:31 am
Código:
f(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,".")))
{
echo "<h2>Has ingresado un mail incorrecto, intantalo de nuevo</h2>\n";
$badinput = "<h2>El mensaje no ha sido enviado</h2>\n";
}
if(empty($visitor) || empty($visitormail) || empty($notes ) || empty($visitorcity)) {
echo "<h2>No has llenado todos los campos, el email no ha sido enviado con exito</h2>\n";
}
echo $badinput;


Creo que con eso trtatas de leer los datos que envia el formulario, pero te falta hacer la requisision de los mismos, por ejemplo si tengo la pagina enviar.htm con el siguiente code:
Código:
<form name="miFrm" action="form.php" method="post">
input type="text" name="nombre">
<input type="submit">
</form>
A la hora de enviar el formulario debe de haber otra page (PHP o ASP) que reciba los datos y trabaje ia con ellos, por ejemplo:
Código:
 <?php
/* form.php */
$nombre=$_POST['nombre'];
if($nombre=== "") {
   // bla bla bla
}
else {
// bla bla bla
}
?>
La otra es que veo que haces:
Código:
if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,".")))
{
echo "<h2>Has ingresado un mail incorrecto, intantalo de nuevo</h2>\n";
el signo de exclamacion significa "No" por lo tanto es como si pusieras (if not $visitormail), es decir "si no esta vacio envias el mensaje.."
Creo que deberia de ser algo como "si esta vacio"
Espero haberme explicado saludos..