[php] funkacja do wyswietlania banerka

0

Witam
Napisałem taką funkcję:

function baner ($key) {
	include_once('stable.php');
	if(strlen($key)==32) {
		include_once(functions.'connection_data_base.php');
		connect();
		$query = mysql_query("zapytanie_do_bazy");
		if($row = mysql_fetch_array($query)) {
			$pozycja = $row[0];
		}
		else {
			$pozycja = '--';
		}//end else
		disconnect();
	}//end if
	else {
		$pozycja = '--';
	}//end else
	echo '<a target="_blank" style="background-color: #FF3300; border: thin solid #660000; color: #FFFFFF; font-family: Arial; font-size: 13px; text-align: center; text-decoration: none;" href="http://'.$page.'" alt="'.opis_banera.'">&nbsp;rank '.$pozycja.'&nbsp;</a>';
}//end function

I teraz jest problem, bo nie wiem jak to wyświetlić baner na innej stronie
Myślałem, że zadziała coś takiego:

<?
include_once('adres_do_skryptu');
baner('99b57b011142c8088dff439b1164674b');
?>

Niestety okazało się, że plik 'includuje' się prawidłowo, ale nie mogę wywołać funkcji (Call to undefined function: baner()) :/.
Może lepiej to zrobić w js? Tylko, że ja nie mam zielonego pojęcia jak to zrobić:(

0

Adres? Czyli skrypt się wykonuje i nie dostajesz źródła. Podaj ścieżkę tak, żeby mógł pobrać źródło skryptu

0
nav napisał(a)

Adres? Czyli skrypt się wykonuje i nie dostajesz źródła. Podaj ścieżkę tak, żeby mógł pobrać skryptu

adres w postaci: http://www.nazwadomeny.pl/baner.php

Skrypt się wykonuje, bo jeśli dodam instrukcje typu echo''; itp., to normalnie działają.
Funkcja baner też działa poprawnie. To wygląda tak jakby niemożna było wywołać funkcji która znajduje się w pliku leżącym na innym serwerze.
Nie mam już pomysłów na rozwiązanie tego problemu

0

Nie można, bo baner.php się wykonuje na serwerze i dostajesz wynik działania skryptu, a nie jego źródło. Zmień rozszerzenie tego skryptu na takie, które nie zostanie wykonane przez php to będziesz mógł wywoływać funkcję ze zdalnego pliku.

0
nav napisał(a)

Zmień rozszerzenie tego skryptu na takie, które nie zostanie wykonane przez php to będziesz mógł wywoływać funkcję ze zdalnego pliku.

Tylko, że wtedy każy kto wpisze w przeglądarce http://nazwadomeny.pl/baner.php zobaczy kod źródłowy funkcji...

0

Więc nie pobieraj ze zdalnego serwera a z lokalnego pliku.

0

Właśnie o to chodzi,że tak nie mogę zrobić ponieważ nie zawsze będe miał dostęp do lokalnego serwera.
Strona którą robię jest czymś w rodzaju listy stron i aby dodać stronę na listę wymagane jest umieszczenie niej baner'a listy.

Więc masz jakiś inny pomysł?

0

No to w ten sposob tego nie zrobisz. Umiesc baner jako zwykly obrazek na serwerze i podawaj tym, ktorzy maja go umiescic u siebie link do niego. Wtedy wklejaja zwykly html i hula. Jesli baner sie zmienia, np. jest losowany, itp. to zrob u siebie skrypt php, ktory poda w wyniku gotowy html do wklejenia i wtedy druga strona pobiera kod i wypisuje u siebie.

0

Tylko właśnie o to chodzi, że na tym banerze ma być wyświetlana aktualna pozycja strony na liście, więc statyczny baner odpada:/

0

No to Ci napisalem co zrobic w przypadku dynamicznego... Rozumiem, ze rozpoznajesz to po $key podawanej teraz w parametrze funkcji? No to zamiesc na swojej stronie skrypt, ktory wywolywal bedziesz np. skrypt.php?key=234567, w skrypcie odbierzesz podany klucz, wygenerujesz co potrzeba i zwrocisz gotowy kod html. Jesli to obrazek jest dynamiczny to generujesz obrazek i zwracasz strumien po uprzedniej zmianie naglowka Content-Type. A pozostalym podajesz sposob odbioru tego obrazka/kodu u siebie z podaniem ich klucza.

0

Nie za bardzo zrozumiałem to co teraz napisałeś...możesz jaśniej?
Tak, rozpoznaję po $key

zamiesc na swojej stronie skrypt, ktory wywolywal bedziesz np. skrypt.php?key=234567, w skrypcie odbierzesz podany klucz, wygenerujesz co potrzeba i zwrocisz gotowy kod html

wywołanie robić na swojej stronie? jak? z kąd mam wiedzieć, że dana strona klienta jest akurat przeładowywana i potrzeba wygenerować nowy baner?
Baner to zwykły tekst (aktualna pozycja strony klienta na liście)
Pozycja strony może się zmienić w każdej chwili,więc nie mogę dać klientowi czystego html'a do wklejenia na stronę...

0

Rzeczywiscie nie rozumiesz...
Patrz na taki kod:

$key = "";
if(isset($_GET['key']))
 $key = $_GET['key'];

//tutaj wygrzebywanie info z bazy

echo "Jestes $x na liscie, Twoj klucz to $key";

Kiedy wejdziesz sobie na taka stronke jedynym tekstem jaki dostaniesz bedzie:
Jestes ... na liscie, Twoj klucz to ...

I teraz - druga strona np. za pomoca file_get_contents pobiera sobie zawartosc stronki http:/twojastrona.pl/skrypt.php?key=sdjfhsdk - czyli tekst, ktory sie wypisuje jak pokazalem. Za kazdym razem druga strona generujac sie pobiera tekst od nowa, czyli pobiera zaktualizowana tresc. Nie Ty wykrywasz kiedy sie odswieza strona, tylko to druga strona prosi Cie o ponowne wygenerowanie tekstu kiedy ktos z kolei zada od niej tresci. Of coz mozesz tekst opakowac w html, jak to zrobiles w oryginalnym kodzie.

Podsumowujac, scenariusz jest nastepujacy:

  1. Ktos wchodzi na strone x
  2. Serwer strony x otrzymuje zadanie pobrania tresci
  3. silnik php generuje zadana strone napotykajac na polecenie file_get_contents(http://innastrona/skrypt.php?key=345345); i wykonuje je wysylalac zadanie do serwera innastrona o podany adres
  4. Serwer inna strona otrzymuje zadanie, przekazuje je php'owi, jako ze zadany plik to php
  5. php wykonuje tresc pliku pobierajac dane z bazy i zwraca tekst
  6. Serwer innastrona przesyla wygenerowany tekst do serwera strony x
  7. Silnik php ze strony x konczy generowanie tresci
  8. Serwer strony x przekazuje wygenerowana tresc do klienta

Of coz strona x gdzies ta pobrana tresc w swoja tresc wsadzic musi.

PS. Zeby w file_get_contents podac url trzeba miec wlaczone file_wrappers. W innym wypadku mozesz pobrac zawartosc przez fsockopen, ale to troche bardziej pracochlonne.

PS. Duzo latwiej z punktu widzenia pozostalych stron byloby gdybys generowal po prostu obrazek. Wtedy zamieszczenie takiego dynamicznego banera na stronie sprowadza sie do wklejenia zwyklego znacznika img

0

Ok. Dzięki. Juz rozumiem:).
Mimo wszystko nie poszło mi z funkcją file_get_contents
Zrobiłem to tak jak proponowałeś - generowanie obrazka :)
Dzięki wielkie. Pozdro

1 użytkowników online, w tym zalogowanych: 0, gości: 1