Antes de poner el codigo, tengo que decir que mi objetivo es hacer una pequeña aplicacion que envie un correo electronico a una direccion dada con unos datos que se generan automaticamente dependiendo de la opcion que se elija. Inicialmente pense hacerlo en Java, pero tenia que escribir mucho, ademas de la interfaz y las ventanas y no tenia mucho tiempo , asi que decidi hacerla en html y php. Como es algo que solo iba a usar yo, no le he dado mucha importancia a la estetica, sino a la funcionalidad, ya que originalmente diseñe esto para que me ahorrara tiempo.
Paso codigo:
El HTML
Código HTML:
<?php if (isset ( $_COOKIE ["usrSndKey"] ) and isset ( $_COOKIE ["passSndKey"]) and ($_GET["usr"] == yes)) { ?> <html> <head> <meta charset="ISO-8859-1"> <title>Enviar clave</title> </head> <body style="background-color: black"> <?php if($_GET["mail"] == yes){?> <h4 style = "color:red">El mensaje ha sido enviado con exito</h4> <?php }?> <h1 style = "text-align: center; color: yellow">Bienvenido a la pantalla de envio de claves</h1> <br> <br> <div style = "position:relative; left:20px"> <form name = "envPass" method = "post" action = "envPass.php"> <h2 style = "color: white">1.- Seleccione el/los archivo(s) cuya contraseña desea(n) ser enviada(s)</h2> <p style = "color:white"> <input type="checkbox" name = "eleccion[0]" value="A moment in a million years(pdf)">A moment in a million years(pdf)<br> <input type="checkbox" name = "eleccion[1]" value="A moment in a million years(mid)">A moment in a million years(mid)<br> <input type="checkbox" name = "eleccion[2]" value="Card Captor Sakura Cap 26 (pdf)">Card Captor Sakura Cap 26 (pdf)<br> <input type="checkbox" name = "eleccion[3]" value="Card Captr Sakura Cap 27 (mid)">Card Captr Sakura Cap 27 (mid)<br> <input type="checkbox" name = "eleccion[4]" value="Another Dawn (pdf)">Another Dawn (pdf)<br> <input type="checkbox" name = "eleccion[5]" value="Deai (pdf)">Deai (pdf)<br> <input type="checkbox" name = "eleccion[6]" value="Deai(mid)">Deai(mid)<br> <input type="checkbox" name = "eleccion[7]" value="Eden World Theme 2 (pdf)">Eden World Theme 2 (pdf)<br> <input type="checkbox" name = "eleccion[8]" value="Melodia Sagrada (pdf)">Melodia Sagrada (pdf)<br> <input type="checkbox" name = "eleccion[9]" value="Saori theme (pdf)">Saori theme (pdf)<br> <input type="checkbox" name = "eleccion[10]" value="Super Duper Love Love Days (pdf)">Super Duper Love Love Days (pdf)<br> <input type="checkbox" name = "eleccion[11]" value="Tomo He (pdf)">Tomo He (pdf)<br> <input type="checkbox" name = "eleccion[12]" value="Tomo He (mid)">Tomo He (mid)<br> <input type="checkbox" name = "eleccion[13]" value="Yasashisa no Tane (pdf)">Yasashisa no Tane (pdf)<br> </p> <h2 style = "color: white">2.- Escriba la direccion email donde desea enviar la(s) clave(s) y el nombre del destinatario</h2> <p style = "color:white"> Nombre: <input type = "text" name = "nombre" value = ""> <br> <br> Correo: <input type = "text" name = "email" value = ""> </p> <h2 style = "color: white">3.- Escriba el asunto del mensaje</h2> <br> <input type = "text" name = "asunto" value = ""> <br> <h2 style = "color: white">4.- Seleccione si el mensaje desea que sea en ingles o en castellano</h2> <p style = "color:white"> <select name = "idioma"> <option value = "0">-------- <option value = "1">Castellano <option value = "2">Ingles </select> </p> <br> <input type = "submit" name = "env" value = "enviar" style = "position:relative; left: 650px"> </form> </div> <br> <br> </body> </html> <?php } else { ?> <html> <head> <meta charset="ISO-8859-1"> <title>Autentificacion de usuario</title> </head> <body style="background-color: black"> <div> <h1 style = "text-align: center;color: white">Autentificacion de Usuario</h1> <?php if($_GET["usr"] == no){?> <p style = "text-align: center; color: yellow">Usuario o contraseña incorrectos <?php }?> <form name = "auth" method = "post" action = "Authent.php"> <p style = "text-align: center; color: white">Nombre de Usuario: <input type="text" name="user" value=""> <p style = "text-align: center; color: white">Contraseña: <input type = "password" name = "pass" value = ""> <br> <br> <input name = "env" type = "submit" value = "enviar" style = "text-align: center"> </form> </div> </body> </html> <?php } ?>
Código PHP:
<?php
include 'data.php';
$i = 0;
$array;
foreach($_POST['eleccion'] as $indice => $valor ) {
$array[$i] = array($valor, $indice);
$i++;
}
for($j = 0; $j < $i; $j++){
$array[$j][1] = $sheet[$array[$j][1]];
}
for($j = 0; $j < $i; $j++){
$aux[$j] = $array[$j][0]." ==> ".$array[$j][1];
}
$name = $_POST["nombre"];
$correo = $_POST["email"];
$subj = $_POST["asunto"];
$lang = $_POST["idioma"];
if($lang == 0 or $name == "" or $correo == "" or $subj == ""){
echo "Te falto poner algunos datos. Vuelve atras";
}else{
if($lang == 1){
$mensaje = "Muy buenas, $name. Soy ****** y aqui te envio las claves de los siguientes archivos:\r\n
\r\n";
for($j = 0; $j < $i; $j++){
$mensaje = $mensaje ."$aux[$j]";
$mensaje = $mensaje."\r\n";
}
$mensaje = $mensaje."\r\n";
$mensaje = $mensaje."Espero que lo disfrutes y no olvides suscribirte :). Que tengas un buen dia";
mail($correo, $subj, $mensaje, "From: ls_52");
header("Location:userAuth.php?usr=yes&mail=yes");
}else{
if($lang == 2){
$mensaje = "Hi!, $name. I'm ****** and here you have the keys for this files:\r\n
\r\n";
for($j = 0; $j < $i; $j++){
$mensaje = $mensaje ."$aux[$j]";
$mensaje = $mensaje."\r\n";
}
$mensaje = $mensaje."\r\n";
$mensaje = $mensaje."I hope you enjoy that and do not forget to suscribe my channel :). Have a nice day";
mail($correo, $subj,$mensaje, "From: ls_52");
header("Location:userAuth.php?usr=yes&mail=yes");
}
}
}
?>
Código PHP:
if($lang == 0 or $name == "" or correo == "" or $subj == ""){
echo "Te falto poner algunos datos. Vuelve atras";
}
Ya estaba un poco desquiciado, asi que cree un documento php nuevo y le introduje esto:
Código PHP:
<?php
mail("[email protected]","example","example", "example");
?>
Cabe mencionar que cuando probe la aplicacion web por ultima vez (domingo), lo hice exigiendole lo maximo. Me explico mejor...En el codigo php hay unos cuantos bucles for cuya funcion es capturar las elecciones de la etiqueta <selection>, almacenar esos datos en un array multidimensional y luego agarrar ese array multidimensional y transformarlo a bidimensional para trabajar mejor con el. En condiciones normales, esos bucles solo harian 2 pasadas (en el caso de que solo seleccionara 2 elementos de la etiqueta <selection>) pero cuando ejecute por ultima vez el codigo, selleccione todas las casillas marcables, por lo que el bucle for tendria que hacer unas 13 pasadas cada uno. La pagina tardo un poco en cargar, pero al final me dijo que el mensaje habia sido enviado satisfactoriamente, pero ese mensaje nunca llego. Se me paso por la mente que a lo mejor ese bucle for habia entrado en algun bucle infinito, pero estudiando el codigo, parece que nunca podra entrar en ese tipo de circulo vicioso asi que descarto esa posibilidad.
Pensando que a lo mejor es algun fallo de mi correo electronico, me fui a otra web mia (en otro dominio), donde tambien tengo la opcion de enviar mensajes y para mi sorpresa, esos mensajes si llegan a mi correo. Por lo tanto, no es problema de mi correo. Ambas web's (tanto la que funciona bien como la que no) las tengo alojadas en Hostinger.es, pero en dominios distintos. Pense que Hostinger habia detectado el envio masivo de emails desde la pagina web (la que ya no va bien) y por eso ya no podia enviar correos, asi que para comprobar si eso podia ser, me fui a la web que si funciona bien y realice un envio masivo de correos, pero sin embargo puedo seguir enviando correo sin problemas. Compare ambos codigos para ver si algo se me habia pasado por alto, pero lo esencial para que funcione el metodo mail() es igual en ambos codigos.
La verdad es que estoy un poco perdido porque ya no se que puede estar fallando. Y que un dia me funcione y al otro no hace pensar que el problema no es de codigo, pero a lo mejor modifique algo sin darme cuenta y no encuentro el fallo por ningun lado.
Antes de publicar ninguna respuesta, ruego que se abstengan de comentar cosas como "vaya chapuza" o "eso es mejor hacerlo en c++ o java". Soy consciente que parece que el remedio fue peor que la enfermedad y en un intento de ahorrarme tiempo haciendolo en html y php solo me ha generado problemas, pero llegados a este punto me gustaria saber donde esta fallando mi codigo para que no me vuelva a suceder.
Muchas gracias por su atencion y espero que haya alguien en el foro que pueda ayudarme :).