Google Búsqueda personalizada

Regístrate gratis para participar de los foros, o si ya estás registrado haz login.

Formulario PHP

comentario del autor Lun May 11, 2009 9:02 pm
   
Hola gente tengo un problema con mi formulario... Anda perfectamente el unico problemas es que no acepta la coma (,) en el campo de texto, o sea, el mensaje llega a mi mail, pero donde el usuario escribrio una coma ahi se corta el mensaje. Alguien puede ayudarme a solucionar el problema? se lo voy a agradecer!

Gracias, saludos

Leeand

Reputación

asistió a la solución Lun May 18, 2009 1:52 am
   
Muestra el código que te crea el mensaje para enviarlo.
Ahí checaremos que falla.

Saludos

César Terán

Reputación

comentario del autor Lun May 18, 2009 9:59 am
   
El codigo php seria el siguiente:
<?
/* ------------------------------------------------------
Formular-Gateway-Script für mail to date / web to date
(C) 2002 MultiMüller GmbH www.multimueller.de
Agregados, mejoras y correcciones hechos por Pablo Lecce
www.rhosting.com.ar
Script para el filtrado contra ataques usando formularios
tomado del sitio http://php-hispano.net/foros/PHP/15101
------------------------------------------------------
*/
// Funcion para prevenir el spam filtrando las cabeceras
function ValidarDatos($campo){
//Array con las posibles cabeceras a utilizar por un spammer
$badHeads = array("Content-Type:",
"MIME-Version:",
"Content-Transfer-Encoding:",
"Return-path:",
"Subject:",
"From:",
"Envelope-to:",
"To:",
"bcc:",
"cc:");
//Comprobamos que entre los datos no se encuentre alguna de
//las cadenas del array. Si se encuentra alguna cadena se
//dirige a una página de Forbidden
foreach($badHeads as $valor){
if(strpos(strtolower($campo), strtolower($valor)) !== false){
header("HTTP/1.0 403 Forbidden");
exit;
}
}
}
// Declaro como falsa la variable de plantillas para dejar que el programa la evalue
$hayplantilla=false;
$haygracias=false;
// Declaro las variables de acumulacion de variables
$reemplazar.="";
$cadenanueva.="";
$reemplazarencadena=array();
$cadenanuevaencadena=array();
// Evalua si se pasaron variables. Si es asi separa variables especificas y compila las otras.
if (count(stripslashes($_POST))!=0){
$cuerpodelmensaje="";
while (list($key, $val) = each ($_POST)){
switch ($key){
case "recipient":
$enviaraemail=$val;
break;
case "email":
$emaildelqueenvia=$val;
break;
case "subject":
$asunto=$val;
break;
case "redirect":
$fgwreturnurl=$val;
if($fgwreturnurl!=""){$haygracias=true;}
break;
case "plantilla":
$plantilla=$val;
if($plantilla!=""){$hayplantilla=true;}
break;

default:
$keysinguionesbajos=ereg_replace("_"," ",$key);
if($hayplantilla==true){
$reemplazar.=",{{".$key."}}";
$cadenanueva.=",".$val;
} else {
$cuerpodelmensajefinal.=$keysinguionesbajos.": ".$val."<br>";
}
}
}

if (!$emaildelqueenvia){
echo "No se ha indicado una dirección de E-Mail. Presiona el boton del navegador para volver atras al formulario y colocarlo.";
die;}
if($hayplantilla==true){
$reemplazados=explode(",",$reemplazar);
$cadenanuevaencadena=explode(",",$cadenanueva);
$archivo = file($plantilla);
$lineasdecadena = count($cadenanuevaencadena);
$lineas = count($archivo);
for($i=0; $i < $lineas; $i++){
$Cadena=$archivo[$i];
for( $j = 0; $j <= $lineasdecadena; $j++ ){
if(($reemplazados[$j]!="")&&($cadenanuevaencadena[$j]!="")){$Cadena=ereg_replace($reemplazados[$j],$cadenanuevaencadena[$j],$Cadena); }
}
$cuerpodelmensajefinal.=$Cadena;
}
}

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= "Content-Type:text/html; charset=iso-8859-1\r\n";
$headers .= 'To: '.$enviaraemail.'' . "\r\n";
$headers .= 'From: '.$emaildelqueenvia.' <'.$emaildelqueenvia.'>' . "\r\n";
if(@mail ($enviaraemail, $asunto, $cuerpodelmensajefinal, $headers)){if($haygracias==true){header("Location:".$fgwreturnurl);} else { echo "Mensaje enviado! Gracias por comunicarte con nosotros. Tu mensaje será respondido a la brevedad.<p>&nbsp;</p>Vuelve atrás para seguir disfrutando de la web";}} else { echo "No se ha podido enviar tu email. Por favor vuelve atras e intentalo nuevamente.";}}else{echo "Error: no se ha transferido ningún dato";die;
}
?>

Y la plantilla con las respuestas es la siguiente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
.Estilo2 {font-family: Arial, Helvetica, sans-serif; font-size: 12px;}
-->
</style>
</head>

<body>
<p class="Estilo2">Datos del formulario completado por el usuario: </p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="Estilo2"><strong>Nombre y Apellido: </strong></td>
<td class="Estilo2">{{Pregunta_1}}</td>
</tr>
<tr>
<td class="Estilo2"><strong>Curso: </strong></td>
<td class="Estilo2">{{Pregunta_2}}</td>
</tr>
<tr>
<td class="Estilo2"><strong>Asunto: </strong></td>
<td class="Estilo2">{{Pregunta_3}}</td>
</tr>

<tr>
<td height="16" class="Estilo2"><strong>Mensaje: </strong></td>
<td><p class="Estilo2">{{Pregunta_4}}</p>
</td>
</tr>
</table>
</body>
</html>

Leeand

Reputación

asistió a la solución Lun May 18, 2009 1:44 pm
   
Intenta agregando este mismo código pero para comas

$keysinguionesbajos=ereg_replace("_"," ",$key);

Si deseas enviame el código y archivos completos a mi mail para que lo suba a mi servidor y haga pruebas y saque el problema los datos estan en mi web.

aquí te postearé la respuesta.

César Terán

Reputación

comentario del autor Lun May 18, 2009 5:07 pm
   
Acabo de probar el codigo php pero es lo mismo, no pasa nada. Ahora te estoy mandando los 3 archivos adjuntos a tu mail: cesarteranm@gmail.com. En el mail te deje explicado cual es cual, ojala lo puedas solucionar, gracias por tu ayuda!

Leeand

Reputación

solución Mar May 19, 2009 5:00 pm
   
Los cambios son en el archivo formulario.php mismo que grego para que este tema quede completo..

parte del formulario.php original

<table width="482" align="center" border="0">

<tr>
<td width="472">
<form id="miformulario" name="miformulario" method="post" action="sendmail.php">
<p>
<input name="recipient" type="hidden" id="recipient" value="ezeluc8@hotmail.com" >
</p>
<p align="justify">Si quieres contactar con nosotros solo tienes que completar el siguiente formulario y tu mensaje será respondido a la brevedad.
<input name="subject" type="hidden" id="subject" value="Usuario Centro de Estudiantes!" >
<input name="redirect" type="hidden" id="redirect" >
<input name="plantilla" type="hidden" id="plantilla" value="plantilladesendmail.html" >
</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="26%"><br>
Nombre y Apellido: </td>
<td width="74%">
<p><label><br>
<input name="Pregunta_1" id="Pregunta_1" >
</label><label>
</label></p></td>
</tr>
<tr>
<td><br>
Curso: </td>
<td><label><br>
<select name="Pregunta_2" id="Pregunta_2" style="WIDTH: 146px">
<option
selected>Primero</option>
<option>Segundo</option>
<option>Tercero</option>
<option>Cuarto Agrotécnica</option>
<option>Cuarto Mecánica</option>
<option>Cuarto Química</option>
<option>Quinto Agrotécnica</option>
<option>Quinto Mecánica</option>
<option>Quinto Química</option>
<option>Sexto Agrotécnica</option>
<option>Sexto Mecánica</option>
<option>Sexto Química</option>
<option>Septimo Mecánica</option>
<option>Septimo Química</option>
</select> <br>De
acuerdo al nuevo plan de estudio.
</label></td>
</tr>
<tr>
<td><br>
Asunto:</td>
<td><label><br>
<input name="Pregunta_3" id="Pregunta_3" >
</label></td>
</tr>
<tr>
<td> <br>
Tu E-mail:</td>
<td><label><br>
<input name="email" id="email"
>
</label></td>
</tr>
<tr>
<td>Mensaje:</td>
<td><label><br><textarea id="Pregunta_4" style="WIDTH: 211px; HEIGHT: 70px" name="Pregunta_4" rows="3" cols="22" type="text"></textarea>
<br>*No usar la
coma (,) en el texto.
<br>&nbsp;
De lo contrario el texto no será enviado. </label></td>
</tr>
</table>
<p>
<label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;
<input type="submit" name="Submit" value="Enviar" >
</label>
</p>
</form>
</td></tr></table>
Cambios realizados
Se elimino la línea
<input name="plantilla" type="hidden" id="plantilla" value="plantilladesendmail.html" >
La plantilladesendmail.html es la que trunca tu mensaje, al eliminar la linea anterior este archivo ya no se usa...


Se cambio cada campo como por ejemplo:

<input name="Pregunta_1" id="Pregunta_1" >
Por
<input name="Nombre" id="Pregunta_1" >

Se realizó un cambio en el Input del botón de la siguiente forma:
<input type="submit" name="Submit" value="Enviar" >
Por
<input type="submit" value="Enviar" >
Para que este no se envíe como parte del mensaje.

Esto te da excelentes resultados sacrificando el formato que generaba plantillad

César Terán

Reputación



Hacer una pregunta

Boletín de Noticias

Reciba noticias de tecnología, tips de reparación y ofertas exclusivas.



Reglamento / P+F

Foros

Miembros / Expertos