Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]GD nie wyświetla obrazu
kujol
post 12.02.2019, 09:13:15
Post #1





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Witam, mam oto taki skrypt, który tworzy mi obraz:

  1. <?Php
  2.  
  3. class Licznik{
  4.  
  5. private $plik;
  6. private $plik2;
  7. private $twojeIp;
  8. private $adresUrl;
  9.  
  10. function LicznikIp(){
  11.  
  12. $this->plik = "ip.txt"; //Plik z adresami ip, jeśli nie istnieje zostanie automatycznie stworzony
  13. $this->plik2 = "stan.txt"; //Plik ze stanem licznika, jeśli nie istnieje zostanie automatycznie stworzony
  14.  
  15. $this->twojeIp = $_SERVER['REMOTE_ADDR']; //Pobiera adres ip
  16. $this->adresUrl = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; //Pobiera adres strony
  17.  
  18. $this->fp = file_get_contents($this->plik); //Otwiera i czyta plik z adresami ip
  19. $this->explo = explode('|', $this->fp); //Tworzy tablicę adresów ip
  20. $this->zlicz = count($this->explo); //Zlicza ilość tablic - adresów ip
  21.  
  22. if(in_array($this->twojeIp, $this->explo)){ //Sprawdza czy w tablicy istnieje ip
  23. $this->dane = file_get_contents($this->plik2); //Jeśli ip już istnieje odczytuje stan odwiedzin
  24. }
  25.  
  26. else{ //Jeśli w tablicy nie istnieje ip wykonuje skrypt
  27. for($this->i = 0; $this->i < $this->zlicz; $this->i++){ //Wypisuje wszystkie tablice
  28. $this->explo[$this->i];
  29. }
  30.  
  31. $this->explo[] = "$this->twojeIp"; //Dodaje nową tablicę z ip jako ostatnią
  32. $this->noweDane = implode("|",$this->explo); //Łączy tablicę
  33.  
  34. file_put_contents($this->plik, $this->noweDane, LOCK_EX); //Zapisuje zmieniony plik.txt
  35. $this->dane = file_get_contents($this->plik2); //Otwiera i czyta plik ze stanem odwiedzin
  36.  
  37. $this->licznikPlus = $this->dane + 1; //Zwiększa liczbę odwiedzin
  38. file_put_contents($this->plik2, $this->licznikPlus, LOCK_EX); //Zapisuje zmieniony plik.txt
  39.  
  40. header("Location: http://".$this->adresUrl); //Odświerza stronę
  41. }
  42.  
  43. $this->text = "Ilosc odwiedzin: ".$this->dane; //Tekst obrazka
  44. $this->iw = 130; //Szerokość obrazka
  45. $this->ih = 20; //Wysokość obrazka
  46. $this->fs = 2; //Wielkość czcionki "1-5"
  47.  
  48. $this->fw = imagefontwidth($this->fs); //Pobiera szerokość czsionki "$fs" i wzraca wynik w px
  49. $this->l = strlen($this->text); //Zlicza ilość liter w tekście
  50. $this->tw = $this->l * $this->fw; //Oblicza szerokość tekstu
  51. $this->xpos = ($this->iw - $this->tw)/2; //Oblicza przesunięcie tekstu w osi x
  52. $this->fh = imagefontheight($this->fs); //Pobiera wysokość czsionki "$fs" i wzraca wynik w px
  53. $this->ypos = ($this->ih - $this->fh)/2; //Oblicza przesunięcie tekstu w osi y
  54.  
  55. $this->im = imagecreate($this->iw, $this->ih); //Tworzymy pusty obraz
  56. $this->background = imagecolorallocate($this->im, 28, 158, 165); //Kolor tła rgb
  57. $this->textcolor = imagecolorallocate($this->im, 010, 010, 010); //Kolor tekstu rgb
  58. imagestring($this->im, $this->fs, $this->xpos, $this->ypos, $this->text, $this->textcolor); //Rysuje tekst na obrazie
  59.  
  60. header("Content-type: image/png"); //Ustawiamy nagłoek image/png
  61.  
  62. imagepng($this->im); //Wyświetla obraz
  63. imagedestroy($this->im); //Zwalnia pamięć
  64. }
  65. }
  66.  
  67. $licznik = new Licznik;
  68. $licznik->LicznikIp();
  69. ?>
  70.  


Natomiast ten wyświetlam na stronie w następujący sposób:

  1. <img id="footer_img" src="licznik_odwiedzin_ip_class.php" border="1px" alt="Licznik odwiedzin ip"/>


A cały problem tkwi w tym, że na localhost wszystko działa pięknie, a jeśli tylko wrzucę na serwer prv nagle skrypt nie wyświetla obrazka, nie tworzy plików .txt i ich nie czyta.
Czy ktoś wie o co chodzi?

Dodam, że przyklad z manuala także nie działa, czyli problem tkwi gdzieś głębiej. Moja wersja php to 5.2 / 7.0

Ten post edytował kujol 12.02.2019, 09:14:51


--------------------
;)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post 12.02.2019, 20:32:33
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




Twoja klasa na chwile obecna to poptostu zwykla funkcja opakowana w klase. Kazdy tak pewnie robil na poczatku. Tak czy siak za bardzo nie mam czasu by to wszystko ci przerabiac. Popraw na chwile obecna te zmienne, czyli wszystkie wystapienia

$this->zmienna

zamien poprostu na

$zmienna

Co do tworzenia/czytania plikow to skoro sie to nie robi to zapewne gdzies w logach masz napisane bledy czemu tak sie dzieje


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Posty w temacie


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: 27.04.2024 - 09:50