Flickr
Twitter
Facebook
Del.icio.us
RSS

Archive for php

PHP: función mail() al detalle

Funcion mail al detalle

Dado que el otro día expliqué de una forma rápida cómo enviar emails a través de la función mail(), hoy voy a comentar con más detalle su uso.

La estructura general es la siguiente:

mail ($destino, $asunto, $mensaje, $cabeceras);

La dirección de destino se puede indicar de cualquiera de las siguientes formas:

mail(’nombre@empresa.com’);
mail(’nombre1@empresa.com, nombre2@empresa.com’);
mail(’Nombre <nombre@empresa.com>’);
mail(’Nombre1 <nombre1@empresa.com>, Nombre2 <nombre2@empresa.com>’);

Para indicar el asunto:

$asunto = ‘El asunto no debe exceder los 70 caracteres ni tener saltos de linea’;

Respecto al mensaje:

$mensaje = “Aqui va el contenido a enviar, para crear saltos de linea escribimos \n”;

Las cabeceras son las que más miga tienen, tenemos 4 opciones, podemos utilizar solamente una, o las 4 a la vez (separándolas con saltos de línea).

//Dirección del remitente
From: Web <nombre@empresa.com>
//Dirección a quien responder
Reply-To: Nombre <nombre@empresa.com>
//Dirección a quien enviar una copia del mensaje
BCC: Nombre <nombre@empresa.com>
//Cabecera para enviar el email cómo HTML
Content-Type: text/html; charset=iso-8859-1

Y poco más, con esto ya queda explicada con más detalle la función mail(), que la disfrutéis ;P

Php: Elegir a que email enviar el formulario.

Elegir a que dirección enviar el formulario.

Hoy voy a añadir un cachito de código más a lo dicho el otro día sobre cómo enviar un formulario por php.

Esta vez quiero crear un formulario de contacto general en el que el usuario seleccione entre varias opciones a que departamento de la empresa quiere dirigirse y según el elegido, los datos se enviarán a una dirección de email o a otra.
ejemplo del post
Ej. Información se enviará el email a info@empresa.com
     Compras se enviará el email a compras@empresa.com

Explicado esto, me pongo manos a la obra.

Recuerda: escribo el post teniendo en cuenta que ya sabes enviar un formulario de contacto con php.

Para mostrar los departamentos al usuario lo hago a través de un Grupo de opciones.
Para ello ponemos todos los input del tipo “radio” que nos hagan falta, pero teniendo en cuenta que deben llevar el mismo “name” (para así ser un grupo, y no botones de opción separados).  

    <input type=”radio” name=”Departamento” value=”informacion@empresa.com” id=”Departamento_0″  /> Informacion
    <input type=”radio” name=”Departamento” value=”compras@empresa.com” id=”Departamento_1″ /> Compras
 
Podemos agregar las opciones que queramos, teniendo en cuenta que la id debe ser correlativa.. empezando por “Departamento_0“ y continuando “Departamento_1, Departamento_2,..” (Departamento es el “name” que tiene mi grupo de opciones, tú puedes poner el que quieras). 
 
Y por último, en la propiedad “value” tenemos que escribir el email de cada opción.
 
Vale, ya tenemos el grupo de opciones con sus respectivos emails, ahora vamos a conseguir que se envie a la dirección que corresponda.
 
Antes agregábamos el email ‘a pelo‘ en la función mail() para que nos enviara nuestro formulario, pues esta vez lo vamos a poner a través de una variable. El código quedaría así:
 
$email = $_POST['Departamento'];
mail($email, $subject, $msg, “FROM: formulario@empresa.com<formulario@empresa.com>\n”);
En la variable $email recogemos la dirección de email que ha seleccionado el usuario y la pasamos cómo dirección de destino a la función mail() y.. ualá! mensaje enviado a donde queríamos!
 
Cómo extra voy a escribir una función javascript que nos validará que se haya seleccionado una opción, ya que si no tenemos ninguna seleccionada el formulario se enviaría al infinito y más allá.. xD
 
function validarDepartamento(){
var valor=0;
for(i=0; ele=document.NameDelFormulario.elements[i]; i++){
   if (ele.type==’radio’)
   if (ele.checked){valor=1;break;}
}
if (valor==1){
   document. NameDelFormulario.submit();
}else{
   alert(’Seleccione el departamento al que desea enviar el email.’);
   return;
}
}
Para validar las opciones, creamos un bucle que recorre todos los “input radio” de nuestro form (acuérdate de cambiar NameDelFormulario por el “name” real que tiene tu formulario) y cuando llegue a uno seleccionado se detiene y devuelve el envío del formulario. Si no hay ninguno seleccionado, muestra un alerta al usuario pidiendole que seleccione uno.
 
A que es sencillo? :D

PHP + CSS: Estilos dinámicos

Biblioteca de codigo

A la hora de aplicar estilos a una página nos podemos ahorrar muchos quebraderos de cabeza si utilizamos PHP junto con nuestro CSS.
A mi me encanta poner tooooodo el css en una hoja de estilos aparte, así que voy a explicar (más o menos) cómo usar php en nuestra hoja de estilo.

1º Enlazamos la hoja de estilos a nuestra cabecera.

<link rel=”stylesheet” type=”text/css” href=”estilo.php” />

Atención: tiene que tener extensión .php sino no tirará ni para atrás el php que introduzcamos.

2º Creamos la hoja de estilo. Para que los navegadores reconozcan los estilos, hay que especificar al principio del todo la cabecera del documento cómo CSS.

<?php header(”Content-type: text/css”); ?>

Acordaros que el nombre que le hemos asignado es estilo.php.
Y listo.. ya puedes meter todo el php que quieras.. :D

Para que quede un poquito más claro voy a crear un pequeño ejemplo de cómo conseguir que se cambie el color de fondo de forma aleatoria utilizando php y css por supuesto.
Mi hoja de estilo quedaría así:

<?php header(”Content-type: text/css”);

//Creo un array con varios colores
$color[0]=’#ff0000′;
$color[1]=’#00ff00′;
$color[2]=’#0000ff’;

// Elijo un color aleatorio
$i=rand(0,2);
?>

/* indico donde quiero que aparezca el color aleatorio */
body { background-color: <?=$color[$i]?>;}

Y poco más que explicar,  el archivo del ejemplo lo podéis ver aqui. Que bonito.. xD

Por cierto: Lo que he hecho con los colores, eso de elegir uno aleatorio, lo podéis hacer con una imagen, en vez de especificar el color, ponéis la ruta de la imagen. Y en lugar de añadirla a la propiedad background-color, la metéis en background-image y..
ualá! en un momento tenéis una cabecera de esas tan modernas que cambian cuando entras en la página ^^

Php: enviar formulario con mail ()

Biblioteca de codigo

Bueno, inauguro mi pequeña biblioteca de código con una función que utilizo muuuuuuuy a menudo!
Es una forma ‘fácil y  sencilla’ de enviar un formulario mediante php.. pego el código y voy explicando..

 // dentro del if tendremos que colocar el formulario, cada input debe tener su ‘name’ para poder enviar el contenido.  
// al pulsar el botón enviar la acción del formulario se hará en la misma página, sin tener que llamar a una externa    
        
        <?php if (!isset($_POST['email'])) { ?>
    
          <form action=”<?=$_SERVER['PHP_SELF']?>” method=”post”>
          <h1>Formulario de contacto</h1>
          <p>Nombre:</p>
          <p><input name=”nombre” type=”text” id=”nombre” /></p>
          <p>Teléfono:</p>
          <p><input name=”telefono” type=”text” id=”telefono” /></p>
          <p>Email:</p>
          <p><input name=”email” type=”text” id=”email” /></p>
          <p>Mensaje:</p>
          <p><textarea name=”mensaje” rows=”6″ cols=”50″ id=”mensaje”></textarea></p>
          <p><input type=”reset” value=”borrar” /> <input type=”submit” value=”enviar” /></p>
          </form>
         
        <?php }else{
 
// la variable mensaje almacena el contenido del email (los datos del formulario)
// la variable subject indica el asunto que tendrá nuestro mensaje
// y con la función mail enviamos el mensaje, los parámetros son: dirección de envio, asunto, mensaje, cabeceras (en mi caso pongo el remitente).
 
$msg= “”;
$msg= “Mensaje del formulario de contacto de nnatali.com”;
$msg.= “\nNombre: “. $_POST['nombre'];
$msg.= “\nEmail: “.$_POST['email'];
$msg.= “\nTelefono: “. $_POST['telefono'];
$msg.= “\nMensaje: \n”.$_POST['mensaje'];
$remitente = $_POST['email'];
$subject = “Mensaje enviado desde nnatali.com por: “.$_POST['nombre'];
mail(’unanatali@gmail.com’, $subject, $msg, “FROM: $remitente”);
?>
// una vez se haya enviado el email correctamente, aparecerá un texto personalizable para que el usuario sepa que ha llegado bien a su destino : )
    
     <p><strong>Mensaje enviado.</strong><br />
Su mensaje se ha enviado correctamente, gracias por ponerse en contacto con nosotros</p>
<? } ?>    
 

 

Y más o menos está explicadito.. si añades más campos al formulario acuérdate de añadirlos también en la variable $mensaje con su correspondiente ‘name’ :P
 
Para validarlo lo más fácil es:
1. Abrir el Dreamweaver.
2. Seleccionar el botón Submit.
3. Clicar en Inspector de etiquetas > Comportamientos.
(Si no lo tienes en el lateral, muestralo desde el menú Ventana > Inspector de etiquetas)
4. Seleccionar Validar formulario.

 

Y tachán! En un momentito lo tienes válidado para que no se te cuelen emails en blanco.

 

Hay formas mucho más curradas para validar y más especializadas, algún día las explicaré ^^
Este blog usa el temaQwilm!, supervisado por aNieto2k y adaptado para mi uso personal nnatali