Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]wysyłanie wiadomości na adres wyciągnięty z bazy
sinke
post 6.05.2011, 13:27:39
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 26.02.2011
Skąd: Bieruń

Ostrzeżenie: (0%)
-----


Witam,

Mam następujący problem:
Chcę wysłać wiadomość na mail wybrany z bazy, ale problem jest z pobraniem z id.

Mój formularz kontaktowy wygląda tak:
  1. <?php
  2. if (isset($_GET['id']) && is_numeric($_GET['id']))
  3. {
  4. $id = $_GET['id'];
  5. }
  6.  
  7. else
  8. {
  9. echo 'Błąd z id';
  10. }
  11.  
  12. include_once ('../db.inc.php');
  13.  
  14. //ustalanie e-maila osoby wysyłającej wiadomość
  15. $user_id = $_SESSION['user_id'];
  16.  
  17. $q = "SELECT name, email FROM users_2 WHERE user_id = $user_id";
  18. $r = mysqli_query($link, $q);
  19. $num = mysqli_num_rows($r);
  20.  
  21. if ($num == 1)
  22. { $row = mysqli_fetch_array($r, MYSQLI_ASSOC);
  23. $imie = $row['name'];
  24. $wiad_od = $row['email'];
  25. }
  26. else
  27. {
  28. echo '<p>Błąd z $wiad_od</p>';
  29. }
  30.  
  31. //ustalanie e-maila osoby do której wiadomość będzie wysyłana
  32.  
  33. $zapytanie = "SELECT name, email FROM users_2 WHERE user_id = $id ";
  34. $wynik = @mysqli_query($link, $zapytanie);
  35. $num = @mysqli_num_rows($wynik);
  36.  
  37. if ($num == 1)
  38. {
  39. $row = mysqli_fetch_array ($wynik, MYSQLI_ASSOC);
  40. $wiad_do = $row['email'];
  41.  
  42. }
  43. else
  44. {
  45. echo 'Błąd $wiad_do!';
  46. }
  47.  
  48.  
  49. $cap1 = $_POST['cap1'];
  50. $cap2 = $_POST['cap2'];
  51. if($cap1 === $cap2)
  52. { if (isset($_POST['submitted']) )
  53. {
  54. function spam_scrubber($value)
  55. {
  56. $very_bad = array('to:', 'cc:', 'bcc:', 'content-type:', 'mime-version:', 'multipart-mixed:','content-transfer-encoding:');
  57.  
  58. foreach ($very_bad as $v)
  59. {
  60. if(stripos($value, $v) !== false)
  61. return '';
  62. }
  63. $value = str_replace(array("\r", "\n", "%0a", "%0d"), ' ',$value);
  64. return trim($value);
  65. } // koniec funkcji
  66.  
  67. $scrubbed = array_map('spam_scrubber', $_POST);
  68.  
  69.  
  70.  
  71. //ustalanie e-maila osoby wysyłającej wiadomość
  72. $user_id = $_SESSION['user_id'];
  73. $q = "SELECT name, email FROM users_2 WHERE user_id = $user_id";
  74. $r = mysqli_query($link, $q);
  75. $num = mysqli_num_rows($r);
  76.  
  77. if ($num == 1)
  78. { $row = mysqli_fetch_array($r, MYSQLI_ASSOC);
  79. $imie = $row['name'];
  80. $mail_od = $row['email'];
  81. }
  82. else
  83. {
  84. echo '<p>Błąd z mail_od</p>';
  85. }
  86.  
  87. //ustalanie e-maila osoby do której wiadomość będzie wysyłana
  88. $zapytanie = "SELECT name, email FROM users_2 WHERE user_id = $id ";
  89. $wynik = @mysqli_query($link, $zapytanie); //$r
  90. $num = @mysqli_num_rows($wynik);
  91. echo $zapytanie;
  92.  
  93. if (mysqli_num_rows($wynik) > 0)
  94. {
  95. $row = mysqli_fetch_array ($wynik, MYSQLI_ASSOC);
  96. $mail_do = $row['email'];
  97. }
  98. else
  99. {
  100. echo 'Błąd!';
  101. }
  102.  
  103.  
  104. //wysyłanie wiadomości
  105. if(!empty($scrubbed['temat']) && !empty($scrubbed['tekst']) )
  106. {
  107. $body = "Nazwisko i imię: $imie \n\n Tekst wiadomości: {$scrubbed['tekst']}\n\n Adres zwrotny: $mail_od";
  108. $body = wordwrap($body, 70);
  109.  
  110. mail($wiad_do,"{$scrubbed['temat']}", $body, "From:{$wiad_od}");
  111.  
  112. echo '<p>Wiadomość została wysłana.</p>';
  113. $_POST = array();
  114.  
  115. }
  116. else
  117. {
  118. echo '<p>Proszę wypełnić wszystkie pola formularza!</p>';
  119. }
  120. }
  121. }
  122. else
  123. {
  124. echo 'Nie przepisano tekstu prawidłowo - wiadomość nie została wysłałana!';
  125. }
  126.  
  127. ?>
  128. <p id="kontakt_p">Wyślij wiadomość jeśli masz pytania odnośnie ogłoszenia lub autora ogłoszenia.</p>
  129. <form action="wyslij_wiadomosc.php" method="post">
  130. <fieldset>
  131.  
  132. <p>
  133. <label for="name">temat:</label>
  134. <input type="text" name="temat" size="30" maxlength="60" value="<?php if (isset($_POST['temat'])) echo $_POST['temat']; ?>" />
  135. </p>
  136.  
  137. <p><label id="k_tekst" for="tekst">tekst wiadomości:</label>
  138. <textarea name="tekst" rows="8" cols=" 30">
  139. <?php if(isset($_POST['tekst'])) echo $_POST['tekst']; ?>
  140. </textarea>
  141. </p>
  142. <?php
  143.  
  144. $characters = array('1','2','3','4','5','6','7','8','9','a','b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','1','2','3','4','5','6','7','8','9');
  145.  
  146. $keys = array();
  147.  
  148. while(count($keys) < 6)
  149. {
  150. $x = mt_rand(0, count($characters)-1);
  151. if(!in_array($x, $keys))
  152. {
  153. $keys[] = $x;
  154. }
  155. }
  156.  
  157. foreach($keys as $key)
  158. {
  159. $los .= $characters[$key];
  160. }
  161.  
  162. echo '<p><p id="kod">kod:<b>'. $los . '</b></p>
  163. <label for="cap1">przepisz kod:</label></label>
  164. <input type=hidden name="cap1" value="'.$los.'">
  165. <input type=text name="cap2"></p>';
  166.  
  167. ?>
  168.  
  169. <p>
  170. <input class="przycisk" type="submit" name="submit" value="wyślij" />
  171. <input type="hidden" name="submitted" value="TRUE" />
  172. </p>
  173. </fieldset>
  174. </form>

Po wysyłaniu formularza wyskaują takie błędy:
Błąd z id
Błąd $wiad_do!
ale i również:
Wiadomość została wysłana.

Coś w kodzie jest nie tak, coś nie tak z id, tylko nie wiem co?
Ktoś wie może co to jest?
Go to the top of the page
+Quote Post
askone
post 6.05.2011, 13:46:18
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


Wcale mnie nie dziwi to co otrzymujesz na ekranie. Wszystko działa zgodnie z logiką (lub jej brakiem) kodu. Sprawdź dobrze, krok po kroku co po kolei jest wykonywane.

ps.
Gratis1: Według mnie brak id powinien powodować tylko wyświetlenie błędu i ew. formularza - bez pobierania danych do wysyłki - zmień zakresy bloku if/else
Gratis2: Na początku dodaj if ($_GET) {....} else {...}

Pozdrawiam


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
sinke
post 6.05.2011, 15:24:35
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 26.02.2011
Skąd: Bieruń

Ostrzeżenie: (0%)
-----


Potrzebuję jeszcze jakiś odpowiedź odnośnie tego id...

Sprawdzałam, już na różne sposoby:
- żeby sprawdzić czy działa $_GET['id'] i działało jak się wpisywało ręcznie mail od kogo ma być mail,
- żeby sprawdzić czy działa $_SESSION['user_id'] i działa jak już jest sztywno napisane do kogo ma być ten mail wysłany,
ale jak chcę połączyć obydwa to już nie działa wysyłanie.

Wydaje mi się, że problem z tym id to chodzi o to, że podczas wysyłania formularza ono znika dlatego później zmienna $wiad_do jest pusta. Jest jakiś sposób, żeby ją jakoś zatrzymać? Chodzi o to,że jak mam adres strony:http://adres_strony.pl/wyslij_wiadomosc.php?id=1 to żeby ta jedynka nie znikała po wysłaniu formularza?

Można coś takiego ustawić w formularzu:
  1. <form action="wyslij_wiadomosc.php?id=<?php $id = $_GET['id']; echo $id; ?>" method="post">
?


Jednak się da i działa! smile.gif
Zmieniłam miejsce selectów i wrzuciłam je przed wysyłaniem wiadomości i wszystko działa cacy!! smile.gif
Można zamknąć temat.

Ten post edytował sinke 6.05.2011, 17:42:57
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.06.2024 - 01:44