Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: erikcatala en 6 Septiembre 2015, 21:47 pm



Título: Problema con form y adjuntar archivo
Publicado por: erikcatala en 6 Septiembre 2015, 21:47 pm
Tengo un form que me funciona a la perfecion, pero queria añadir una opcion para adjuntar un archivo pero no hay forma, nunca lo consigo. Esto es lo que tengo...

HTML:
Código
  1. <section id="main" class="container 75%">
  2. <header>
  3. <h2>Enviar text</h2>
  4. </header>
  5. <div class="box">
  6. <form action="archius.php" method="post">
  7. <div class="row uniform 50%">
  8. <div class="6u 12u(mobilep)">
  9. <input type="text" name="name" id="name" value="" placeholder="Nom i cognom" required/>
  10. </div>
  11. <div class="6u 12u(mobilep)">
  12. <input type="email" name="email" id="email" value="" placeholder="Correu electrònic" required/>
  13. </div>
  14. </div>
  15. <div class="row uniform 50%">
  16. <div class="12u">
  17. <input type="text" name="subject" id="subject" value="" placeholder="Raó" required/>
  18. </div>
  19. </div>
  20. <div class="row uniform 50%">
  21. <div class="12u">
  22. <textarea name="message" id="message" placeholder="Escriu el teu missatge" rows="6" required></textarea>
  23. </div>
  24. </div>
  25. <div class="row uniform">
  26. <div class="12u">
  27. <ul class="actions align-center">
  28. <li><input id="file" type="file" name="file" value="Adjuntar ficher" required/></li>
  29. </ul>
  30. </div>
  31. </div>
  32. <div class="row uniform">
  33. <div class="12u">
  34. <ul class="actions align-center">
  35. <li><input id="submit" type="submit" name="submit" value="Enviar" /></li>
  36. </ul>
  37. </div>
  38. </div>
  39. </form>
  40. </div>
  41. </section>
  42.  

PHP:
Código
  1. <?php
  2. $name = $_POST["name"];
  3. $email = $_POST["email"];
  4. $message = $_POST["message"];
  5. $file = $_POST["file"];
  6. $subject = $_POST["subject"];
  7. $para = "asdasd@asdasd.com";
  8. $titulo = "Acadèmia";
  9. $header = "De: " . $email;
  10. $msjCorreo = "Nom: $name\nCorreu: $email\nRaó: $subject\nArchiu: $file\n\nMissatge:\n$message";
  11.  
  12. if ($_POST["submit"]) {
  13. if (mail($para, $titulo, $msjCorreo, $header)) {
  14. echo '<script language="javascript">
  15. alert("Misatge enviat.");
  16. window.location.href = "/archius.html";
  17. </script>';
  18. } else {
  19. echo "Error.";
  20. }
  21. }
  22. ?>
  23.  

Por cierto, no se porque algunas letras me salen raras en el correo, acentos y eso... Es por utf-8 como lo podria arreglar?


Título: Re: Problema con form y adjuntar archivo
Publicado por: #!drvy en 7 Septiembre 2015, 17:40 pm
Lo estas haciendo muy mal. Un archivo ('type=file') NO se trata como un $_POST ni mucho menos. Tendrías que parsear el archivo, convertirlo a base64 y enviarlo de una forma completamente diferente.

Si no te quieres complicar, te recomiendo que utilices alguna librería ya hecha para esto como lo es
https://github.com/PHPMailer/PHPMailer

Tiene buena documentación y es bastante fácil de utilizar.

Saludos