Foros del Web » Programando para Internet » PHP »

cuidados para recoger y guardar en BD email y url

Estas en el tema de cuidados para recoger y guardar en BD email y url en el foro de PHP en Foros del Web. A través de un formulario voy a recoger cuentas de email y direcciones de sitios para almacenarlos en una base de dato MySQL. Posteriormente voy ...
  #1 (permalink)  
Antiguo 16/05/2006, 13:47
Avatar de CarlosMex  
Fecha de Ingreso: mayo-2005
Mensajes: 67
Antigüedad: 12 años, 6 meses
Puntos: 0
cuidados para recoger y guardar en BD email y url

A través de un formulario voy a recoger cuentas de email y direcciones de sitios para almacenarlos en una base de dato MySQL. Posteriormente voy a usar esas cuentas de correo en otro formulario para que los datos se envíen a a dicho correo. Y los sitios los voy a recuperar dinámicamente para hacer una liga.

¿Qué me recomiendan para garantizar que pueda guardar correctamente y después publicar correctamente?

Leí algo de urlencode( ) y urldecode( ), ¿es suficiente o debo tener otros cuidados?
__________________
CarlosMex
  #2 (permalink)  
Antiguo 16/05/2006, 14:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Una de las funciones que deberías aplicar:

mysql_real_escape_string()

A tus datos en general .. lleguen por donde lleguen a la hora de insertarlos en tus consultas SQL ..

Tienes más consejos en generar sobre seguridad bajo PHP en este excelente documento:
http://phpsec.org/projects/guide/

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 16/05/2006, 14:38
Avatar de CarlosMex  
Fecha de Ingreso: mayo-2005
Mensajes: 67
Antigüedad: 12 años, 6 meses
Puntos: 0
Gracias Cluster, etstoy revisando la liga que me mandas y está muy interestante.

Respecto a las funciones urlencode( ) y urldecode( ) tienes alguna opinión?

Un Saludo
__________________
CarlosMex
  #4 (permalink)  
Antiguo 16/05/2006, 15:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Las funciones que mencionas sólo ayudan a "escapar" caracteres como espacios .. ñ .. caracteres con acentos y algunos más cuando pasas datos por el URL .. normalmente cuando de un script PHP generas un link a otro tipo:

Código PHP:
$variable="algo con espacios acéntós y )( caracteres = ? '";
header ("Location: nose.php?variable=".url_encode($variable)); 
pero nada más .. Si tu dices usar un formulario .. eso ya queda cubierto normalmente por el uso de "magic_quote_gpc" (a ON) de tu php.ini .. o bien lo hace tu servidor HTTP directamente y sobre todo es parte de la codificación del formulario que usas ...

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 16/05/2006, 18:18
Avatar de CarlosMex  
Fecha de Ingreso: mayo-2005
Mensajes: 67
Antigüedad: 12 años, 6 meses
Puntos: 0
Cluster, mi pregunta está enfocada a localizar algún problema en mi código, específicamente al recoger del formulario, guardar en la BD y recuper de la BD cuentas de correo y url's; ya que al momento de usar el correo de la BD, ALGUNOS de estos correos no son recibidos, y recalco ALGUNOS, que para mi es lo raro, yo pensaría que envía o no envía, y no medio envía.

Curiosamente lo hace con cualquier cuenta de un dominio, sin embargo todos los de hotmail, gmail, yahoo, netscape, etc. sí los envía. He ralizado pruebas con varios dominios, propios y ajenos, y en varios no funciona, incluso en los propios.

pongo mi código, que hable por sí mismo.

Tomé parte del código de los ejemplos en http://www.php.net/manual/es/function.mail.php

Código PHP:
<?
//estos datos vienen del formulario
//paso variables
$Nombre=$_POST["Nombre"];
$Apellido=$_POST["Apellido"];
$email=$_POST["email"];
$Mensaje=$_POST["Mensaje"];

//y estos de la BD
$id=$_POST["_id"];
$reseremail=$_POST["reseremail"];

//comienzo a llenar los reipientes del correo
// multiples recipientes
$para  $reseremail  ', '//este viene de la BD
$para .= $email//y este lo ingresó el usuario en el formulario

// asunto
$asunto 'Solicitud de Informes';

// mensaje
$mensaje "El mensaje en HTML"//recorte el msg en html que llega bien

// para correo HTML
$cabeceras  'MIME-Version: 1.0' "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";

// cabeceras adicionales
$cabeceras .= 'From: Mi Nombre <[email protected]"\r\n";
$cabeceras .= 'Cc: [email protected]"\r\n"//este es el que siempre llega
$cabeceras .= 'X-Mailer: PHP/' phpversion();

// enviarlo
mail($para$asunto$mensaje$cabeceras);
?>
Gracias
__________________
CarlosMex
  #6 (permalink)  
Antiguo 17/05/2006, 07:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. a ver .. un problema concreto con un envio de un e-mail no tiene nada que ver con datos que recojas de un formulario.

PHP no envia el e-mail en sí a su destinatario directamente, sólo lo entrega al "MTA" que tu servidor use (y así tenga configurado) .. Si tienes problemas con ciertos e-mails que dices que no llengan correos a ellos (o incluso son rechazados como "SPAM" o clasificados como tal) debes "preguntar" al MTA que recibió el correo de parte de PHP (hazte la idea que PHP y tu código con mail() sólo está actuando como un "cliente" de correo el cual se conecta a un servidor SMTP (MTA en general) para efectuar su envio definitivo). Es decir, .. no sé si tendrás acceso a los "log's" que se servidor SMTP (o MTA) genera con cada recepción de un e-mail o envio del mismo ..pero es ahí donde debes revisar y no en "PHP".

De hecho la función mail() si dá un "true" sólo te asegura que "pudo entregar el e-mail al MTA" .. pero esto no implica que el MTA en sí pudiera enviar el e-mail (PHP con su función mail() no recoje ese tipo de errores del MTA .. pues muchos no se originan al instante .. ).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 17/05/2006, 07:52
Avatar de CarlosMex  
Fecha de Ingreso: mayo-2005
Mensajes: 67
Antigüedad: 12 años, 6 meses
Puntos: 0
Gracias Cluster, supongo que estaba concentrando la atención a PHP que siempre me dio TRUE, por su posibilidad de enviar lo que a PHP corresponde. Estoy revisando mi servidor y encontré esto:
Cita:
Dirección de Perl: /usr/bin/perl
Dirección de sendmail: /usr/sbin/sendmail
Información: algunos scripts requieren un " -t" después de la dirección de sendmail, ej: /usr/sbin/sendmail -t
Supongo que tiene relción con lo que comentas, ¿no?
__________________
CarlosMex
  #8 (permalink)  
Antiguo 17/05/2006, 10:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por CarlosMex
Gracias Cluster, supongo que estaba concentrando la atención a PHP que siempre me dio TRUE, por su posibilidad de enviar lo que a PHP corresponde. Estoy revisando mi servidor y encontré esto:


Supongo que tiene relción con lo que comentas, ¿no?
Esa información es sobre el "MTA" que PHP usa .. en tu caso "sendmail" .. ese MTA genera "registros" (o log's) de actividad .. es decir, de todo lo que pretende conectarse a el y enviar un e-mail además del hecho en sí del envio contra su destinatario definitivo.

No sé si tendrás acceso a ese tipo de log's (lo más probable es que no lo tengas si usas un servicio de hosting) .. si no tienes acceso tendrás que pedirlos a tu proveedor para que puedas ver que sucede en la transacción del e-mail.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 17/05/2006, 16:09
Avatar de CarlosMex  
Fecha de Ingreso: mayo-2005
Mensajes: 67
Antigüedad: 12 años, 6 meses
Puntos: 0
Me queda claro Cluster, entonces el los log's voy a ver los registros de los correos que "MTA" envia y los que se quedaron. Y en teoria con esta informacion me doy cuenta que todo esta bien o que debo hacer cambios en alguna parte para que trabaje correctamente; si este es el caso, que cambios debo hacer para que todo trabaje como debe.

Supongo que en PHP debo hacer algo que le diga al oido de los "MTA" que mande TODO. Pero cuales son esas palabras magicas?

Supongo que esta letra -t tiene algo que ver... o no? si es asi, como la uso.

Mientras tanto solicito los log's a mi proveedor de hosting.

Saludo y gracias, es un gusto hablar contigo
__________________
CarlosMex
  #10 (permalink)  
Antiguo 18/05/2006, 07:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. depende de los mensajes concretos que veas de error al entregar un e-mail .. así será la solución que debas tomar, ya sea tu en tu código si hay algo que hacer .. o tu proveedor a nivel de configuración de sus servidores ..

Yo he tenido muchos problemas con mis proveedores de hosting (como tu .. no tengo acceso directo a los LOG's) pero tambien manejo otros servidores directamente donde SI tengo acceso a los logs y en busca del problema (en base al error que veo en el log) algunas veces me ha tenido que cambiar algo la configuración de mis servidores .. por eso insisto tanto que no se trata de darse cabezazos con el código PHP .. muchas veces hay otros factores que influyen que también hay que revisar y no descartar.

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 03:49.