Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][rewrite][cron]Rotator
Forum PHP.pl > Forum > PHP
Skicek
Witam,
Stworzylem sobie rotator grafiki ktory pod jednym adresem ma zmieniac grafike. Tzn jeden link odwolujacy sie do skryptu php ktory za pomoc mod rewrite jest "zmieniony" na plik jpg. Skrypt za pomoca switcha zmienia obrazek raz na dzien (przy uzyciu crona).
Wszystko ladnie dziala do momentu wrzucenia adresu na forum np w sygnaturze jako [img], poprostu nie wyswietla sie obrazek.

Moje pytanie jest takie czy wogole jest mozliwe dzieki temu co uzylem stworzenia takiego czegos? oraz dlaczego mi nie dziala. Podawac kodu raczej chyba nie musze skoro dziala normalnie poprzez wpisanie bezposredniego adresu zrewritowanego skryptu.
Uriziel01
Jak generujesz tę grafikę ? Jako element img w DOM czy wyrzucasz odpowiednie nagłówki czy tez po prostu jest to adres odwołujący się bezpośrednio do fizycznie istniejącego pliku ?
Skicek
sa to adresy bezposrednio do plikow zmieniajace sie po nazwie pliku
erix
W ciemno, to możemy się najwyżej potknąć.

Za mało informacji podałeś, zwłaszcza w jaki sposób generujesz obrazek.
Skicek
powyzej napisalem skad jest obrazek.

Sa obrazki ponumerowane
skrypt pobiera numer obrazka
wyswietla go
mija dzien cron wykonuje drugi skrypt zwiekszajacy index obrazka
skrypt pobiera zwiekszony numer obrazka
wyswietla go

i tak w kolko. Wszystko dziala oprocz gdy umiesci sie obrazek na np forum w tagach bbcode wtedy wyswietla niepoprawna sciezke obrazka, ktora jest defakto poprawna bo gdy sie ja skopiuje i wpisze bezposrednio do przegladarki to wyswietla obrazek
erix
No fajnie, że podałeś kod.
by_ikar
Cytat(Skicek @ 4.01.2012, 00:19:40 ) *
powyzej napisalem skad jest obrazek.

Sa obrazki ponumerowane
skrypt pobiera numer obrazka
wyswietla go
mija dzien cron wykonuje drugi skrypt zwiekszajacy index obrazka
skrypt pobiera zwiekszony numer obrazka
wyswietla go

i tak w kolko. Wszystko dziala oprocz gdy umiesci sie obrazek na np forum w tagach bbcode wtedy wyswietla niepoprawna sciezke obrazka, ktora jest defakto poprawna bo gdy sie ja skopiuje i wpisze bezposrednio do przegladarki to wyswietla obrazek


Jeżeli twój skrypt wyświetla link do obrazka, i osadzisz swój skrypt w tagach bbcode czy w html, to html lub bbcode musiał by wejść pod link który mu dałeś (link do rotatora) a następnie jeszcze raz wejść pod link który wyświetli rotator.

Zobacz jak to jest tutaj na tym forum zrobione: http://forum.php.pl/style_images/top/rotator_logo.php Jest link do skryptu, ale ten skrypt bezpośrednio wyświetla obrazek, a nie wyświetla jak u ciebie link do tego obrazka. Taka jest różnica. No, przynajmniej tyle zrozumiałem z tego co napisałeś..
Skicek
chyba nie zrozumiałem tego co napisałeś by_ikar, albo ty nie zrozumiałeś co ja napisałem tongue.gif

więc napisze jeszcze raz dokładnie krok po kroku co się dzieje.

są 3 pliki i x plików graficznych
1plik skrypt wyświetlający obrazek (jako obrazek, nie link obrazku)
2plik wykonywalny przez crona zwiększający numer obrazka w pliku 3
3plik zwykły plik z numerem obrazka, który jest przekazywany do 1 pliku (by ten wiedział jaki obrazek ma wyświetlić)

wiec:
jest wyświetlony obrazek nr 1
mija dzień
cron poprzez plik 2 zwiększa numer obrazka na 2
plik 3 zostaje zmieniony na 2
plik 1 pobiera nowa wartość 2 i wyświetla obrazek nr 2
itd.

dajac adres do skryptu w bbcode (skrypt ma zmieniony adres dzięki mod rewrite na koncowke z jpg - wszystko działa normalnie po tym adresie, jak się wejdzie w niego bezpośrednio), to wyświetla brak obrazka.
by_ikar
Cytat
albo ty nie zrozumiałeś co ja napisałem


Nie tylko ja tego nie zrozumiałem, bo tak żeś to napisał.

Z tego co teraz już mi wiadomo, wyświetlasz obrazek poprzez skrypt. I tyle wiemy, a czy nie ma tam jakiegoś błędu (brak kodu), lub możliwości tego sprawdzenia chociaż pobieżnie (brak linku), sprawia że nikt ci nie da odpowiedzi, bo to jest forum programistów, a nie wróżbitów.
Skicek
http://www.runescape.pc.pl/banner400x150.jpg adres do obrazka ktory sie rotatuje.


  1. <?php
  2. $i=file_get_contents('nr.txt');
  3.  
  4.  
  5. switch($i){
  6.  
  7. case 1:
  8. echo "<img src='rotator/img/1.jpg'>";
  9. break;
  10. case 2:
  11. echo "<img src='rotator/img/2.jpg'>";
  12. break;
  13. case 3:
  14. echo "<img src='rotator/img/3.jpg'>";
  15. break;
  16. case 4:
  17. echo "<img src='rotator/img/4.jpg'>";
  18. break;
  19. default:
  20. echo "<img src='rotator/img/1.jpg'>";
  21. }
  22. ?>


  1. <?php
  2. $nr = file_get_contents('nr.txt');
  3.  
  4. if ($nr>=4) {
  5. $nr=1;
  6. }
  7. else{
  8. $nr++;
  9. }
  10. $nrp = fopen("nr.txt", "w");
  11. fwrite($nrp,"$nr");
  12. fclose($nrp);
  13.  
  14.  
  15. ?>


by_ikar
Kod
Nagłówki odpowiedzi
Date    Wed, 04 Jan 2012 13:15:10 GMT
Server    Apache
Vary    Accept-Encoding,User-Agent
Content-Encoding    gzip
Content-Length    91
Keep-Alive    timeout=1, max=100
Connection    Keep-Alive
Content-Type        text/html


A dokładnie ostatnia linijka: Content-Type text/html

Widzisz, odpowiedź miałbyś od razu, jakbyś chociaż link podał wink.gif wstaw do tego swojego skryptu:

  1. header('Content-Type: image/jpg');


Tylko na początku tego skryptu.

EDIT: wróć! nie popatrzałem nawet na twój skrypt, tylko od razu w nagłówki zajrzałem. Chłopie, przecież ty wyświetlasz html! Zobacz sobie źródło strony: http://www.runescape.pc.pl/banner400x150.jpg

  1. <a href='http://www.runescape.pc.pl'><img src='rotator/img/4.jpg'></a>


Inaczej powinieneś to zrobić, zamiast html, wyświetlić od razu grafikę. Stosownych tematów od tego na forum jest zylion. Znasz już źródło problemu, dobrze myślałem że wyświetlasz link, a nie grafikę wink.gif
Uriziel01
No więc jest dokładnie tak jak myślałem początkowo. Generujesz obiekt DOM a nie obraz, nie ma prawa to w ten sposób działać. Musisz sprawić aby serwer w momencie wejścia na ten link zwracał nagłówek taki jak obraz. A żeby zrobić z tego sygnaturke na forum musisz ręcznie przy edycji sygnatury przypisać do tego adresu link.

Wstawienie samego header('Content-Type: image/jpg'); oczywiście nic mu tutaj nie da. Zobacz że on generuje link nie sam obraz.Zamiast kodu HTML musisz wyświetlać zawartośc tego obrazu, lub tak przepisać plik .htaccess aby wskazywał na statyczny plik .jpg nie na skrypt w php
by_ikar
Cytat
Wstawienie samego header('Content-Type: image/jpg'); oczywiście nic mu tutaj nie da. Zobacz że on generuje link nie sam obraz.Zamiast kodu HTML musisz wyświetlać zawartośc tego obrazu, lub tak przepisać plik .htaccess aby wskazywał na statyczny plik .jpg nie na skrypt w php


Tak, zauważyłem to jak tylko wszedłem w źródło strony i dałem edita, że z tym html to jest tak jak zarówno ty myślałeś i w sumie ja.
Skicek
ok, dzięki za wszystko smile.gif przerobiłem kod i działa teraz pięknie i ładnie

można zamknąć
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.