Hola amigos,
Resulta que tengo el siguiente formulario:
Código:
<?
if (!$HTTP_POST_VARS){
?>
contenido html
<form id="order" class="order-form" action="orderS.php" method="post">
...
<input id="boton" type="submit" name="enviar" value="Enviar"/>
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$fecha=date("d-m-Y");
$hora=date("H:i:s");
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["name"] . "\n";
$cuerpo .= "Dirección: " . $HTTP_POST_VARS["direccion"] . "\n";
$cuerpo .= "Telefono: " . $HTTP_POST_VARS["phone"] . "\n";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["comments"] . "\n";
$cuerpo .= "URL:: " . $HTTP_POST_VARS["link"] . "\n";
$cuerpo .= "Páginas: " . $HTTP_POST_VARS["pages"] . "\n";
$cuerpo .= "Días: " . $HTTP_POST_VARS["days"] . "\n";
$cuerpo .= "Entregar como: " . $HTTP_POST_VARS["template_type"] . "\n";
$cuerpo .= "comentarios: " . $HTTP_POST_VARS["cd_commented"] . "\n";
$cuerpo .= "Libreria preferida: " . $HTTP_POST_VARS["cd_javascript_framework"] . "\n";
$cuerpo .= "scripts del lado del servidor: " . $HTTP_POST_VARS["cd_ssi"] . "\n";
//mando el correo...
mail("[email protected]","Formulario recibido",$cuerpo);
//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
echo '<META HTTP-EQUIV="Refresh" CONTENT="3"; URL="http://www.estudiojamba.com.ar/MARKUP/orderS.php">';
}
?>
e intento integrar un envio de multiples archivos adjuntos al estilo de gmail, que tome de
este sitio y cuyo código php es:
Código:
<?php
/*
* Permite enviar y/o subir múltiples archivos, usando PHP, javascript y PHP Mailer para el envío de mails
* Autor: Alexander Concha Abarca <alex[@]buayacorp.com>
* http://www.buayacorp.com/
*
* Este script está bajo licencia de Creative Commons
* http://creativecommons.org/licenses/by/2.0/
*/
// Para el envío de mails
include_once('class.phpmailer.php');
// Indica si los datos provienen del formulario
$postback = isset($_POST['postback']) ? true : false;
if ($postback) {
extract($_POST);
$mail = new phpmailer (); # Crea una instancia
$mail -> From = $from;
$mail -> FromName = "frm"; # Puede obtenerse del formulario, por facilidad se hace de esta manera
$mail -> AddAddress ($to);
$mail -> Subject = $sbj;
$mail -> Body = $msg;
$mail -> IsHTML (true);
$archivos = '';
$msg = "Mensaje Enviado";
if (isset ($_FILES["archivos"])) { # Si es que se subió algún archivo
$msg .= "<ul>";
foreach ($_FILES["archivos"]["error"] as $key => $error) { # Iterar sobre la colección de archivos
if ($error == UPLOAD_ERR_OK) { // Si no hay error
$tmp_name = $_FILES["archivos"]["tmp_name"][$key];
$name = $_FILES["archivos"]["name"][$key];
$msg .= "<li>$name</li>";
$name = uniqid('bc') . '_' . $name; # Generar un nombre único para el archivo
$mail -> AddAttachment ($tmp_name, $name); # Añade el archivo adjunto
/*
Si se van a guardar los archivos en un directorio, deberían descomentarse
las siguientes líneas, si se van a guardar los nombres
de los archivos en una base de datos, aquí debería realizarse algo...
move_uploaded_file($tmp_name, "ruta/directorio/$name"); # Guardar el archivo en una ubicación, debe tener los permisos necesarios
*/
} #if
} # foreach
$msg .= '</ul>';
} # if
if (!$mail -> Send ()){
$msg = "No se pudo enviar el email";
}
}
?>
y cuyo codigo javascript es:
Código:
<script type="text/javascript">
var numero = 0;
// Funciones comunes
c= function (tag) { // Crea un elemento
return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
return evt.srcElement ? evt.srcElement : evt.target;
}
addField = function () {
container = d('files');
span = c('SPAN');
span.className = 'file';
span.id = 'file' + (++numero);
field = c('INPUT');
field.name = 'archivos[]';
field.type = 'file';
a = c('A');
a.name = span.id;
a.href = '#';
a.onclick = removeField;
a.innerHTML = 'Quitar';
span.appendChild(field);
span.appendChild(a);
container.appendChild(span);
}
removeField = function (evt) {
lnk = f(e(evt));
span = d(lnk.name);
span.parentNode.removeChild(span);
}
</script>
y cuyo html es:
Código:
<?php if (isset($msg)) echo $msg;?>
<form name="frm" id="frm" action="uploader.php" method="post" enctype="multipart/form-data">
<dl>
<dt><label for="to" accesskey="1">Para</label></dt>
<dd><input type="text" name="to" id="to" size="60" /></dd>
<dt><label for="from" accesskey="2">De</label></dt>
<dd><input type="text" name="from" id="from" size="60" /></dd>
<dt><label for="sbj" accesskey="3">Asunto</label></dt>
<dd><input type="text" name="sbj" id="sbj" size="60" /></dd>
<dt><label for="msg" accesskey="4">Mensaje</label></dt>
<dd><textarea id="msg" name="msg" rows="7" cols="45"></textarea></dd>
<dt><label>Archivos Adjuntos:</label> <a href="#" onclick="addField()" accesskey="5">Añadir Archivo</a></dt>
<dd><div id="files"></div></dd>
<dd><input type="submit" value="Enviar" id="postback" name="postback" accesskey="6" /></dd>
</dl>
</form>
Como podrán ver, este script utiliza PHP, javascript para crear nuevos elementos HTML en la página y para el envío del mail se utiliza
PHP Mailer que permite adjuntar archivos.
Como no se casi nada de php se me complica para agrupar estos dos codigos en uno, a los fines de que pueda enviar el formulario junto con los archivos adjuntos al hacer click en el boton de envio.
¿me dan una manito? no pretendo me hagan el trabajo, simplemente con una pista o algun articulo para leer me ayudarian muchisimo.
Supongo puedo hallar la solución modificando principalmente (entre otras cosas) esta línea del primer formulario que mostre:
mail("
[email protected]","Formulario recibido",$cuerpo);
donde de alguna manera debo incluir el envio de los archivos, pero como no entiendo el trabajo con variables de php estoy perdidísimo en el código.
Algo que me cuesta entender es esto: <?php if (isset($msg)) echo $msg;?>
es decir, ¿que es lo que hace isset()?
Desde ya muchas gracias, un saludo!