Foros del Web » Programando para Internet » PHP »

ayuda con formularios pls

Estas en el tema de ayuda con formularios pls en el foro de PHP en Foros del Web. hola a todos ojala alguien pueda ayudarme, la verdad es que no se nada de php, pero al menos intento aprender y leer todo lo ...
  #1 (permalink)  
Antiguo 03/09/2003, 22:47
 
Fecha de Ingreso: septiembre-2003
Mensajes: 14
Antigüedad: 21 años, 2 meses
Puntos: 0
ayuda con formularios pls

hola a todos ojala alguien pueda ayudarme, la verdad es que no se nada de php, pero al menos intento aprender y leer todo lo que puedo (lei las faqs pero no encontre respuesta :( , se me presenta el siguiente problema: en una pag tipica de formularios esas tipicas de "contactanos" donde el visitante pone su nombre su mail su asunto su mensaje, etc etc llega a mi e-mail, todo eso marcha bien el problema es que solo el campo "mensaje" del formulario llega en el cuerpo del mail, los otros datos llegan en forma de encabezados mime (mime headers) y para leerlos hay que ver el codigo del mail :(, lo cual comprenderan es poco eficiente cuando si se recibe un alto numero de mail al dia, aca les envio el codigo con la esperanza que alguien puda ayudar en mi dilema :)
(ojo: el codigo que pego a continuacion no es de mi autoria) :)

____________________________________
Código PHP:
if (!eregi("modules.php"$_SERVER['PHP_SELF'])) {
        die (
"You can't access this file directly...");
}

require_once(
"mainfile.php");
$module_name basename(dirname(__FILE__));
get_lang($module_name);
$pagetitle "- "._CONTACTUS."";
$index 1;


function 
ns_info() {
global 
$module_name$sitename$prefix$dbi;
$result sql_query("select address from ".$prefix."_ns_contact_add"$dbi);
list(
$address) = sql_fetch_array($result$dbi);
$address FixQuotes(nl2br($address));
echo 
"<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" align=\"center\">";
echo 
"<tr><td align=\"left\">";
echo 
"$address";
echo 
"</td></tr></table><br>";
}


function 
ns_phone() {
global 
$module_name$sitename$prefix$dbi;
echo 
"<table border=\"0\" cellpadding=\"1\" cellspacing=\"0\" align=\"center\">";
$result sql_query("select pid, phone_name, phone_num from ".$prefix."_ns_contact_phone order by phone_name"$dbi);
    while(list(
$pid$phone_name$phone_num) = sql_fetch_array($result$dbi)) {
echo 
"<tr><td align=\"right\">";
echo 
"<font class=\"content\">$phone_name:</td>";
echo 
"<td align=\"left\">$phone_num</td></tr>";
    }
echo 
"</table><br><br>";
}


function 
ns_form() {
global 
$module_name$sitename$prefix$dbi;
include(
"header.php");
OpenTable();
echo 
"<center><font class=\"title\">"._CONTACTUS."</font></center>";
CloseTable();
OpenTable();
$result_s sql_query("select show_add from ".$prefix."_ns_contact_show"$dbi);
list(
$show_add) = sql_fetch_array($result_s$dbi);
if (
$show_add == 1) {
echo 
"<br><br><center><font class=\"title\"><u>"._ADDRESSINFO."</u></font></center><br>";
ns_info();
echo 
"<hr>";
}
$result_p sql_query("SELECT * FROM ".$prefix."_ns_contact_phone"$dbi);
$num sql_num_rows($result_p$dbi);
if (
$num 0) {
echo 
"<br><br><center><font class=\"title\"><u>"._PHONEINFO."</u></font></center><br>";
ns_phone();
echo 
"<hr>";
}
echo 
"<br><center><font class=\"title\">"._FORMHEADER." $sitename</font></center><br><br>";
if (
is_user($user)) {
$result_ui sql_query("select name, uname, email from ".$user_prefix."_users where uname='$cookie[1]'"$dbi);
list(
$yn$yun$ye) = sql_fetch_row($result_ui$dbi);}
if (
$yn != "") { $ns_un $yn; } else { $ns_un $yun; }
echo 
"<form action=\"modules.php?name=$module_name\" method=\"post\"";
echo 
"name=\"contact_plus\">";
echo 
"<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" align=\"center\">";
echo 
"<tr><td align=\"left\" valign=\"middle\"><font class=\"content\"><b>"._YOURNAME.":</b></font> ";
echo 
"<font class=\"tiny\">("._OPTIONAL.")</font><br>";
echo 
"<input name=\"cname\" size=\"35\" value=\"$ns_un\"></td></tr>";
echo 
"<tr><td align=\"left\" valign=\"middle\">";
echo 
"<font class=\"content\"><b>"._YOUREMAIL.":</b></font><br>";
echo 
"<input name=\"from\" size=\"35\" value=\"$ye\"></td></tr>";
echo 
"<tr><td align=\"left\" valign=\"middle\">";
echo 
"<font class=\"content\"><b>"._PLEASESELECT.":</b></font><br>";
echo 
"<select name=\"dpid\">";
echo 
"<option value=\"\" selected>---------------------------------";
echo 
"<option value=\"\">";
    
$result $db->sql_query("select did, dept_name, dept_email from ".$prefix."_ns_contact_dept order by dept_name");
    while (
$row $db->sql_fetchrow($result)) {
   
$did $row[did];
   
$dept_name $row[dept_name];
   
$dept_email $row[dept_email];
echo 
"<option value=\"$did\">$dept_name";
    }
echo 
"<option value=\"\">";
echo 
"</select></td></tr>";
echo 
"<tr><td align=\"left\" valign=\"middle\">";
echo 
"<font class=\"content\"><b>"._YOURMESSAGE.":</b></font><br>";
echo 
"<textarea cols=\"55\" name=\"message\" rows=\"12\" ></textarea></td></tr>";
echo 
"<tr><td colspan=\"2\" align=\"center\" valign=\"middle\">";
echo 
"<input type=\"hidden\" name=\"op\" value=\"ns_send\">";
echo 
"<input type=\"submit\" name=\"submit\" value=\""._SEND."\">";
echo 
"&nbsp;&nbsp;<input type=\"reset\" value=\""._CLEAR."\">";
echo 
"</td></tr></table></form>";
echo 
"<br>";
Closetable();
include(
"footer.php");
}


function 
ns_send($dpid$cname$from$email$message) {
global 
$module_name$sitename$prefix$dbi;
include(
"header.php");
if(
ereg("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$from)) {
} else {
OpenTable();
echo 
"<center><font class=\"title\">"._CONTACTUS."</font></center>";
CloseTable();
OpenTable();
echo
"<br><center><font class=\"title\">"._INVALIDEMAIL.":<br><br>"
echo
"<font color=\"#CC0000\">$from</font><br><br>"._INVALIDEMAIL2."</font>";
echo
"<br><br><br><font class=\"title\">"._PLEASEGO."</font>";
echo
"<br><br>";
echo
"[ <a href=\"javascript:history.go(-1)\">"._BACK."</a> ]</center><br>";
CloseTable();
include (
"footer.php");
exit;
}
if (
$dpid == "") {
OpenTable();
echo 
"<center><font class=\"title\">"._CONTACTUS."</font></center>";
CloseTable();
OpenTable();
echo
"<br><center><font class=\"title\">"._SELECTDEPARTMENT."<br><br>"
echo
""._PLEASEGO3."</font>";
echo
"<br><br>";
echo
"[ <a href=\"javascript:history.go(-1)\">"._BACK."</a> ]</center><br>";
CloseTable();
include (
"footer.php");
exit;
}
if (
$message == "") {
OpenTable();
echo 
"<center><font class=\"title\">"._CONTACTUS."</font></center>";
CloseTable();
OpenTable();
echo
"<br><center><font class=\"title\">"._NOMESSAGE."<br><br>"
echo
""._PLEASEGO2."</font>";
echo
"<br><br>";
echo
"[ <a href=\"javascript:history.go(-1)\">"._BACK."</a> ]</center><br>";
CloseTable();
include (
"footer.php");
exit;
}
$result sql_query("select dept_name, dept_email from ".$prefix."_ns_contact_dept where did='$dpid'"$dbi);
list(
$dept_name$dept_email)=sql_fetch_row($result$dbi);
$department $dept_name;
$department stripslashes(trim($department));
$subject $department;
$from strip_tags(trim($from));
$message stripslashes(trim($message));
$header  ""._FROM.": "._CONTACTFORM." - $cname <$from>\r\n";
$header .= "\n";
$header .= ""._VISITOR.": $cname <$from>\r\n\n";
$header .= ""._TODEPARTMENT.": $department\r\n\n";
$header .= ""._MESSAGE.":\r\n";
$header .= "\n==============================================================";
@
$send=mail($dept_email,$subject,$message,$header);
if (
$send == 1) {
OpenTable();
echo 
"<center><font class=\"title\">"._CONTACTUS."</font></center>";
CloseTable();
OpenTable();
echo 
"<br>";
echo 
"<br><div align=\"center\"><font class=\"title\">"._THANKYOUFOR." $sitename</font>";
echo 
"<br><br>"._EMAILSENT."<br>"._GETBACK."</div><br><br>";
echo 
"<center>[ <a href=\"index.php\">"._HOME."</a> ] - ";
echo 
"[ <a href=\"modules.php?name=$module_name\">"._CONTACTFORM."</a> ]</center><br>";
echo 
"<br>";
CloseTable();
include (
"footer.php");
} else {
OpenTable();
echo 
"<center><font class=\"title\">"._CONTACTUS."</font></center>";
CloseTable();
OpenTable();
echo
"<center><font class=\"title\">"._ERROR2."</font>";
echo
"<br>"._TRYAGAIN."<br>";
echo
"[ <a href=\"modules.php?name=Contact\">"._BACK."</a> ]</center>";
CloseTable();
include (
"footer.php");
}
exit();
include(
"footer.php");
}



switch (
$op) {

    case 
"ns_send":
    
ns_send($dpid$cname$from$email$message);
    break;

    default:
    
ns_form();
    break;


___________________________________________

desde ya me despido agradecido por la ayuda
  #2 (permalink)  
Antiguo 04/09/2003, 04:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

El problema es que alguien se ha liado con los nombres de las variables y lo que significan. El cuarto parametro de la funcion mail() es para poner cabeceras del protocolo, como el From, Bcc y demas, no para poner algo que quieras que se vea en el cuerpo del mensaje. Lo que quieres que se vea en el cuerpo del mensaje debe ir en el tercer parametro de mail(). Lo que pasa es que llamo $header (cabecera) al encabezado del mensaje y viendo que normalmente la variable que se pasa en cuarto lugar al mail() se llama $headers, pues ahi la puso. Pero como debe ir en el cuerpo del mensaje, debes ponerlo en el tercer parametro.

Tras el rollo de explicacion (¿la habeis leido entera?), el codigo:
Código PHP:
$cuerpo=$header.$message;
@
$send=mail($dept_email,$subject,$cuerpo); 
es decir, creo el cuerpo del mensaje concatenando el encabezado con el mensaje. No pongo cuarto parametro porque no veo que envies cabeceras.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 04/09/2003, 10:53
 
Fecha de Ingreso: septiembre-2003
Mensajes: 14
Antigüedad: 21 años, 2 meses
Puntos: 0
wauuuuuuuu !!!! millon de gracias, no sabes cuanto me has ayudado, tal vez para ti fue facil dar respuesta, pero yo ya no sabia que hacer para solucionar el problema, pues segui tu consejo en el cambio de codigo y funciono a la perfeccion !!!!
te ganaste un par de cervezas :D
gracias totales !! :)
chau
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:36.