Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+MySQL] Wysyłanie e-mail w php
Forum PHP.pl > Forum > Przedszkole
miccom
Witam wszystkich.
Przeczytałem manual, przeszukałem forum, przeszukałem google i nie znalazłem.
Co chcę zrobić?

Otóż pracuję na przypomnieniem hasła.
I tak. Aby przypomnieć ( a właściwie ustalić nowe) hasło user podaje e-mail podany podczas rejestracji, jeśli e-mail jest poprawny wyświetlam pytanie( które user podał podczas rejestracji) i user wpisuje odpowiedź.
Wysyłam odpowiedź do skryptu sprawdz.php.

  1. <?
  2. require_once('./config.php'); // załaczamy plik config.php
  3.  
  4. $odp=$_POST['odp'];
  5. $email=$_POST['email'];
  6. $query = "SELECT 'odp' FROM user WHERE 'email'='$email'";
  7. $result = @mysql_query($query);
  8. $result=$odpb;
  9. if ($odpb = $odp){ //jezeli nie wystapily zadne bledy
  10. i co dalej?questionmark.gif
  11. $message .= 'Odpowiedź prawidłowa. Email z nowym hasłem został wysłany. ';
  12. }else{
  13. $message .= 'Wystapił błąd. Przepraszamy.<br />';
  14. }
  15.  
  16.  
  17. ?>



I jeśli odpowiedz podana jest taka sama jak odpowiedź w bazie danych chcę wysłać e-mail do usera z wygenerowanym nowym hasłem.
Ale stanąłem na tym
  1. <?php
  2. if ($odpb = $odp){ //jezeli nie wystapily zadne bledy
  3. i co dalej?questionmark.gif
  4. $message .= 'Odpowiedź prawidłowa. Email z nowym hasłem został wysłany. ';
  5. }else{
  6. $message .= 'Wystapił błąd. Przepraszamy.<br />';
  7. }
  8. ?>

i nie wiem jaką komendę( zapytanie) tu wpisać aby został wysłany e-mail na adres $email.
Proszę o pomoc za którą bardzo dziękuję . Pozdrawiam. miccom
nospor
nie: $query = "SELECT 'odp' FROM user WHERE 'email'='$email'";
a: $query = "SELECT odp FROM user WHERE email='$email'";

nazw kolumn nie bierze sie w ciapki bo traktowane so wowczas jako tekst a nie kolumna. Od biedy mozna brac w ``

Po drugie: to czego nie wiesz? Jak wyslac maila? Zainteresuj sie klasą PHPMailer

Cytat
Wysyłanie e-mail z poziomu mysql.
I zmien ten tytul... z poziomu mysql zadnego maila nie wyslesz. Od tego masz php.
miccom
poprawione.
Chcę automatycznie wysłać maila po sprawdzeniu pewnych danych w bazie. Dla mnie to nie takie oczywiste;/
nospor
No to dlatego ci mowie: zainteresuj sie klasą PHPMailer.

POzatym masz jeszcze pare bledow. mysql_query zwraca resource a nie wartosc. musisz uzyc mysql_fetch_array. pozatym w if nie = a == - jest roznica, jak nie wiesz jaka to zainteresuj sie manualem.

  1. <?php
  2. $result = mysql_query($query) or die (mysql_error());
  3. $row=mysql_fetch_array($result);
  4. if ($row['odp'] == $odp){ //jezeli nie wystapily zadne bledy
  5. //tu twoj kod wysylki maila przy pomocy PHPMailer
  6. $message .= 'Odpowiedź prawidłowa. Email z nowym hasłem został wysłany. ';
  7. }else{
  8. $message .= 'Wystapił błąd. Przepraszamy.<br />';
  9. }
  10. ?>
miccom
Witam. Już doszedłem do tego. Serwer na którym "stoją" te skrypty ma wyłączoną funkcję mail()
Dla szukających podobnych skryptów zamieszczam je poniżej z komentarzami.

przypomnienie.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <head>
  4. <title>Przypomnienie hasla</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  6. </head>
  7. <table width="380" border="0" cellpadding="3" cellspacing="1" >
  8. <tr>
  9. <td width="33%"><strong>Podaj swój e-mail : </strong></td>
  10. <td width="67%"><form name="form1" method="post" action="wyslij.php"><br />
  11. <input name="email_to" type="text" id="mail_to" size="25">
  12. <input type="submit" name="Submit" value="Wyślij">
  13. </form>
  14. </td>
  15. </tr>
  16. </body>
  17. </html>



i skrypt wysyłający e-maile

wyślij.php
  1. <?
  2. $host="localhost"; 
  3. $username="użytkownik_bazy_danych"; 
  4. $password="hasło_do_bazy"; 
  5. $db_name="nazwa_bazy"; 
  6. //połączenie z bazą
  7. mysql_connect("$host", "$username", "$password")or die("Nie mogę sie połaczyć z serwerem");
  8. mysql_select_db("$db_name")or die("Nie mogę wybrać bazy");
  9.  
  10. // zmienna przesłana z formularza przypomnienie.php
  11. $email_to=$_POST['email_to'];
  12.  
  13. $query=("SELECT `alt`, `nazwa` FROM user WHERE email ='$email_to'");//gdzie "alt" to hasło( podczas rejestracji zapisujemy haslo jako md5(haslo)
  14. //a "alt" jako normalne, niekodowane hasło;) a "nazwa" to nazwa usera
  15. $result=mysql_query($query);
  16.  
  17. $count=mysql_num_rows($result);
  18.  
  19. // jeśli $count =1 linia
  20. if($count==1){
  21.  
  22. $rows=mysql_fetch_array($result);
  23. $your_password=$rows['alt'];
  24. $user=$rows['nazwa'];
  25.  
  26. // ---------------- WYSYŁANIE E-MAILA ----------------
  27.  
  28. // wysyłam e-mail do ...
  29. $to=$email_to;
  30.  
  31. // Temat
  32. $subject="Temat emaila";
  33.  
  34. // nagłówek
  35. $header="from: OD kogo e-mail<twój@adres.pl>";
  36.  
  37. // Wiadomość
  38. $messages.= "Witaj $user! r\n\n";
  39. $messages.= "Ktoś podał ten e-mail w procesie przypomnienia hasła do naszej strony. r\n\n";
  40. $messages.= "Jeśli to nie Ty wysłałeś zapytanie- zlekceważ ten e-mail, r\n\n";
  41. $messages.= "Twoje hasło do naszej strony to $your_passwordr\n\n";
  42. $messages.= "Zaloguj sie na <a href=\"http://www.nasza_strona.pl\" target=\"_blank\">http://www.nasza_strona.pl</a> gdzie powinieneś zmienić swoje hasłor\n\n";
  43. $messages.= "Pozdrawiamyr\n\n";
  44. $messages.= "Tyr\n";
  45. // wysyłanie e-maila
  46. $sentmail = mail($to,$subject,$messages,$header);
  47. }else{
  48. echo "Nie znaleziono takiego adresu e-mail w naszej bazie";
  49. }
  50.  
  51. // jeśli e-mail wysłany
  52. if($sentmail){
  53. echo "Twoje hasło zostało wysłane na adres e-mail, który podałeś podczas rejestracji. Powrót do <a href=index.php>strony głównej</a>";
  54. }else{
  55. echo "Nie mogliśmy wysłać hasła na Twój adres. <a href=przypomnienie.php>Spróbuj jeszcze raz</a>";
  56. }
  57.  
  58. ?>


U mnie działa, jeśli komuś sie przyda coś takiego- to bardzo fajnie. Pozdrawiam. miccom
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.