Foros del Web » Programando para Internet » PHP »

por que se desactiva la funcion mail?

Estas en el tema de por que se desactiva la funcion mail? en el foro de PHP en Foros del Web. tengo un problema con mi pagina sale esto despues de que se envia un mensaje , pero ya revice el codigo y no se que ...
  #1 (permalink)  
Antiguo 25/10/2006, 07:57
 
Fecha de Ingreso: febrero-2004
Ubicación: argentina
Mensajes: 203
Antigüedad: 20 años, 2 meses
Puntos: 0
por que se desactiva la funcion mail?

tengo un problema con mi pagina sale esto despues de que se envia un mensaje , pero ya revice el codigo y no se que puede ser , si alguien puede acharle un ojo, se lo agadeceria

esto es lo que sale:

Warning: mail() has been disabled for security reasons in /home/webcindario/miamersur/opinar.php on line 62

Warning: mail() has been disabled for security reasons in /home/webcindario/miamersur/opinar.php on line 64
Tu mensaje se envio.... GRACIAS


este es el codigo php del mail, las lineas 62 y 64 son esas:


if (($mailadmin) && ($clavepreg)) {
62----- mail($mailadmin, $subject, $veryresponder, $headers);
if ($correoX) {
64----- mail($correoX, $subjectX, $aviso, $headers);
}

echo "<b><font color='#800000'>Tu mensaje se envio....</font>\n";
} else {
echo "<b><font color='#800000'>algo paso y no se pudo enviar tu mensaje, intentalo otra vez</font><br></b>\n";
}
print ("GRACIAS POR DAR TU OPINION !!!!!!<br><br><font size='5' face='Comic Sans MS'>
si la pagina no se recarga,Actualizala para ver tu mensaje...<br>CHAAUUU !!!</font>
<script language=\"javascript\">
opener.location.reload();
setTimeout(\"self.close();\",3000)</script>\n");

}

gracias por la ayuda
  #2 (permalink)  
Antiguo 25/10/2006, 08:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tu código es correcto (mejorable .. pero correcto en principio).

El mensaje de error te dice claramente que en tu servidor desactivaron esa función .. Por qué razón? .. pregunta a tu proveedor!!!!.

De todas formas .. la función mail() no es la única forma de enviar un e-mail .. puedes probar a enviarlo por SMTP directo con ayuda de:

PHPMailer
http://phpmailer.sourceforge.net

Eso sí .. que te funcione este método depende de otros factores: usa "conexión por sockets" .. y eso otro montón de proveedores de servicios de hosting (y más gratuitos) lo desactivan también ...

Tu usas un servicio de hosting? (de pago/gratuito?) ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 25/10/2006, 08:39
 
Fecha de Ingreso: febrero-2004
Ubicación: argentina
Mensajes: 203
Antigüedad: 20 años, 2 meses
Puntos: 0
sabes tengo otros formularios en la misma pagina ,los estuve provando y funcionan lo mas bien.
por si acaso te doy la dire de mi pag para que le eches un ojo si puedes,

http://miamersur.webcindario.com/dia...&infopais=peru

es en el formulario de opinar sobre el informe en el link de arriba
respondiendo a tu pregunta yo uso un servidor gratuito el de miarroba.
gracias por contestarme ,saludos!!!
  #4 (permalink)  
Antiguo 25/10/2006, 09:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Como es eso de que tienes más "formularios" en la "misma página" .. será que te refieres a que tienes más código que usa mail() en el mismo servicio de hosting (webcindario) o a qué exactamente?

Con la dirección de tu página no se vé más que el HTML que usas .. no el código PHP!!!! .. que es lo que interesa.

Por cierto ese formulario de contacto que usas en:
emailform.php

Se presta a que hagamos MAL!!! uso de tus própios scripts .. NUNCA!!!!! debes poner en una variabel "hidden" en un formulario la dirección de e-mail a la que envias los datos del formulario!!!!!!!!.

Tampoco recojes las variables en tu script PHP por el método esperado: $_POST['nombre_variable_formulario'] .. lo haces como "global" .. eso añade otro grado más de insegurdidad de tu código!!!!!!.

Más encima ese código incluye como campos ocultos los campos que debe validar (O_o'!) .. eso si que es increible ..

Por tu bien . .plateate de nuevo el diseño de ese sistema!!!.

Tal vez por eso .. te han desactivado la función mail()!!! ????

Por qué no haces una prueba simple: usa mail() y compón un e-mail simple .. y lo envias al ejecutar tu script de prueba.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 25/10/2006, 10:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por cierto .. en el script que ahora te plantea el problema .. pasa lo mismo .. Usas campos hidden para propagar datos que se pueden alterar fácilmente.

Tienes que presentar el código PHP completo que usas!!!

Por cierto .. ese "emailform.php" es un script tuyo o servicio de webcindario? ... y opinar.php?

Por lo demás observa que indica webcindario al respecto:
http://miarroba.com/foros/ver.php?fo...temaid=4732851

Como veras tienen su própio foro de soporte/usuarios .. así que lo mejor es que consultes allá también ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 27/10/2006, 10:42
 
Fecha de Ingreso: febrero-2004
Ubicación: argentina
Mensajes: 203
Antigüedad: 20 años, 2 meses
Puntos: 0
-primero, agradezco mucho que te hayas tomado el trabajo o la molestia de revisar el problema de mi pagina ,
te cuento que cuando lei el mensaje de error de mi formulario entendi que era un problema del servidor ,pero como yo soy apenas una novata e esto , me salto la duda y pense que por ahi yo habia echo algo mal, por eso pregunte tambien en miarroba y resulta que estaba en lo correcto y como vos tambien me habias dicho fue miarroba =(wecindario)quien desabilito la funcion mail y no soy la unica que que tiene ese problema , entre al foro de miarroba y todos estan protestando por el mismo tema.

-ahora ...,bueno... , me refiero a que tengo otros formularios en el mismo hosting, disculpa pense que se entendia.

-respecto al formulario , la verdad no sabia que no era bueno poner una direccion de mail en una variable hidden,intentare arreglarlo

-creo que no entiendo lo del pos!?!,

te refieres a que el script php deberia recoger los datos asi?:

$nombre = $HTTP_POST_VARS["nombre"];

porque yo le puse el post asi y pense que con eso era suficiente:

<form action='emailform.php' method='post' name='miformulario' onSubmit='return verificar()'>

mmmm.... como te diste cuenta? si el codigo php no se ve


-ahora a que te refieres co esto:
cito:"encima ese código incluye como campos ocultos los campos que debe validar (O_o'!) .. eso si que es increible .."

mmmm... te refieres creo a esto? puede ser?

<input type='hidden' name='require' value='nombre,edad,pais,correo,asunto,comentario'>

que tambien son los casilleros que se tienen que llenar en el formulario,no?

mira te explico lo que quise hacer, com soy muy novata en esto, por ahora solo modifico archivos, este codigo lo saque del php nuke, y lo modifique en parte , este script traia un codigo php para verificar que los casilleros esten llenos depues de precionar el boton enviar del formu , eso es validar,no? bueno, pero yo queria que se verificara que todos los casilleros esten llenos antes de enviar o precionar el boton enviar del form no despues como lo hacia el php, entonces le agregue un javascript como habras visto, pero por si acaso le deje el codigo php que validava el formulario por si el codigo javascript no me funcionaba, asi el formulario seria en cualquier caso siempre validado.


y el scrip php me pedia que enviara estos valores y en el script original se enviaban asi:


<input type='hidden' name='require' value='nombre,edad,pais,correo,asunto,comentario'>

espero haber sido clara ,pero por si acaso aca te envio la porcion del codigo php que valida o validava los campos, o bueno tal vez interprete mal el codigo, en tal caso agradeceria tu correcion.

este es:

<?php ..........


if($submitform) {
$dcheck = explode(",",$require);
while(list($check) = each($dcheck)) {
if(!$$dcheck[$check]) {
$error .= "falta completar $dcheck[$check]<BR>";
}
}
if($error) {
?>
<P><CENTER><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD WIDTH="100%" BGCOLOR="#004080">
<TABLE WIDTH="394" BORDER="0" CELLSPACING="1" CELLPADDING="2">
<TR>
<TD WIDTH="26%" BGCOLOR="#004080">
<P><B><FONT COLOR="#ffffff" SIZE="-1" FACE="Verdana">Error</FONT></B></TD>
</TR>
<TR>
<TD WIDTH="26%" BGCOLOR="#ffffff">
<FONT COLOR="#000000" SIZE="-1" FACE="Verdana"><?php echo $error; ?></FONT></TD>
</TR>
</TABLE></TD>
</TR>
</TABLE></CENTER>
<P><CENTER>&nbsp;</CENTER></P>
<P><CENTER><FONT SIZE="2" FACE="Verdana"><A HREF="emailform.php">intentar otra vez</A></FONT></CENTER></P>
</BODY></HTML>
<?php
..............
?>



-te cuento que no me funciona ningun form , lo que paso es que es que crei que funcionaban por que no me salia en los otros formularios el mensaje de :

Warning: mail() has been disabled for security..................


lo que paso es que los prove antes de entrar al foro, pero despues entre a mi correo y el mensaje no habia llegado, luego, supe que el problema era del servidor.

muchas gracias por todo, saludos!!!
  #7 (permalink)  
Antiguo 27/10/2006, 11:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
creo que no entiendo lo del pos!?!,
te refieres a que el script php deberia recoger los datos asi?:
$nombre = $HTTP_POST_VARS["nombre"];
Más bien a que uses el array superglobal: $_POST (en tu caso):

$_POST['nombre']

Puedes ver la documentación oficial al respecto en:
http://www.php.net/manual/es/languag...s.external.php

Cita:
-ahora a que te refieres co esto:
cito:"encima ese código incluye como campos ocultos los campos que debe validar (O_o'!) .. eso si que es increible .."

mmmm... te refieres creo a esto? puede ser?

<input type='hidden' name='require' value='nombre,edad,pais,correo,asunto,comentario'>

que tambien son los casilleros que se tienen que llenar en el formulario,no?

mira te explico lo que quise hacer, com soy muy novata en esto, por ahora solo modifico archivos, este codigo lo saque del php nuke, y lo modifique en parte , este script traia un codigo php para verificar que los casilleros esten llenos depues de precionar el boton enviar del formu , eso es validar,no? bueno, pero yo queria que se verificara que todos los casilleros esten llenos antes de enviar o precionar el boton enviar del form no despues como lo hacia el php, entonces le agregue un javascript como habras visto, pero por si acaso le deje el codigo php que validava el formulario por si el codigo javascript no me funcionaba, asi el formulario seria en cualquier caso siempre validado.
Está bien que valides en "Javascript", es decir .. del lado del "cliente". Eso te dá "usabilidad" a tu formulario .. Pero NO ES SEGURO!.

La parte que valida en PHP .. está bien .. pero no de esa forma. NO puedes indicar en el "cliente" que datos tendrá que "validar" en el "servidor". Es en el "SERVIDOR" directamente donde debes indicar que campos validar o son requeridos o deban cumplir cierto patrón o forma.

En tu caso concreto .. haces:

Código PHP:
if($submitform) {
$dcheck explode(",",$require);
while(list(
$check) = each($dcheck)) {
if(!$
$dcheck[$check]) {
$error .= "falta completar $dcheck[$check]<BR>";
}

en $dcheck = explode(",",$require); tomas la lista de campos que validas .. OK .. pero lo malo que lo haces de lo que te llega del formulario .. DEFINELO ahí miso en PHP y problema resuelto de seguridad y una variabel menos que propagar del cliente-al-servidor por tu formulario.

Código PHP:
// define -aquí- los campos a validar.
$require="nombre,edad,pais,correo,asunto,comentario";
$dcheck explode(",",$require); 
Por supuesto .. como veras al "fijar" ese dato en tu script PHP .. este script de proceso ya no te servirá para otras situaciones donde tengas que validar otros campos. Pero .. así es "PHP" .. la seguridad conlleva ese "gasto". Puedes mejorar este código creando funciones .. etc .. eso ya es otro tema.

Bueno .. por lo demás insisto que debes usar los arrays superglobales $_POST .. $_GET .. etc para referenciarte a las variables que llegan "externas" a tu proceso PHP (script). (ya te dejé link para que veas eso ..)

Por cierto .. al usar el array $_POST (que eso es lo que es en el fondo) .. tu validación que haces cambiará un poco vs la forma que ahora usas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 10:48.