Formularios con mensaje automático

Estado
No está abierto para más respuestas.
Mensajes
399
Puntuación de reacción
2
Quisiera crear un formulario, y que al darle a enviar, se le envíe un correo al usuario. Pero no sé cómo hacerlo, tengo solo hecho el formulario con su HTML y CSS pero no sé cómo hacer que se envíe el mensaje automáticamente.
El HTML es el siguiente:

<form action="#" method="post">
<fieldset>
<label for="name">Nombre:</label>
<input type="text" id="name" placeholder="" />

<label for="email">Correo electrónico:</label>
<input type="email" id="email" placeholder="" />
<input type="submit" value="Registrarme"/>

</fieldset>
</form>

¿Alguna solución?
 

Steeep

Cobre
Usuario de Bronce
Mensajes
607
Puntuación de reacción
0
No entendí muy bien que es lo que quieres, pero con PHP es bastante fácil :)
Que es lo que quieres que se le envié al usuario? Que es lo que hace el usuario y porque envía o usa ese formulario?

Danos detalles para ayudarte mejor :p
 
Mensajes
399
Puntuación de reacción
2
El formulario es para enviar al correo que indique el usuario un mensaje con una clave para poder ingresar en una web y poder adquirir un tutorial gratuito.
 

Steeep

Cobre
Usuario de Bronce
Mensajes
607
Puntuación de reacción
0
El formulario en el HTML:

Cambias el form así:
HTML:
<form action="form.php" method="post">

Le agregas al final esto:
HTML:
<input type="hidden" name="formt" id="formt" />

En el php, le pones el nombre que quieras al archivo, en esta caso form.php y el código sería algo así:

Código:
<?php

if($_POST['formt'])
{
    $name  = htmlspecialchars($_POST['name']);
    $email = check_email_address($_POST['email']);
    
    if($name == '' && empty($name))
        $error = "El campo del nombre no puede estar vacio.<br />";
        
    if($email == '' && empty($email))
    {
        $error .= "El campo del email no puede estar vacio.";
    }
    elseif(!check_email_address($email))
    {
        $error .= $email.' no es una dirección válida de correo.';
    }
    // Si todo esta correcto seguimos..
    
    $codeunique = substr(md5(md5(time())), 7);
    
    //Haces un insercción en una base de datos para que no se repitan y que se compruebe que el código puede ser usado una sola vez
    
    //Envias el código al email del usuario.
    //Bla bla bla XD Ando con poco tiempo..
}
else
{
    echo "No se ha enviado el formulario, se muestra otra vez.";
}




function check_email_address($email) 
{
    if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) 
    {
        return false;
    }
    $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])) 
    { 
        $domain_array = explode(".", $email_array[1]);
        if (sizeof($domain_array) < 2) 
        {
            return false;
        }
        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;
}

?>

Busca alguna librería en PHP para enviar correos, si mal no recuerdo una bien buena que hay se llama PHPMailer.
 
Última edición:

feltoxXx

Cobre
Usuario de Bronce
Mensajes
916
Puntuación de reacción
0
bue por lo que veo pues en el action le pusiste un #, bien pudieras dejarlo sin nada y que el codigo se ejecute desde el mismo fichero donde esta el form, y ademas al submit debes ponerle un campo name que seria el que ejecuta la accion, algo asi:

<form action="" method="post">
<fieldset>
<label for="name">Nombre:</label>
<input type="text" id="name" placeholder="" />

<label for="email">Correo electrónico:</label>
<input type="email" id="email" placeholder="" />
<input type="submit" name"registrarme" value="Registrarme"/>

</fieldset>
</form>

luego pegas este codigo que seria el que maneja la accion del submit que es "Registrarme", quedando algo como:



<?php
/*Primero comprobamos, con 'isset', que estamos recibiendo las variables por POST.
Con '!empty' miramos que los campos no estén vacíos.*/

if(isset($_POST['registrarme']))

{
$destino = $_POST['email'];
$salida = 'Desde: ' . 'TuWeb o Tu Correo';
$asunto = 'asunto'; //aqui el asunto que quieras ponerle
$mensaje = 'mensaje'; //y aqui el mensaje

mail($destino,$asunto, mensaje, $salida);

echo 'Tu correo se ha enviado con éxito';
}else{
echo 'Error al enviar el correo';
}

?>


Edito: bue ya esta mas que claro... jejejejejejeje... espero te sirva...
 
Mensajes
399
Puntuación de reacción
2
He probado ambos pero los dos muestran el error de que no se ha podido enviar el correo. Siguiendo el ejemplo de FeltoxXx, me queda:

<form action="registro.php" method="post">
<fieldset>
<label for="name">Nombre:</label>
<input type="text" id="name" placeholder="" />

<label for="email">Correo electrónico:</label>
<input type="email" id="email" placeholder="" />
<input type="submit" name"registrarme" value="Registrarme"/>

</fieldset>
</form>

Y en el registro.php:

<?php
/*Primero comprobamos, con 'isset', que estamos recibiendo las variables por POST.
Con '!empty' miramos que los campos no estén vacíos.*/

if(isset($_POST['registrarme']))

{
$destino = $_POST['email'];
$salida = 'Desde: ' . 'campamentoweb@gmail.com';
$asunto = 'Bienvenido a Negoz'; //aqui el asunto que quieras ponerle
$mensaje = 'Ejemplo'; //y aqui el mensaje

mail($destino,$asunto, mensaje, $salida);

echo 'Tu correo se ha enviado con éxito';
}else{
echo 'Error al enviar el correo';
}

?>

¿Qué he hecho mal? :S
 

feltoxXx

Cobre
Usuario de Bronce
Mensajes
916
Puntuación de reacción
0
seguro desde el servidor no tienes la opcion de enviar mensajes de correo... dejame ver que otra funcion existe para el envio de correo...

Que error te aparece???

lo que dice error al enviar el correo???
 

Steeep

Cobre
Usuario de Bronce
Mensajes
607
Puntuación de reacción
0
Recuerda tienes que usar alguna librería y es mas, puede que tengas que usar algún servidor SMTP, como el de Gmail.
 

feltoxXx

Cobre
Usuario de Bronce
Mensajes
916
Puntuación de reacción
0
cambia esto: $salida = 'Desde: ' . 'campamentoweb@gmail.com';

por esto: $salida = 'campamentoweb@gmail.com';

a ver que tal... bien raro vale...
 

feltoxXx

Cobre
Usuario de Bronce
Mensajes
916
Puntuación de reacción
0
Que porfiado que eres.. El correo no se va a enviar de un servidor que no existe.

Enviar correo electrónico con PHP mediante PHPMailer « F&A Software Dev.
Enviar Email con PHP y Gmail | unijimpe

- - - Updated - - -

Que porfiado que eres.. El correo no se va a enviar de un servidor que no existe.

Enviar correo electrónico con PHP mediante PHPMailer « F&A Software Dev.
Enviar Email con PHP y Gmail | unijimpe

bueno la verdad el no ha dicho si esta probando desde su pc o lo tiene montado en un hosting pago... porque hasta los hosting gratis tienen la funcion mail desactivada...

bue y si lo porfiado es conmigo pues le paso eso porque asi envie varios correos en una web loca que monte en mis inicios...

saludos... a veces es mejor no ayudar para no recibir este tipo de comentarios...
 

Steeep

Cobre
Usuario de Bronce
Mensajes
607
Puntuación de reacción
0
Menos podrá hacerlo si no lo hace con un servidor externo y dudo también que pueda hacerlo desde localhost.
 

Steeep

Cobre
Usuario de Bronce
Mensajes
607
Puntuación de reacción
0
Lo hago desde un hosting gratuito (Hosting gratuito, hosting gratis, alojamiento web gratuito, free host), así que entonces visto vuestros mensajes no podré hacerlo. Pero de todas formas muchas gracias a los dos por intentar ayudarme, guardaré vuestros códigos para un futuro :)

Y no os peleéis, que los dos sois gente maravillosa y no merece la pena enfadarse ;)

Si puedes hacerlo, revisa los enlaces que te deje, solo necesitas un servidor externo, gmail es la mejor opción.
 
Estado
No está abierto para más respuestas.
Arriba