Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Generowanie obrazka z użyciem GD, zwraca krzaczki
Forum PHP.pl > Forum > Przedszkole
orange_91
Heyka, Nie często zadaje pytania ponieważ często znajduje je w google, ale w tym przypadku nie mam zielonego pojęcia co mam zrobić.
Poniżej przedstawiam kod, pobiera on dane a następnie ma on wyświetlać generowany obrazek, jeżeli kod odpowiedzialny za generowanie obrazka jest osobno - oddzielny plik php ( nie includowany ) to obrazek działa.
Jeżeli mam wszystko razem to nie działa, wyświetla się błąd "Cannot modify header information - headers already sent", a dalej krzaczki obrazka, i próbowałem innych rzeczy by jakoś ominąć ten błąd - nie działa albo nie wiem jak to zrobić. Jak pójdę metodą usunięcia header ("Content-type: image/jpeg"); to też to nic nie daje - Błędu nie zwraca ale obrazka nadal niema. Dodam że wszystko ma kodowanie utf-8. Patrzcie linia 98 - 130. Przepraszam za bałagan w kodzie. Proszę pomóżcie.
  1. <?php
  2. function verifyEmail($email) {
  3. $wholeexp = '/^(.+?)@(([a-z0-9\.-]+?)\.[a-z]{2,5})$/i';
  4. $userexp = "/^[a-z0-9\~\!\#\$\%\&\(\)\-\_\+\=\[\]\;\:\'\"\,\.\/]+$/i";
  5. if (preg_match($wholeexp, $email, $regs)) {
  6. $username = $regs[1];
  7. $host = $regs[2];
  8. if (checkdnsrr($host, MX)) {
  9. if (preg_match($userexp, $username)) {
  10. return true;
  11. } else {
  12. return false;
  13. }
  14. } else {
  15. return false;
  16. }
  17. } else {
  18. return false;
  19. }
  20. }
  21.  
  22.  
  23. if (empty($_POST['tresc']) or empty($_POST['imie']) or empty($_POST['email']) or empty($_POST['tel']) or empty($_POST['temat']) and empty($_POST['submit'])) {
  24. // wyświetlamy formularz
  25. echo "<table border=\"0\"><form method=\"post\">
  26. <tr>
  27. <td>Treść wiadomości</td>
  28. <td><textarea name=\"tresc\" style=\"width: 520px; height: 100px\">".$_POST['tresc']."</textarea></td>
  29. </tr>
  30. <tr>
  31. <td>Imię i nazwisko</td>
  32. <td><input type=\"text\" name=\"imie\" style=\"width: 250px\" value=".$_POST['imie']."></td>
  33. </tr>
  34. <tr>
  35. <td>Adres e-mail</td>
  36. <td><input type=\"text\" name=\"email\" style=\"width: 250px\" value=".$_POST['email']."></td>
  37. </tr>
  38. <tr>
  39. <td>Telefon kontaktowy</td>
  40. <td><input type=\"text\" name=\"tel\" style=\"width: 250px\" value=".$_POST['tel']."></td>
  41. </tr>
  42. <tr>
  43. <td>Temat wiadomościl</td>
  44. <td><input type=\"text\" name=\"temat\" style=\"width: 250px\" value=".$_POST['temat']."></td>
  45. </tr>
  46. <tr>
  47. <td>&nbsp;</td>
  48. <td><input type=\"submit\" name=\"submit\" id=\"slij\" value=\"Wyślij\">&nbsp;
  49. <input type=\"reset\" id=\"slij\" value=\"Wyczyść\"></td></form>
  50. </tr>
  51. <tr>
  52. <td>&nbsp;</td>
  53. <td>
  54.  
  55. </td>
  56. </tr>
  57. </table>";
  58. }
  59. elseif (empty($_POST['tresc']) or empty($_POST['imie']) or empty($_POST['email']) or empty($_POST['tel']) or empty($_POST['temat']) and !empty($_POST['submit'])) {
  60. echo "<table border=\"0\"><form method=\"post\">
  61. <tr>
  62. <td>Treść wiadomości</td>
  63. <td><textarea name=\"tresc\" style=\"width: 476px; height: 100px\">".$_POST['tresc']."</textarea></td>
  64. </tr>
  65. <tr>
  66. <td>Imię i nazwisko</td>
  67. <td><input type=\"text\" name=\"imie\" style=\"width: 250px\" value=".$_POST['imie']."></td>
  68. </tr>
  69. <tr>
  70. <td>Adres e-mail</td>
  71. <td><input type=\"text\" name=\"email\" style=\"width: 250px\" value=".$_POST['email']."></td>
  72. </tr>
  73. <tr>
  74. <td>Telefon kontaktowy</td>
  75. <td><input type=\"text\" name=\"tel\" style=\"width: 250px\" value=".$_POST['tel']."></td>
  76. </tr>
  77. <tr>
  78. <td>Temat wiadomości</td>
  79. <td><input type=\"text\" name=\"temat\" style=\"width: 250px\" value=".$_POST['temat']."></td>
  80. </tr>
  81. <tr>
  82. <td>&nbsp;</td>
  83. <td><input type=\"submit\" name=\"submit\" id=\"slij\" value=\"Wyślij\">&nbsp;
  84. </tr>
  85. <tr>
  86. <td>&nbsp;</td>
  87. <td>";
  88. // lub w przypadku nie wypełnienia formularza do końca
  89. echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
  90. echo "</td>
  91. </tr>
  92. </table>";
  93. }
  94.  
  95. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email']) && !empty($_POST['tel']) && !empty($_POST['temat'])) {
  96. $email=$_POST['email'];
  97.  
  98. if (verifyEmail($email)) {
  99. echo ok;
  100. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  101. // zmienna $message zawiera treść wiadomości
  102. $message = "Wysłał:$_POST[imie]\ne-mail: $_POST[email] \nTelefon Kontaktowy: $_POST[tel] \nTreść Wiadomości:\n$_POST[tresc] ";
  103. // zmienna $header zawiera przede wszystkim adres zwrotny
  104. $header = "From: $_POST[imie] <$_POST[email]>";
  105. $title = "$_POST[temat]";
  106. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  107. @mail("email@gmail.com","$title","$message","$header")
  108. or die('Nie udało się wysłać wiadomości');
  109. // wyświetlenie komunikatu w przypadku powodzenia
  110. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  111.  
  112. // Otwieramy plik graficzny
  113. $rysunek = ImageCreateFromJpeg("banner.jpg");
  114.  
  115. // Definicje kolorów jako składowe RGB
  116. $bialy = ImageColorAllocate($rysunek, 255, 255, 255);
  117. $nieb = ImageColorAllocate($rysunek, 0, 255, 255);
  118.  
  119. // Lokacja łańcucha i jego wartość
  120. ImageString($rysunek, 15, 50, 10, "tekst1", $bialy);
  121. ImageString($rysunek, 10, 50, 20, "tekst2", $nieb);
  122. ImageString($rysunek, 10, 50, 30, "tekst3", $bialy);
  123.  
  124. // Stworzenie wynikowej grafiki
  125. header ("Content-type: image/jpeg");
  126.  
  127. ImageJpeg($rysunek);
  128.  
  129. }
  130.  
  131. else {
  132.  
  133. echo "<table border=\"0\"><form method=\"post\">
  134. <tr>
  135. <td>Treść wiadomości</td>
  136. <td><textarea name=\"tresc\" style=\"width: 476px; height: 100px\">".$_POST['tresc']."</textarea></td>
  137. </tr>
  138. <tr>
  139. <td>Imię i nazwisko</td>
  140. <td><input type=\"text\" name=\"imie\" style=\"width: 250px\" value=".$_POST['imie']."></td>
  141. </tr>
  142. <tr>
  143. <td>Adres e-mail</td>
  144. <td><input type=\"text\" name=\"email\" style=\"width: 250px\" value=".$_POST['email']."></td>
  145. </tr>
  146. <tr>
  147. <td>Telefon kontaktowy</td>
  148. <td><input type=\"text\" name=\"tel\" style=\"width: 250px\" value=".$_POST['tel']."></td>
  149. </tr>
  150. <tr>
  151. <td>Temat wiadomościl</td>
  152. <td><input type=\"text\" name=\"temat\" style=\"width: 250px\" value=".$_POST['temat']."></td>
  153. </tr>
  154. <tr>
  155. <td>&nbsp;</td>
  156. <td><input type=\"submit\" name=\"submit\" id=\"slij\" value=\"Wyślij\">&nbsp;
  157. </tr>
  158. <tr>
  159. <td>&nbsp;</td>
  160. <td>";
  161. echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
  162. echo "</td>
  163. </tr>
  164. </table>";
  165.  
  166. }
  167. }
  168.  
  169. ?>
peter13135
Pierwszy raz widzę próbę stworzenia pliku który jest jednocześnie plikiem tekstowym i obrazkiem wink.gif
orange_91
Co masz dokładnie na myśli? Możesz mi powiedzieć w którym miejscu jest mój błąd?

Przypomnę, że tam jest formularz, a potem obrazek wraz z kawałkiem innego kodu są w if który zależny jest od tego co zwraca formularz. Efekt na chwilę obecną ma być taki że po porwanym wypełnieniu formularza, ma zostać wyświetlony obrazek.
peter13135
1. przed funkcją header() nie może być nic wyświetlane, w przeciwnym wypadku masz błąd "cannot send...."
2. plik nie może jednocześnie być obrazkiem i dokumentem tekstowym.
Zrób sobie plik image.php w którym będziesz wyświetlał sam obrazek. Gdybyś potrzebował wyświetlić tekst z formularza, albo coś innego "zmiennego" to będziesz mógł to wysłać GETem
yevaud
w dokumencie tekstowym zrob <img src="image.php" />
w image.php wrzuc ta czesc odpowiedzialna za wyswietlanie rysunku (z headerami i cala reszta)
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.