Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Generowanie obrazka z użyciem GD, zwraca krzaczki
orange_91
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.02.2010
Skąd: Gdańsk

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


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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
peter13135
post
Post #2





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Pierwszy raz widzę próbę stworzenia pliku który jest jednocześnie plikiem tekstowym i obrazkiem (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
orange_91
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.02.2010
Skąd: Gdańsk

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


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.
Go to the top of the page
+Quote Post
peter13135
post
Post #4





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


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
Go to the top of the page
+Quote Post
yevaud
post
Post #5





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


w dokumencie tekstowym zrob <img src="image.php" />
w image.php wrzuc ta czesc odpowiedzialna za wyswietlanie rysunku (z headerami i cala reszta)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 01:38