1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Como recoger direcciones de correo en tu web ?

Tema en 'Programación y Diseño Web' iniciado por OFFICERTOM, 25 Sep 2011.

  1. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Hola,

    Estoy intentando hacer una web de una sola página anunciando el próximo lanzamiento de un servicio. Quiero que los visitantes de la página que deseen recibir información cuando este listo el servicio, puedan escribir su dirección de correo en una casilla de la misma página y al pulsar "enviar", esta quede registrada en una base de datos mysql, y aparezca un mensaje de confirmación para el visitante en la misma página.

    Tengo poca idea de programación web. Algo me manejo con php y html, pero mejor si alguien me puede dar un código tipo completo que lo pueda terminar de editar yo mismo con los datos relativos a la BBDD empleada.

    Gracias de antemano!
     
  2.  
  3. Sphyr0

    Sphyr0 Usuario activo

    Hola. Si hay dinero de por medio, seguro habra mas interesados en darte el codigo completo hehe :rolleyes: pero igual puedes buscar en google ;)
     
  4. jame369

    jame369 Nuevo usuario

    yo todo no lo voy hacer por que no me apetece pero si quieres te guio un poco

    tienes que crear una base de datos en mysql y una tabla para contener los correos con php tienes que conectarte a mysql y guardar los correos en la tabla te paso unos ejemplos muy simples que si investigas quistas lo puedas hacer

    Conectar con mysql
    PHP:
    <?php
    $link 
    =  mysql_connect('localhost''mysql_user''mysql_password');
    if (!
    $link) {
        die(
    'No pudo conectarse: ' mysql_error());
    }
    echo 
    'Conectado  satisfactoriamente';
    mysql_close($link);
    ?>
    Ejecutar consultas MYSQL desde PHP
    PHP:
    <?php
    $result 
    mysql_query('SELECT * WHERE 1=1');
    if (!
    $result) {
        die(
    'Invalid query: ' mysql_error());
    }

    ?>
    visita esta pagina
    php.net/manual/es/ref.mysql.php
     
  5. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Poco a poco me voy acercando pero todavía no me funciona. Me da error en la linea 12. En la base de datos tengo solo campo que es "email". Este es el código PHP que estoy utilizando:

    Si alguien me puede echar una mano con esto aunque sea cobrando, estoy dispuesto a ello. Gracias a todos.
     
  6. ideasmultiples

    ideasmultiples Usuario activo

    Te falta un paréntesis en esta línea:
    if(!empty($my_error) {

    debe de ser

    if(!empty($my_error) ){

    :cool:
     
  7. Sphyr0

    Sphyr0 Usuario activo

    Como sugerencia puedo comentarte que reemplaces esta linea

    CODE, HTML o PHP Insertado:
    mysql_query("INSERT INTO emails (email) VALUES ('{$_POST['email']}')",$link);
    Por

    CODE, HTML o PHP Insertado:
    mysql_query("INSERT INTO emails (email) VALUES ('".mysql_real_escape_string($_POST['email'],$link)."')",$link);
    Le dara un poco de seguridad a tu codigo ;)
     
  8. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Gracias, he hecho los dos cambios que me acabáis de sugerir pero me sigue dando error en la sintaxis de:

     
  9. Sphyr0

    Sphyr0 Usuario activo

    Que error te da?

    CODE, HTML o PHP Insertado:
    <?php
    if(isset($_POST['email']) && !empty($_POST['email'])) {
    $link = mysql_connect("DBhost","emailsquesabes","*******");
    mysql_select_db("emailsquesabes",$link);
    mysql_query("INSERT INTO emails (email) VALUES ('".mysql_real_escape_string($_POST['email'],$link)."')",$link);
    
    $my_error = mysql_error($link);
    if(!empty($my_error)) {
    echo "Ha habido un error al insertar los valores. $my_error";
    } else {
    echo "Los datos han sido introducidos satisfactoriamente";
    }
    } else {
    echo "Error, no ha introducido todos los datos";
    }
    ?>
     
  10. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Este

    La linea 17 es:

    No se que es lo que puede ser.
     
  11. Sphyr0

    Sphyr0 Usuario activo

    A parte del codigo que publicaste y puse en mi post anterior, tienes mas en el mismo archivo? Lo pregunto porque del codigo son 16 lineas (si lo se... aun asi puede darte error en la 17) pero en si lo acabo de testear y no me marca ningun error (haciendo a un lado el tema de la conexion a la base de datos...)
     
  12. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Esta es la la parte del código correspondiente al formulario (sólo contiene el campo para introducir el email) y a la acción:

    <form name="myform" method="POST" style="position:absolute; width:448px; height:46px; left:588px; top:158px; " >
    <input type="text" value="" style="position:absolute; height:33px; width:310px; left:5px; top:4px; " name="email" />


     
  13. Sphyr0

    Sphyr0 Usuario activo

    El unico "error" que veo es en

    CODE, HTML o PHP Insertado:
    mysq l_query("INS...
    Asi como en otro post mas arriba y que corregi con el codigo completo

    CODE, HTML o PHP Insertado:
    mysql_q uery("INS...
    Trata de cero con este, porque tampoco me da error:

    CODE, HTML o PHP Insertado:
    <form name="myform" method="POST" style="position:absolute; width:448px; height:46px; left:588px; top:158px; " >
    <input type="text" value="" style="position:absolute; height:33px; width:310px; left:5px; top:4px; " name="email" />
    <input style="margin-bottom:0; position:absolute; padding-top:0; padding-bottom:0; padding-right:22px; width:110px; height:53px; left:318px; top:14px; " type="submit" value="Enviar" /></form><div style="position:absolute; top:100px; left:100px; width:100px; height:100px; "><?php
    if(isset($_POST['email']) && !empty($_POST['email'])) {
    $link = mysql_connect("DBhost","emailsquesabes","DBpasswor d");
    mysql_select_db("emailsquesabes",$link);
    mysql_query("INSERT INTO emails (email) VALUES ('".mysql_real_escape_string($_POST['email'],$link)."')",$link);
    $my_error = mysql_error($link);
    if(!empty($my_error)) {
    echo "Ha habido un error al insertar los valores. $my_error";
    } else {
    echo "Los datos han sido introducidos satisfactoriamente";
    }
    } else {
    echo "Error, no ha introducido todos los datos";
    }
    ?>
     
  14. OFFICERTOM

    OFFICERTOM Nuevo usuario

    Genial Racer! Ya funciona. No da error y escribe perfectamente en la base de datos. No sé donde podía estar el error.

    Lo único que me ocurre ahora, es que al cargar la página por primera vez y sin haber introducido ninguna dirección de correo todavía me sale de entrada el mensaje "Error, no ha introducido toso los datos".

    ¿Se puede evitar eso en la primera vez que carga la página?
     
  15. jame369

    jame369 Nuevo usuario

    <?php
    if ( $_POST['email'] == NULL)
    {
    echo '<form name="form1" method="post" action="index.php">
    <input type="text" name="email" id="email">
    <input type="submit" name="button" id="button" value="Enviar">
    </form>';
    }
    else
    {
    $VarEmail = $_POST['email'];
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link)
    {
    die('Not connected : ' . mysql_error());
    }
    $db_selected = mysql_select_db('dbfoo', $link);
    if (!$db_selected)
    {
    die ('Error al seleccionar dbfoo: ' . mysql_error());
    }
    $result = mysql_query("INSERT INTO emails (email) VALUES ('$VarEmail')");
    if (!$result)
    {
    die('Invalid query: ' . mysql_error());
    }
    }
    ?> ahi tienes un ejemplo si carga por primera ves te pide que introduzca datos y si envías un campo vació no lo envía y si quieres podes poner que si el email ya esta registrado que de un aviso
     
  16. Sphyr0

    Sphyr0 Usuario activo

    He tomado el ejemplo del forero jame369 y le hice pequeños cambios ;)

    PHP:
    <?php
    if(empty($_POST['email'])) {
    echo <<<FORM
    <form name="form1" method="post" action="index.php">
    <input type="text" name="email" id="email" />
    <input type="submit" name="button" id="button" value="Enviar" />
    </form>
    FORM;
    } else {
    $VarEmail htmlentities($_POST['email']);
    if(!
    preg_match("/^[a-z0-9\._-]+@[a-z0-9_-]+\.([a-z0-9_-]+\.)*?[a-z]+$/",$VarEmail)) {
    exit(
    "Correo Invalido");
    }
    $link mysql_connect("localhost""user""pass") or exit("Not connected: <b>".mysql_error()." (".mysql_errno().")</b>");
    mysql_select_db("db"$link) or exit("Error al seleccionar la db: <b>".mysql_error()." (".mysql_errno().")</b>");
    mysql_query("INSERT INTO emails (email) VALUES ('".mysql_real_escape_string($VarEmail,$link)."')",$link) or exit("Invalid query: <b>".mysql_error()." (".mysql_errno().")</b>");
    echo 
    "Todo bien";
    }
    ?>
    Pero te sugiero por seguridad que al script que pongas en produccion le reemplaces lo de

    PHP:
    ".mysql_error()." (".mysql_errno().")
    Pues eso es para debugging nada mas ;)
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·