Panel rotacyjny aukcji dla serwisu Allegro.pl


Witam. Kiedyś gdy nie znałem php, widziałem takie panele i bardzo chciałem takie zrobić. Teraz gdy już mniej więcej orientuję się w kodzie wyskrobałem to na tyle ile potrafię. Wiele firm, osób prywatnych udostępnia panel za "drobną" opłatą. Nie szukałem w sieci ale myślę, że znalazło by się mnóstwo gotowców. Jako zwolennik Open Source, umieszczam tutaj dzieło wykonane od zera prze zemnie. Pomysł.. wiadomo nie mój :D. Kodzik postarałem się opisałem jak umaiłem, kto ma zrozumieć ten zrozumie :P.
Panel do poprawnego działania potrzebuje: osobny serwer, 2 pliki z kodem php, folder z plikami wskazującymi na użytkowników mających "zezwolenie" i jakaś czcionka. Dodatkowo dochodzi jeden skrypt który banalnie generuje kod panelu jaki sprzedawca ma wrzucić do opisu aukcji.

Pierwszy "panel.php":
Tutaj jest generowany obrazek na podstawie pierwszych ośmiu aukcji użytkownika.

<?php
Header
("Content-type: image/jpeg");

$czcionka "cour.ttf";
$obraz ImageCreateTrueColor(517400); // TrueColor, poprawiło jakość obrazu
$bialy ImageColorAllocate($obraz255255255);
$czarny ImageColorAllocate($obraz000);
$szary ImageColorAllocate($obraz108120132);

// Wypełnianie kolorem białym, tworzenie białego tła
ImageFilledRectangle($obraz00517400$bialy);

// Rysowanie ramki i przegródek tworząc tabelkę
ImageRectangle($obraz00516399$szary);
ImageLine($obraz0200517200$szary);
for(
$r=1;$r<=3;$r++){
    
$xr=$r+$r*128;
    
ImageLine($obraz$xr0$xr400$szary);
    
ImageLine($obraz$xr0$xr400$szary);
    
ImageLine($obraz$xr0$xr400$szary);
}

// Sprawdzanie użytkownika
$user $HTTP_GET_VARS[u]; // numer użytkownika
if ($user<>"" && $user<>"." && $user<>".." && is_numeric($user) && file_exists("user/".$user)) {

$zrodlo file_get_contents("http://www.allegro.pl/show_user_auctions.php?uid=".$user);
$ile_auk explode("clickable"$zrodlo);
if((
count($ile_auk)-3)<8$ile_aukcji=count($ile_auk)-3; else $ile_aukcji=9;

//Zdjęcie <td class=\"cellPhoto\">
//Opis <td class=\"cellName\"> w tym link
//Cena <td class=\"cellPrice\">

// Wstępne cięcie źródła
$zdj explode("<td class=\"cellPhoto\">"$zrodlo);
$opi explode("<td class=\"cellName\">"$zrodlo);
$cen explode("<td class=\"cellPrice\">"$zrodlo);

// Główna pętla tworzenia panelu
$ii=0;
for(
$i=1;$i<$ile_aukcji;$i++) {

//Miniaturka
    
$zdj1 explode("<img src=\""$zdj[$i]);
    
$adres_minaturki substr($zdj1[1], 0strpos($zdj1[1], "\""));
// Powiększamy zdjęcie ( Z http://photos01.allegroimg.pl/photos/64x48/769/90/66/769906666 na http://photos01.allegroimg.pl/photos/128x96/769/90/66/769906666 )
    
$adres_minaturki str_replace("64x48""128x96"$adres_minaturki);

// Wklejanie miniaturki z allegro
    
$miniaturka imagecreatefromjpeg($adres_minaturki);
    
$xx "128"$yy "96";
    if(
$i>4imagecopy($obraz$miniaturka$ii*128+$ii+120100$xx$yy); else imagecopy($obraz$miniaturka, ($i-1)*128+$i100$xx$yy);

//Opis, pobieranie opisu z pobranego źródła
    
$opi1 explode("<span>"$opi[$i]);
    
$opi2 substr($opi1[1], 0strpos($opi1[1], "<"));
    if(
$opi2=="") {
          
$opi1 explode("<b>"$opi[$i]);
          
$opi2 substr($opi1[1], 0strpos($opi1[1], "<"));
    }
    
$opis explode(" "$opi2);

    
$size_opis 10// wielkość czcionki opisu
    
$o=1// po koleji wyrazy
    
$wiersz=1// w którym wierszu jesteśmy (dzięki temu wiersze się nie rozłarzą)
    
$opis_pisz $opis[0]; // i profesjonalne pobieranie pierwszego słowa
    
while($o<count($opis)+2) { 
// i pętelka która będzie tak długo trwać aż się słowa z opisu nie wyczerpią
//jest +2 gdyż, 1 to dlatego że mało kiedy na końcu całego zdania jest spacja, a 2 żeby wyświetlić ostatni wyraz (bez tego nie dojdzie do if`a)
        //Sprawdzanie długości tekstu
        
$opis_box Imagettfbbox($size_opis0$czcionka$opis[$o]);
        
$opis_pisz_box Imagettfbbox($size_opis0$czcionka$opis_pisz);
        if((((
$opis_box[0]+$opis_box[4])+($opis_pisz_box[0]+$opis_pisz_box[4]))>110) or ($o==count($opis)+1)) { // Jeśli więcej się nie zmieści albo się zapchało lub ostatni wyraz to wyświetl
        //if((strlen($opis_pisz)+strlen($opis[$o]))<14) {
            //Wyśrodkowywanie
            
$pozycja_x = (128-($opis_pisz_box[0]+$opis_pisz_box[4]))/2;
            if(
$i<=4ImageTtfText($obraz$size_opis0, (($i-1)*128)+$pozycja_x104+($wiersz*15), $czarny$czcionka$opis_pisz);
            else 
ImageTtfText($obraz$size_opis0, ($ii*128)+$pozycja_x304+($wiersz*15), $czarny$czcionka$opis_pisz);
            
$wiersz++;
            
$opis_pisz $opis[$o];
            
$o++;
        } else { 
// a jeśli jest miejsce i nie jest to ostatni wyraz dodaj kolejny
            
$opis_pisz $opis_pisz." ".$opis[$o];
            
$o++;
        }
    }

//Cena
    
if(substr($cen[$i], 04)<>"<img") {
        
$cena substr($cen[$i], 0strpos($cen[$i], "<"));
    } else {
        
$cen1 explode(">"$cen[$i]);
        
$cena substr($cen1[1], 1strpos($cen1[1], "<")-1);
    }
// Pobieranie ceny powyżej teraz wystarczy tylko wyświetlić
$czcionka_ceny "tnrb.ttf";
$size_cena=14;
$cena_box Imagettfbbox($size_cena0$czcionka_ceny$cena);
$pozycja_cena_x = (128-($cena_box[0]+$cena_box[4]))/2;
if(
$i>4ImageTtfText($obraz$size_cena0$ii*128+$pozycja_cena_x386$czarny$czcionka_ceny$cena);
else 
ImageTtfText($obraz$size_cena0, ($i-1)*128+$pozycja_cena_x186$czarny$czcionka_ceny$cena);

    if(
$i>4$ii++;
}

// tu można else jak nie ma takiego usera

// zabiegi kosmetyczne :)
$czcionka_podpis "cour.ttf";
$size_podpis 8;
for(
$nul=0;$nul<2;$nul++) ImageTtfText($obraz$size_podpis0439398$czarny$czcionka_podpis"Kacpir.info");
ImageJpeg($obraz);
ImageDestroy($obraz);
?>

Dalej "aukcja.php", dzięki niemu możemy zostać przeniesieni na odpowiednią aukcje klikając na panel. Tu tak samo jak w pliku powyżej jest sprawdzane na podstawie plików z folderu "user" czy user ma prawo do korzystania z tego dobrodziejstwa.

<?php
$do 
$HTTP_GET_VARS["do"]; // numer miniaturki 1-8
$user $HTTP_GET_VARS[u]; // numer użytkownika
if ($user<>"" && $user<>"." && $user<>".." && is_numeric($user) && file_exists("user/".$user)) {
$zrodlo file_get_contents("http://www.allegro.pl/show_user_auctions.php?uid=".$user);
$ile_auk explode("clickable"$zrodlo);
// Wstępne cięcie źródła
$lin explode("<td class=\"cellName\">"$zrodlo);
//Link
$lin1 explode("<a href=\""$lin[$do]);
$link substr($lin1[1], 0strpos($lin1[1], "\""));
Header("Location: ".$link);
} else print 
"<html><head><META http-equiv='content-language' content='pl'><META http-equiv='content-type' content='text/html; charset=UTF-8'><title>Error</title></head><body><center>Nie ma takiego użytkownika!</center></body></html>";
?>

I skrypt generujący kod dla sprzedającego:

<?php
$nr
=$HTTP_GET_VARS[nr];
print 
"<html><head><META http-equiv='content-language' content='pl'><META http-equiv='content-type' content='text/html; charset=UTF-8'><title>panel</title></head><body><center>";
if(
$nr<>"") {
print
"Oto kod, skopiuj i wklej go w dowolnym miejscu opisu:<br><table border='2'><tr><td><i>
&lt;img src=\"http://www.kacpir.info/allepanel/panel.php\" border=\"0\" width=\"517\" height=\"400\" usemap=\"#panelek_form_kacpir\"/&gt
&lt;map name=\"panelek_form_kacpir\"&gt
&lt;area shape=\"rect\" coords=\"0,0,127,199\" href=\"http://www.kacpir.info/allepanel/aukcja.php?do=1&u="
.$nr."\"/&gt
&lt;area shape=\"rect\" coords=\"128,0,255,199\" href=\"http://www.kacpir.info/allepanel/aukcja.php?do=2&u="
.$nr."\"/&gt
&lt;area shape=\"rect\" coords=\"256,0,383,199\" href=\"http://www.kacpir.info/allepanel/aukcja.php?do=3&u="
.$nr."\"/&gt
&lt;area shape=\"rect\" coords=\"384,0,517,199\" href=\"http://www.kacpir.info/allepanel/aukcja.php?do=4&u="
.$nr."\"/&gt
&lt;area shape=\"rect\" coords=\"0,200,127,400\" href=\"http://www.kacpir.info/allepanel/aukcja.php?do=5&u="
.$nr."\"/&gt
&lt;area shape=\"rect\" coords=\"128,200,255,400\" href=\"http://www.kacpir.info/allepanel/aukcja.php?do=6&u="
.$nr."\"/&gt
&lt;area shape=\"rect\" coords=\"256,200,383,400\" href=\"http://www.kacpir.info/allepanel/aukcja.php?do=7&u="
.$nr."\"/&gt
&lt;area shape=\"rect\" coords=\"384,200,517,390\" href=\"http://www.kacpir.info/allepanel/aukcja.php?do=8&u="
.$nr."\"/&gt
&lt;area shape=\"rect\" coords=\"384,200,438,400\" href=\"http://www.kacpir.info/allepanel/aukcja.php?do=8&u="
.$nr."\"/&gt
&lt;area shape=\"rect\" coords=\"439,391,517,400\" href=\"http://www.kacpir.info/\"/&gt&lt;/map&gt
</i></td></tr></table>"
;
} else print 
"<form action='index.php' method='GET'>Twój numer użytkownika allegro: <input type='text' size='15' name='nr'><input type='submit' value='Generuj kod do wstawienia na aukcje'></form>";
print 
"</center></body></html>"
?>

Wiem, niektóre rozwiązania mogą być bardzo dziecinne, nie zrozumiałe, bardzo nie stabilne, jednak jak na razie wszystko działa jak należy i jako twórca/użytkownik nie narzekam.
Jak jak się domyśleć skrypt`a należy już we własnym zakresie zmodyfikować pod swój serwer.
Ponieważ do opisu niezbyt się przyłożyłem zaznaczam, że jest to wersja BETA :)

Pozdrawiam i życzę miłego kodowania, Kacper Placha.

Komentarze:

Jeszcze nikt nie skomentował tego dzieła. Bądź pierwszy!

Dodaj komentarz:
Nick
E-mail (nie będzie publikowany)
Twoja strona, blog (bez "http://")

Przepisz kod z obrazka

Powrót do listy publikacji.
Polot.Info | Wirtualny Przyjaciel
(CC) Kacper Placha