Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt z dynamiczną sygnaturą
Forum PHP.pl > Forum > PHP
Jaszczomb
Witam wszystkich.
Zacznę od tego że w PHP jestem zielony. Znalazłem na pewnym warezie skrypt php, który uzupełnia sygnaturkę o dane takie jak liczba postów, pochwał, linków w postach, dni na forum i tak dalej. Wymaga on serwera Apache obsługującego mod_rewrite. Znalazłem stronę z hostingiem www, która oferuje to rozwiązanie. Skonfigurowałem skrypt pod swoje konto na owym warezie i wszystko działało. Problem pojawił się w momencie próby uruchomienia skryptu z danymi z innego forum. Po zmianie adresu profilu w skrypcie, sygnaturka przestała się uzupełniać. Sprawdzałem wiele razy czy nie nie popełniłem literówki czy innego błędy. Dodam jeszcze, że skrypt wymaga aby forum udostępniało oglądanie profilu bez zalogowania się. Ten warunek fiest spełniony w przypadku forum, na które próbowałem skonfigurować skrypt. Teraz do rzeczy. Oto kod skryptu z wypełnionym adresem przykładowego profilu na owym warezie, z którego go pobrałem:
Kod
<?

$zrodlo = file_get_contents('http://darkwarez.pl/forum/profile.php?mode=viewprofile&u=181758');

#wyciąganie liczby postów
preg_match('|<td valign="top"><span class="gen"><b>([0-9]{0,15})|', $zrodlo, $posty);


#wyciąganie pochwał
preg_match('|<td><b><span class="gen">([0-9]{0,5})|', $zrodlo, $pochwaly);


#wyciąganie linków
preg_match('|w tym <b>([0-9]{0,6})|', $zrodlo, $linki);

#wyciąganie diamentów i poziomu
preg_match_all('|<a href="diamenty.php" style="color: #a4a4a4;">([0-9]{0,6})|', $zrodlo, $poziomidiamenty);

#wyciąganie dni na forum
preg_match('|([0-9]{0,5}) dni temu|', $zrodlo, $dni);



$obrazek=imagecreatefromjpeg('tlo.jpg');

$kolor=ImageColorAllocate($obrazek,69, 167, 167); //definiuje kolor

ImageTTFText($obrazek,10,0,19,10,$kolor,'visitor2.ttf',$linki[1].''); //linki

ImageTTFText($obrazek,10,0,120,10,$kolor,'visitor2.ttf',$posty[1].''); //posty

ImageTTFText($obrazek,10,0,220,10,$kolor,'visitor2.ttf',$pochwaly[1].''); //pochwały

ImageTTFText($obrazek,10,0,242,65,$kolor,'visitor2.ttf',$poziomidiamenty[1][1].''); //poziom

ImageTTFText($obrazek,10,0,132,65,$kolor,'visitor2.ttf',$poziomidiamenty[1][0].''); //diamenty

ImageTTFText($obrazek,10,0,11,65,$kolor,'visitor2.ttf',$dni[1].''); //dni na forum

Header("Content-type: image/jpeg");
ImageJpeg($obrazek,NULL,100);
ImageDestroy($obrazek);
?>

Ja potrzebuję uzupełniania jedynie 3 wartości: Liczby postów, liczby dni na forum i liczby linków w postach.
Tak wygląda skrypt po mojej przeróbce:
Kod
<?

$zrodlo = file_get_contents('http://bingbang.eu/profile.php?mode=viewprofile&u=1467');

#wyci¦ganie liczby postˇw
preg_match('|<td valign="top"><span class="gen"><b>([0-9]{0,15})|', $zrodlo, $posty);

#wyci¦ganie linkˇw
preg_match('|w tym <b>([0-9]{0,6})|', $zrodlo, $linki);
#wyciaganie liczby dni
preg_match('|([0-9]{0,5}) dni temu|', $zrodlo, $dni);


$obrazek=imagecreatefromjpeg('tlo.jpg');

$kolor=ImageColorAllocate($obrazek,0, 208, 227);    //definiuje kolor

ImageTTFText($obrazek,10,0,225,43,$kolor,'visitor2.ttf',$linki[1].''); //wypisuje text [wielkoťŠ, nachylenie, po-o¬enie]

ImageTTFText($obrazek,10,0,225,21,$kolor,'visitor2.ttf',$posty[1].''); //wypisuje text [wielkoťŠ, nachylenie, po-o¬enie]

ImageTTFText($obrazek,10,0,225,32,$kolor,'visitor2.ttf',$dni[1].''); //wypisuje text [wielkoťŠ, nachylenie, po-o¬enie]

Header("Content-type: image/jpeg");
ImageJpeg($obrazek,NULL,100);
ImageDestroy($obrazek);
?>


Stworzyłem do tego własne tło a pozostałymi plikami się nie interesowałem. W linku do poradnika podana jest również przykładowa paczka z wymaganymi plikami, które należy zamieścić do działania skryptu.
Bardzo proszę o pomoc i pozdrawiam.
maly_swd
brawo za reklame serwisu:)
podaj login i haslo to sprawdzimy jak wyglada stopka
Jaszczomb
Przepraszam, zapomniałem że trzeba się rejestrować. Może przytoczę treść tematu:
Kod
Sygnatura z licznikiem Twoich postów, linków, pochwał itd.

Nadszedł czas na wydanie światu wszystkim tego skryptu.

Jest to prosty skrypcik, dzięki któremu na twojej sygnie mogą widnieć informacje o liczbie postów, pochwał, linków, diamentów, poziomu, dni na forum. Oczywiście niektórych można się pozbyć, jak również dodać kolejne rzeczy jak np wyświetlenia.


Co nam potrzebne:

-nasze podstawowe tło (musi być w formacie .jpeg)
-serwer Apache obsługujący mod_rewrite, czyli to co odpowiada za automatyczne uzupełnianie tła o informacje z profilu
[code]http://odsiebie.com/pokaz/2193774---156e.html



PostWysłany: 14 Kwi 2009 23:20 Temat postu: Sygnatura z licznikiem Twoich postów, linków, pochwał itd. Odpowiedz z cytatem Zgłoś Post

Sygnatura z licznikiem Twoich postów, linków, pochwał itd.

Nadszedł czas na wydanie światu wszystkim tego skryptu.

Jest to prosty skrypcik, dzięki któremu na twojej sygnie mogą widnieć informacje o liczbie postów, pochwał, linków, diamentów, poziomu, dni na forum. Oczywiście niektórych można się pozbyć, jak również dodać kolejne rzeczy jak np wyświetlenia.


Co nam potrzebne:

-nasze podstawowe tło (musi być w formacie .jpeg)
-serwer Apache obsługujący mod_rewrite, czyli to co odpowiada za automatyczne uzupełnianie tła o informacje z profilu




Paczka:

Kod:
Kod
[url="http://odsiebie.com/pokaz/2193774---156e.html"]http://odsiebie.com/pokaz/2193774---156e.html[/url]



W paczce znajdują się wszystkie rzeczy, czyli:
-skrypt php
-tło 300 na 70
-plik HTACCESS, odpowiadający za aktywację mod_rewrite na danym pliku
-czcionka (w tym przypadku visitor)



Zawartość pliku ze skryptem:
Kod
<?

$zrodlo = file_get_contents('http://darkwarez.pl/forum/profile.php?mode=viewprofile&u=181758');

#wyciąganie liczby postów
preg_match('|<td valign="top"><span class="gen"><b>([0-9]{0,15})|', $zrodlo, $posty);


#wyciąganie pochwał
preg_match('|<td><b><span class="gen">([0-9]{0,5})|', $zrodlo, $pochwaly);


#wyciąganie linków
preg_match('|w tym <b>([0-9]{0,6})|', $zrodlo, $linki);

#wyciąganie diamentów i poziomu
preg_match_all('|<a href="diamenty.php" style="color: #a4a4a4;">([0-9]{0,6})|', $zrodlo, $poziomidiamenty);

#wyciąganie dni na forum
preg_match('|([0-9]{0,5}) dni temu|', $zrodlo, $dni);



$obrazek=imagecreatefromjpeg('tlo.jpg');

$kolor=ImageColorAllocate($obrazek,69, 167, 167); //definiuje kolor

ImageTTFText($obrazek,10,0,19,10,$kolor,'visitor2.ttf',$linki[1].''); //linki

ImageTTFText($obrazek,10,0,120,10,$kolor,'visitor2.ttf',$posty[1].''); //posty

ImageTTFText($obrazek,10,0,220,10,$kolor,'visitor2.ttf',$pochwaly[1].''); //pochwały

ImageTTFText($obrazek,10,0,242,65,$kolor,'visitor2.ttf',$poziomidiamenty[1][1].''); //poziom

ImageTTFText($obrazek,10,0,132,65,$kolor,'visitor2.ttf',$poziomidiamenty[1][0].''); //diamenty

ImageTTFText($obrazek,10,0,11,65,$kolor,'visitor2.ttf',$dni[1].''); //dni na forum

Header("Content-type: image/jpeg");
ImageJpeg($obrazek,NULL,100);
ImageDestroy($obrazek);
?>

(...) Tu zamieszczona była legenda, co zmienić aby wyświetlić dane swojego profilu i zmienić pozycję napisów.(...)
Zawartość pliku HTACCESS:
Kod
RewriteEngine On
RewriteRule ^sygna.jpg$ tet_sygna.php

To w skrócie wszystko. Nie przepisałem tylko legend i nie działającego już przykładu.
maly_swd
Pewnie nie wypelnia, poniewaz struktura forum (pliku html) jest inna niz tego warezowego... i to co wyrazenia regularne chca pobrac nie ma..

Rozwiazanie: musisz pozmieniac wyrazenia regularne.

pozdrawiam
shark121
Żeby działało musiałbyś zmienić przykładowo
  1. <?php
  2. #wyciŚganie liczby postˇw
  3. preg_match('|<td valign="top"><span class="gen"><b>([0-9]{0,15})|', $zrodlo, $posty);
  4. ?>

na
  1. <?php
  2. #wyciŚganie liczby postˇw
  3. preg_match('|<td valign="top"><span class="genmed"><b>([0-9]{0,15})|', $zrodlo, $posty);
  4. ?>

itd. ponieważ jest trochę zmodyfikowana wersja phpbb na warezie tongue.gif
Jaszczomb
Wielkie dzięki. Możesz mi jeszcze napisać jak zmodyfikować linię z linkami i dniami na forum? Sam próbowałem i nie wyszło. Wszędzie wyświetlała się liczba postów. Nie znam się na php dobrze, znam tylko podstawowe rzeczy. Będę bardzo wdzięczny za przerobienie jeszcze tych 2 linii smile.gif
shark121
Liczby linków nie wyciągniesz w żaden sposób, a dni na forum możesz spróbować tak:
  1. <?php
  2. #wyciąganie dni na forum
  3. preg_match('|<td width="100%"><b><span class="gen">|', $zrodlo, $dni);
  4. ?>
Jaszczomb
Dziękuję. Sprawdzę kiedy tylko serwis hostingowy, z którego korzystam zacznie działać jak należy.
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.