[SOLUCIONADO] Problema con pagina de contacto (Llenar formulario)

Iniciado por Rampe, Octubre 06, 2013, 09:23:37 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 06, 2013, 09:23:37 PM Ultima modificación: Octubre 25, 2013, 01:18:11 PM por Expermicid
Buenas tardes underc0de ^_^ ah pasado un tiempo de haberme registrado y me he puesto a leer bastante mas últimamente lo de de PHP y pensé armar algo sencillo algo como un libro de visitas o un contacto... arme el diseño sencillo (cuadros y demás detalles)... Todo bien hasta me tope con el tema de al completar el formulario como recibir ese mensaje investigue bastante y encontré esto:

Código: php
<?php
          // Set-up these 3 parameters
          // 1. Enter the email address you would like the enquiry sent to
          // 2. Enter the subject of the email you will receive, when someone contacts you
          // 3. Enter the text that you would like the user to see once they submit the contact form
          $to = ' ';
          $subject = ' ';
          $contact_submitted = 'Tu mensaje ha sido enviado.';

          // Do not amend anything below here, unless you know PHP
          function email_is_valid($email) {
            return preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i',$email);
          }
          if (!email_is_valid($to)) {
            echo '<p style="color: red;">Usted debe poner una direccion de correo valido para que funcione esta página.</p>';
          }
          if (isset($_POST['contact_submitted'])) {
            $return = "\r";
            $youremail = trim(htmlspecialchars($_POST['your_email']));
            $yourname = stripslashes(strip_tags($_POST['your_name']));
            $yourmessage = stripslashes(strip_tags($_POST['your_message']));
            $contact_name = "Name: ".$yourname;
            $message_text = "Message: ".$yourmessage;
            $user_answer = trim(htmlspecialchars($_POST['user_answer']));
            $answer = trim(htmlspecialchars($_POST['answer']));
            $message = $contact_name . $return . $message_text;
            $headers = "From: ".$youremail;
            if (email_is_valid($youremail) && !eregi("\r",$youremail) && !eregi("\n",$youremail) && $yourname != "" && $yourmessage != "" && substr(md5($user_answer),5,10) === $answer) {
              mail($to,$subject,$message,$headers);
              $yourname = '';
              $youremail = '';
              $yourmessage = '';
              echo '<p style="color: blue;">'.$contact_submitted.'</p>';
            }
            else echo '<p style="color: red;">Por favor, introduzca su nombre, una dirección de correo electrónico válida, el mensaje y la respuesta a la simple pregunta matemática antes de enviar el mensaje.</p>';
          }
          $number_1 = rand(1, 9);
          $number_2 = rand(1, 9);
          $answer = substr(md5($number_1+$number_2),5,10);
        ?>


He probado bastante jugado :D con el código pero no logro hacerlo funcionar :/ correctamente osea envía el mensaje pero no lo recibo en el correo :/ pensé funcionaba de otra forma sin embargo luego de investigar un tiempo no logro encontrar mi error :( por eso necesitaría una guía o como salir de este problema :)

Espero haberme explicado bien aveces me lió un poco con mis explicaciones xD

tienes que habilitar SMTP en tu servidor local así: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

espero sea eso, avísame cualquier cosa

saludos!
Nivel 77 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

¿Estás corriendo el script en tu servidor local, en algún Hosting o un VPS?. Todo varia dependiendo y a continuación de explico un poco:

Si lo estas corriendo desde localhost y no te envia los correos es probable {como ya te comento jx4nk00} que no tengas ó instalado un servidor SMTP ó éste mal configurado; para ésto te recomiendo la clase PHPMailer la cual a base de credenciales de un correo (en éste caso gmail generalmente) te envía correctamente, lo único que deberás hacer es modificar el archivo php.ini y cambiar ;extension=php_openssl.dll por extension=php_openssl.dll.

Si lo estas corriendo desde un hosting o un vps, checa que SMTP igual, que no este en black list o saturado; de igual manera PHPMailer es una buena alternativa.

Con poca información al respecto, por mi parte es todo.

Saludos,
Xt3mP.
Cada vez que me das Karma me motivas

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
tienes que habilitar SMTP en tu servidor local así: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

espero sea eso, avísame cualquier cosa

saludos!

Muchas gracias :D me servirá mucho :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
¿Estás corriendo el script en tu servidor local, en algún Hosting o un VPS?. Todo varia dependiendo y a continuación de explico un poco:

Si lo estas corriendo desde localhost y no te envia los correos es probable {como ya te comento jx4nk00} que no tengas ó instalado un servidor SMTP ó éste mal configurado; para ésto te recomiendo la clase PHPMailer la cual a base de credenciales de un correo (en éste caso gmail generalmente) te envía correctamente, lo único que deberás hacer es modificar el archivo php.ini y cambiar ;extension=php_openssl.dll por extension=php_openssl.dll.

Si lo estas corriendo desde un hosting o un vps, checa que SMTP igual, que no este en black list o saturado; de igual manera PHPMailer es una buena alternativa.

Con poca información al respecto, por mi parte es todo.

Saludos,
Xt3mP.

Lo ando corriendo en localhost, lo de PHPMailer lo probé pero nunca pude configurarlo correctamente :( por eso lo deje supongo lo tengo que volver a tocar...

Sin embargo evaluándolo un poco seguro en hosting gratuitos no funcionara, así que debería pensar en configurarlo en uno pago... en ese caso ¿Cómo debería ponerlo en código?como debería ponerlo (teniendo ya los datos del STMP)

SMTP server: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
SMTP port: 465
SMTP username: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta <-- reemplazalo con tu cuenta de gmail y la password.

Investigando un poco conseguí estos datos, ¿Cómo debería usarlos?... Lo de php.ini ya lo revisare hablando de los mismo al activar lo de las url´s cuando lo dejo y vuelvo abrirlo me aparece error :S ¿Que debería cambiar exactamente para no me pase esto? o ¿Debido a que me pasa?

Saludos!

PD: Muchas gracias por las ayudas :) me sirven un montón aunque me falta aprender mas aun :/

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
tienes que habilitar SMTP en tu servidor local así: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

espero sea eso, avísame cualquier cosa

saludos!

Muchas gracias :D me servirá mucho :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
¿Estás corriendo el script en tu servidor local, en algún Hosting o un VPS?. Todo varia dependiendo y a continuación de explico un poco:

Si lo estas corriendo desde localhost y no te envia los correos es probable {como ya te comento jx4nk00} que no tengas ó instalado un servidor SMTP ó éste mal configurado; para ésto te recomiendo la clase PHPMailer la cual a base de credenciales de un correo (en éste caso gmail generalmente) te envía correctamente, lo único que deberás hacer es modificar el archivo php.ini y cambiar ;extension=php_openssl.dll por extension=php_openssl.dll.

Si lo estas corriendo desde un hosting o un vps, checa que SMTP igual, que no este en black list o saturado; de igual manera PHPMailer es una buena alternativa.

Con poca información al respecto, por mi parte es todo.

Saludos,
Xt3mP.

Lo ando corriendo en localhost, lo de PHPMailer lo probé pero nunca pude configurarlo correctamente :( por eso lo deje supongo lo tengo que volver a tocar...

Sin embargo evaluándolo un poco seguro en hosting gratuitos no funcionara, así que debería pensar en configurarlo en uno pago... en ese caso ¿Cómo debería ponerlo en código?como debería ponerlo (teniendo ya los datos del STMP)

SMTP server: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
SMTP port: 465
SMTP username: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta <-- reemplazalo con tu cuenta de gmail y la password.

Investigando un poco conseguí estos datos, ¿Cómo debería usarlos?... Lo de php.ini ya lo revisare hablando de los mismo al activar lo de las url´s cuando lo dejo y vuelvo abrirlo me aparece error :S ¿Que debería cambiar exactamente para no me pase esto? o ¿Debido a que me pasa?

Saludos!

PD: Muchas gracias por las ayudas :) me sirven un montón aunque me falta aprender mas aun :/

tu código actual, es un desastre, desconozco de donde lo haz sacado pero tendrás que usar otro.

usa funciones que están obsoletas tales como eregi No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

también revisas que el mail esté bien en una variable vacía, cosa que siempre dará mal.

y esto para empezar jejeje, no te lo tomes a mal, pero busca otro código

Respecto a tu problema, si usas xampp sobre windows no te funcionará nunca la función mail (por lo menos no con la configuración por default)

La documentación oficial sobre la función Mail:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

de todos modos, deberías probar como dice xtemp con la clase PHPMailer, no vi mucha gente que tenga problemas con ella.

SMTP server: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
SMTP port: 465
SMTP username: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta <-- reemplazalo con tu cuenta de gmail y la password.

eso es el servidor de google, si usaras SMTP, no obstante tu usas directamente mail, por lo que eso no te sirve, si usaras phpmailer si te sirve xD

un saludo, y no te tomes a mal mi coment, va con toda la buena onda y para que mejores :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
tu código actual, es un desastre, desconozco de donde lo haz sacado pero tendrás que usar otro.

usa funciones que están obsoletas tales como eregi No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

también revisas que el mail esté bien en una variable vacía, cosa que siempre dará mal.

y esto para empezar jejeje, no te lo tomes a mal, pero busca otro código

Respecto a tu problema, si usas xampp sobre windows no te funcionará nunca la función mail (por lo menos no con la configuración por default)

La documentación oficial sobre la función Mail:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

de todos modos, deberías probar como dice xtemp con la clase PHPMailer, no vi mucha gente que tenga problemas con ella.

SMTP server: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
SMTP port: 465
SMTP username: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta <-- reemplazalo con tu cuenta de gmail y la password.

eso es el servidor de google, si usaras SMTP, no obstante tu usas directamente mail, por lo que eso no te sirve, si usaras phpmailer si te sirve xD

un saludo, y no te tomes a mal mi coment, va con toda la buena onda y para que mejores :)

:D todo bien por eso comente :) para ver mis horrores xD mis errores... cual otro código me recomendarías :S no soy tan bueno buscando aunque trato aprender ;D... el phpmailer lo había probado en un hosting y no podía hacerlo andar desde hay me puse a tratar de aprender PHP mejor... No uso xampp he escuchado sobre el pero me decidí usar wamp.

Muchas gracias en verdad :D alexmanycol me sirvió mucho tu comentario :) pase mucho tiempo y no veia el problema :( de por que no andaba y ahora se que me debo actualizar mas ;)

[Como me dicen aveces de los errores se aprende mas que no tener ninguno o algo así xD]


Saludos!

la funcion mail anda y no es muy complicada fijate busca ejemplos simples o en el link q te pase, en lo q respecta a configuracion es muy parecido xampp a wampp.

saludos

nunca me gustó phpmailer, siempre tiene problemas de alguna forma... yo prefiero usar la función mail() nativa de php, recuerda habilitar los mensajes de errores de php y sabrás que sucede, si tienes algún problema con el servidor de correos entonces debería acusar php en algún warning o error fatal.
- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Octubre 08, 2013, 10:24:27 AM #8 Ultima modificación: Octubre 08, 2013, 10:26:30 AM por Rampe
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
nunca me gustó phpmailer, siempre tiene problemas de alguna forma... yo prefiero usar la función mail() nativa de php, recuerda habilitar los mensajes de errores de php y sabrás que sucede, si tienes algún problema con el servidor de correos entonces debería acusar php en algún warning o error fatal.

Si por eso no me gusta también prefiero PHP pero con el trabajo no me deja mucho tiempo para estudiarlo adecuadamente por eso digamos voy aprendiendo sobre la marcha... lo de wamp cuando ande en mi casa lo probare mientras veo si el código lo limpio y actualizo... llegue a esto aunque como quiero agregarlo en mitad un archivo html no ando seguro como ira:

Código: php
<?php
if(isset($_POST['email'])) {

$email_to = "[email protected]";
$email_subject = "Contacto";

if(!isset($_POST['first_name']) ||
!isset($_POST['email']) ||
!isset($_POST['comments'])) {

echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
echo "Por favor, vuelva atrás y verifique la información ingresada<br />";
die();
}

$email_message = "Detalles del formulario de contacto:\n\n";
$email_message .= "Nombre: " . $_POST['first_name'] . "\n";
$email_message .= "E-mail: " . $_POST['email'] . "\n";
$email_message .= "Comentarios: " . $_POST['comments'] . "\n\n";

$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);

echo "¡El formulario se ha enviado con éxito!";
}
?>


Pensé era medianamente sencillo pero es un poco mas complejo de lo esperado a mi nivel por eso tengo muchas lagunas y no comprendo mucho... por eso muchas gracias por explicarme y guiarme un poco en esto ^_^ ademas espero también comprendan mis horrores errores de código!


Saludos!

Es importante Rampe, que empiezes a hacer las cosas bien, en la programación hay dos caminos, el camino fácil y el camino dificil, en realidad no es tan así, el camino dificil no es que sea dificil sino más bien que te llevará un poco más de tiempo y siempre está el camino fácil que te atrae.

Es importante que empiezes a pensar en separar cosas como el html del código php, en archivos diferentes, ¿por qué? porque si tienes las cosas separadas y ordenadas tu código será más limpio y ordenado.
Además es necesario que empiezes a indentar por ejemplo, para que tu código sea más entendible.

Lo malo de php es que hay mucha gente que dice saber mucho y hace cosas horrorosas.

Y como decía en un libro, en la programación no hay balas de plata (que maten a los vampiros chupasangres, que son esos códigos horrorosos jajaja)

El hecho es que tienes dos cosas que aprender por paralelo (que en realidad van por la misma linea)

Primero a hacer un buen código, con buena estructura, ordenado y limpio.

Segundo a aprender a programar.

Volviendo al tema del post, la función mail anda bien, quizá no en localhost si no lo configuras bien, pero en servidores la gran mayoría si.

saludos!