Foros del Web » Programando para Internet » PHP »

Suscripción por mail

Estas en el tema de Suscripción por mail en el foro de PHP en Foros del Web. Estoy armando un código para que los usuarios se suscriban a un newsletter, hasta ahora tengo hecho esto: Código: <?php $suscriptor = $_POST["suscriptor"]; function check_email_address($email) ...
  #1 (permalink)  
Antiguo 25/10/2008, 15:26
 
Fecha de Ingreso: octubre-2008
Mensajes: 2
Antigüedad: 16 años, 1 mes
Puntos: 0
Suscripción por mail

Estoy armando un código para que los usuarios se suscriban a un newsletter, hasta ahora tengo hecho esto:


Código:
<?php
$suscriptor = $_POST["suscriptor"]; 

function check_email_address($email) {
// First, we check that there's one @ symbol, and that the lengths are right
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
// Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
return false;
  }
  // Split it into sections to make life easier
  $email_array = explode("@", $email);
  $local_array = explode(".", $email_array[0]);
  for ($i = 0; $i < sizeof($local_array); $i++) {
  if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
  return false;
  }
  }
  if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
  $domain_array = explode(".", $email_array[1]);
  if (sizeof($domain_array) < 2) {
  return false; // Not enough parts to domain
  }
  for ($i = 0; $i < sizeof($domain_array); $i++) {
  if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
    return false;
  }
    }
       }
 return true;
  
      }

if(check_email_address($_POST['suscriptor']))
  echo ("El mail es correcto"); AQUI HAY QUE QUITAR ESO Y CONECTAR A UNA DB, RECORRERLA Y VERIFICAR SI YA EXISTE EL MAIL
else
  echo ("El mail no es correcto");
?>

Lo que necesito hacer (y no me sale) es que cuando verifica si el mail es válido, acceda a la db (que va a ir creando a medida que se introduzcan los mails) y verifique si el mail introducido existe o no, si existe que emita "ERROR, MAIL EXISTENTE", y sino .. que simplemente lo añada a la db.

Muchas gracias y felicitaciones por el sitio :)
  #2 (permalink)  
Antiguo 25/10/2008, 15:35
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 5 meses
Puntos: 49
Respuesta: Suscripción por mail

Que tal rapizhare, primero que todo bienvenido al foro. ahora en donde radica tu problema? en la creación de la BD? que Motor de BD soporta tu server?, conoces la funciones de PHP para trabajar con BD?, aclara un poco mas tu posición, pues lo que deseas hacer no es tan complicado.





Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #3 (permalink)  
Antiguo 25/10/2008, 15:57
 
Fecha de Ingreso: octubre-2008
Mensajes: 2
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Suscripción por mail

Hola Carlojas, primero: muchísimas gracias por tu pronta respuesta.

La db la tengo creada (sql), logro establecer la conexión a la db, pero como recién empiezo con esto de php no sé como hacer para:

1) Insertar el 1er mail introducido (para que empiece a armar la db)
2) Verificar si alguno de los mails que están en la db es igual al mail que se quiere introducir, y en ese caso que largue un error, caso contrario (si no existe el mail en la db), que simplemente la inserte.

Muchas gracias!
  #4 (permalink)  
Antiguo 25/10/2008, 20:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Suscripción por mail

Hola rapizhare,

Para tu primera duda, tienes que enviar el comando SQL INSERT a la base de datos, la sintaxis depende del motor de base de datos que ocupes.

Para verificar si ya existe, haces un SELECT a la base de datos y cuentas el número de filas.

Saludos.
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 12:59.