phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
Zamknięty przez: arcy
21-12-2009, 23:55
[ B??d + fix ] B?dy na forum po instalacji MySQL > 5.0.12
Autor Wiadomość
spy

Pomógł: 9 razy
Posty: 147
Wysłany: 02-11-2005, 15:03   [ Błąd + fix ] Będy na forum po instalacji MySQL > 5.0.12

Był taki temat http://www.przemo.org/php...er=asc&start=15 ale poza kilkoma sugestiami pójścia sobie do diabła, nie zapostowano rozwiązania.

W MySQL wprowadzno ładnych parę zmian w składni języka (niektóre są na tyle durne, że sam się dziwię, że przeszły). Te kilka zmian na pewno zdecydowanie utrudni życie ładnej rzeszy niechlujnych programistów i zmusi innych do cierpliwego poszukiwania rozwiązania.
W każdym razie, w tym konkretnym przypadku zmieniono sposób traktowania operandów instrukcji JOIN. W tej chwili, jeśli lista operandów ma długość większą niż jeden, to należy tę listę ująć w nawias.
Problem na pewno występuje w plikach:
posting.php
report.php
includes/usercp_register.php

Przykład (plik posting.php):

Jest tak:
$sql = "SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
LEFT JOIN " . USER_GROUP_TABLE . " ug ON g.group_id = ug.group_id AND ug.user_id = $user_id
WHERE u.user_id = $user_id
AND g.group_single_user = 0
AND g.group_count_enable = 1
AND g.group_moderator <> $user_id";


Ma być tak:

$sql = "SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM (" . GROUPS_TABLE . " g, " . USERS_TABLE . " u)
LEFT JOIN " . USER_GROUP_TABLE . " ug ON g.group_id = ug.group_id AND ug.user_id = $user_id
WHERE u.user_id = $user_id
AND g.group_single_user = 0
AND g.group_count_enable = 1
AND g.group_moderator <> $user_id";


Różnicę (ogromną) robią nawiasy po między FROM a LEFT JOIN. Poprawienie tego kawałka eliminuje wyrzucanie przez forum błędu przy wysyłaniu/usuwaniu posta.

Przykład dobrej implementacji przy kilku JOINach jest w pliku includes/functions.php (developerzy powinni sprawdzić skrypt pod tym właśnie kątem):

$sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id, t.topic_last_post_id, t.topic_title
FROM ((( " . FORUMS_TABLE . " f
LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f.forum_last_post_id )
LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id )
LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_last_post_id = p.post_id
AND t.forum_id = f.forum_id)
ORDER BY f.forum_order, f.forum_id";


P.S.
Szczegółowe informacje tutaj:
http://dev.mysql.com/doc/refman/5.0/en/join.html
Ostatnio zmieniony przez Widmo 25-11-2005, 22:07, w całości zmieniany 1 raz  
 
     
Gadatliwa Kasia 

   
patrick

Pomógł: 159 razy
Posty: 1900
Wysłany: 04-11-2005, 12:29   

Wiec dzis zainstalowalem MySQLl 5.0.15 bo zostal uznany przez mysql.com za wersje rekomendowana (czyli wersje 4.0.x i 4.1.x odpadaja juz swiat idzie do przodu ).

Jednak forum "by przemo" wywala bledy . Mysle ze ta wersja mysql zostanie instalowana na serverach hostingow i moga byc problemy ;)
Blad wystapuje np. przy wysylaniu posta

Kod:
Error geting users post stat

DEBUG MODE

SQL Error : 1054 Unknown column 'g.group_id' in 'on clause'

SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM phpbb_groups g, phpbb_users u LEFT JOIN phpbb_user_group ug ON g.group_id = ug.group_id AND ug.user_id = 153 WHERE u.user_id = 153 AND g.group_single_user = 0 AND g.group_count_enable = 1 AND g.group_moderator <> 153

Line : 1088
File : posting.php

Trzeba jak najszybciej przystosowac sie do standardow.
 
     
chelloPL



Pomógł: 413 razy
Posty: 2544
Wysłany: 04-11-2005, 14:40   

patrick, czytaj "nasz" dział... Tam już jest to zgłoszone i jest rozwiązane. W nowej wersji będzie (powinno) działać.
_________________
Zanim napiszesz do mnie na GG/PW, koniecznie przeczytaj zasady.
Sygnaturka to nie tablica z ogłoszeniami! PAMIĘTAJ o tym! Nadużywanie i celowe reklamowanie stron jest ZABRONIONE i karalne!
Gość, a czy Ty nie masz sobie nic do zarzucenia?
 
     
spy

Pomógł: 9 razy
Posty: 147
Wysłany: 04-11-2005, 15:03   

Jak miło. A tutaj nie mogliście zapostować tego rozwiązania? :P
 
     
patrick

Pomógł: 159 razy
Posty: 1900
Wysłany: 04-11-2005, 15:08   

chelloPL napisał/a:
patrick, czytaj "nasz" dział... Tam już jest to zgłoszone i jest rozwiązane. W nowej wersji będzie (powinno) działać.


widzisz jaki ja slepy ;)
Cytat:
Jak miło. A tutaj nie mogliście zapostować tego rozwiązania? Razz

ja widzialem ze sobie sam poradziles ;)
Mysle ze mozna zablokowac.
 
     
spy

Pomógł: 9 razy
Posty: 147
Wysłany: 04-11-2005, 17:34   

Jeśli forum stoi na serwerze gdzie jest zainstalowany MySQL w wersji 5.0.12 lub wyższej, ten patch powinien pomóc:

Kod:
### [OPEN] album.php
### [FIND]
             FROM ". ALBUM_TABLE ." AS p
                 LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
                 LEFT JOIN ". ALBUM_CAT_TABLE ." AS ct ON p.pic_cat_id = ct.cat_id
                 LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id
                 LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id
### [REPLACE WITH]
             FROM ((((". ALBUM_TABLE ." AS p
                 LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id)
                LEFT JOIN ". ALBUM_CAT_TABLE ." AS ct ON p.pic_cat_id = ct.cat_id)
                 LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id)
                 LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id)




### [OPEN] album_cat.php
### [FIND]
             FROM ". ALBUM_TABLE ." AS p
                 LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
                 LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id
                 LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id
### [REPLACE WITH]
             FROM (((". ALBUM_TABLE ." AS p
                 LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id)
                 LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id)
                 LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id)



### [OPEN] album_comment_delete.php
### [FIND]
         FROM ". ALBUM_TABLE ." AS p
             LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
             LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id
### [REPLACE WITH]
         FROM ((". ALBUM_TABLE ." AS p
             LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id)
             LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id)



### [OPEN] album_comment_edit.php
### [FIND]
         FROM ". ALBUM_TABLE ." AS p
             LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
             LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id
### [REPLACE WITH]
         FROM ((". ALBUM_TABLE ." AS p
             LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id)
             LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id)



### [OPEN] album_modcp.php
### [FIND]
                 FROM ". ALBUM_TABLE ." AS p
                     LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
                     LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id
                     LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id
### [REPLACE WITH]
                 FROM (((". ALBUM_TABLE ." AS p
                     LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id)
                     LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id)
                     LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id)



### [OPEN] album_page.php
### [FIND]
         FROM ". ALBUM_TABLE ." AS p
             LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
             LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id
             LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id
### [REPLACE WITH]
         FROM (((". ALBUM_TABLE ." AS p
             LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id)
             LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id)
             LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id)



### [OPEN] album_personal.php
### [FIND]
             FROM ". ALBUM_TABLE ." AS p
                 LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id
                 LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id
### [REPLACE WITH]
             FROM ((". ALBUM_TABLE ." AS p
                 LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id)
                 LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id)



### [OPEN] album_portal.php
### [FIND]
             FROM ". ALBUM_TABLE ." AS p
                 LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
                 LEFT JOIN ". ALBUM_CAT_TABLE ." AS ct ON p.pic_cat_id = ct.cat_id
                 LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id
                 LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id
### [REPLACE WITH]
             FROM ((((". ALBUM_TABLE ." AS p
                 LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id)
                 LEFT JOIN ". ALBUM_CAT_TABLE ." AS ct ON p.pic_cat_id = ct.cat_id)
                 LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id)
                 LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id)



### [OPEN] album_rate.php
### [FIND]
         FROM ". ALBUM_TABLE ." AS p
             LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
             LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id
### [REPLACE WITH]
         FROM ((". ALBUM_TABLE ." AS p
             LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id)
             LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id)



### [OPEN] posting.php
### [FIND]
             $sql = "SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
### [REPLACE WITH]
             $sql = "SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM (" . GROUPS_TABLE . " g, " . USERS_TABLE . " u)




### [OPEN] report.php
### [FIND]
             FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt
                 LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id
                 LEFT JOIN " . USERS_TABLE . " u2 ON u2.user_id = p.reporter_id
### [REPLACE WITH]
             FROM (((" . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt)
                 LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id)
                 LEFT JOIN " . USERS_TABLE . " u2 ON u2.user_id = p.reporter_id)
### [FIND]
             FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt
                 LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id
                 LEFT JOIN " . USERS_TABLE . " u2 ON u2.user_id = p.reporter_id
### [REPLACE WITH]
             FROM (((" . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt)
                 LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id)
                 LEFT JOIN " . USERS_TABLE . " u2 ON u2.user_id = p.reporter_id)



### [OPEN] includes/usercp_register.php
### [FIND]
             $sql = "SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM " . GROUPS_TABLE . " g, ".USERS_TABLE." u
### [REPLACE WITH]
             $sql = "SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM (" . GROUPS_TABLE . " g, ".USERS_TABLE." u)



### [OPEN] admin/index.php

### [FIND]

            if( preg_match("/^(3\.23|4\.)/", $version) )
            {
                $db_name = ( preg_match("/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)/", $version) ) ? "`$dbname`" : $dbname;


### [REPLACE WITH]

            if( preg_match("/^(3\.23|4\.|5\.)/", $version) )
            {
                $db_name = ( preg_match("/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)|(5\.)/", $version) ) ? "`$dbname`" : $dbname;




Pliki z nałożonymi łatami dla PHP 5.x i MySQL 5.0.12 są tutaj:
http://www.przemo.org/php...p=132963#132963

A jeszcze dokładniej - tu: http://www.przemo.org/php...oad.php?id=3974

Jeśli nie nakładałe(a)ś dodatkowych modów i śpieszy Ci się lub nie radzisz sobie z samodzielnym poprawianiem plików .php, to zrób kopię własnych plików i podmień tymi z załącznika.

UWAGA: pliki zawierają ten mod http://www.przemo.org/php...p=133496#133496
Jeśli ktoś go nie chce, to usunięcie go powinno być naprawdę proste, ponieważ wiąże się jedynie z wykasowaniem kilku linijek w pliku posting.php. Niestety trzeba to zrobić samemu.
PLIKI NA PEWNO SĄ O.K., więc jesli coś nie działa, to znaczy, że to Ty popaełniłe(a)ś jakiś błąd.
Ostatnio zmieniony przez spy 07-12-2005, 02:52, w całości zmieniany 4 razy  
 
     
DuroneK


Posty: 264
Wysłany: 04-11-2005, 18:22   

MySQL zwrócił komunikat: Dokumentacja
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM ". ALBUM_TABLE ." AS p
LEFT JOIN ". USERS_TABLE ." AS u
 
     
spy

Pomógł: 9 razy
Posty: 147
Wysłany: 04-11-2005, 18:56   

Przy którym pliku to wyskakuje? (jaki jest adres w przeglądarce w momencie wystąpienia tego błędu?)
_________________
Spy
 
     
strus


Pomógł: 66 razy
Posty: 547
Wysłany: 05-11-2005, 09:03   

Czyli jak na 1 serverze mam wersje 5.0.15 to rozwiazanie spy wyeliminuje bledy przy wysylaniu postow ?
_________________
if(DobaZegarowa>24) cout<<"Z checia Ci pomoge!"; else cout<<"Fuck OFF and Find OUT it yourself.";
 
     
spy

Pomógł: 9 razy
Posty: 147
Wysłany: 05-11-2005, 15:07   

Tak.
_________________
Spy
 
     
Przemo



Pomógł: 210 razy
Posty: 3148
Wysłany: 10-11-2005, 19:12   

obawiam sie, ze bedzie problem poniewaz to co tu podajecie jest niezgodne z manualem mysql5 Obawiam sie, ze bedzie z tym duzy problem. Szczerze mowiac nie jestem w stanie tego sprawdzic i chyba tego nie zrobie.
Przydalo by sie zeby znalezc gdzies w necie jak na 100% mozna to zrobic, czy przypadkiem nie trzeba rozdzielic zapytan osobno dla mysql >5 i <5

Po prostu masakra, chyba komus zalezy zeby programisci php mieli problemy. Ostatnio PHP5 spowodowalo problemy, teraz mysql, kolej na apache...
 
     
spy

Pomógł: 9 razy
Posty: 147
Wysłany: 10-11-2005, 19:29   

O czym ty piszesz? :D
Przecież to zostało zrobione na podstawie manuala MySQLowego :lol: Nie wziąłem tego z powietrza, tylko stąd: http://dev.mysql.com/doc/refman/5.0/en/join.html . Zresztą podałem ten link w pierwszym poście. Dokładnie chodzi o to:

Cytat:
Prior to 5.0.12, the SELECT is legal due to the implicit grouping of t1,t2 as (t1,t2). From 5.0.12 on, the JOIN takes precedence, so the operands for the ON clause are t2 and t3. Because t1.i1 is not a column in either of the operands, the result is an Unknown column 't1.i1' in 'on clause' error. To allow the join to be processed, group the first two tables explicitly with parentheses so that the operands for the ON clause are (t1,t2) and t3:

SELECT * FROM (t1, t2) JOIN t3 ON (t1.i1 = t3.i3);

This change also applies to INNER JOIN, CROSS JOIN, LEFT JOIN, and RIGHT JOIN.


Poza tym to są wszystkie zmiany, które trzeba zaaplikować, by forum działało poprawine zarówno z MySQLem 4.x jak i 5.x. Przecież to tylko grupowanie argumentów, które wcześniej "domyślnie" były grupowane, a teraz trzeba to zadeklarować wprost. Zresztą, sprawdź u siebie. Wystarczy, że przejdzie w posting.php.

Przemo napisał/a:
Po prostu masakra, chyba komus zalezy zeby programisci php mieli problemy.

Przecież ta zmiana akurat idzie na dobre. Wreszcie czytając tasiemcowy kod nie trzeba będzie się domyślać co jest gdzie i do czego się odnosi. Po przeczytaniu Twojego komentarza, pozostaje mieć nadzieję, że nie piszesz w C :mrgreen:
Tak przy okazji i na marginesie... Nie wiesz może, który to pajac z devów PHPBB wymyślił sposób opisu paczy w tym popieprzonym formacie z "find", "add", "replace" itd? Osobiście złożyłbym gratulacje temu geniuszowi, ktory najwyraźniej w życiu nie słyszał o narzędziach diff i patch. _TO_ jest dopiero masakra.
 
     
patrick

Pomógł: 159 razy
Posty: 1900
Wysłany: 10-11-2005, 20:37   

spy, ale po twojej poprawce wszystko dziala ;)
Mysle, ze trzeba tylko dodac schemat mysql5 do instalacji (moze byc to schemat mysql4 bo na nim dziala ) i wszystko ok ...
spy napisał/a:
kolej na apache...


no apache powoli wprowadza wersje 2.1.x ale tam niema zmian by popsuc obsluge php ;)
 
     
Przemo



Pomógł: 210 razy
Posty: 3148
Wysłany: 11-11-2005, 18:02   

spy, w takim razie skąd w patchu co podałes to:
Kod:
FROM (((". ALBUM_TABLE ." AS p
  LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id)
  LEFT JOIN ". ALBUM_RATE_TABLE ." AS r ON p.pic_id = r.rate_pic_id)
  LEFT JOIN ". ALBUM_COMMENT_TABLE ." AS c ON p.pic_id = c.comment_pic_id)
W manualu nie doszukalem sie informacji na temat wielokrotnego dolaczania roznych tabel. Z tego co widze w manualu w takim zapytaniu nie potrzeba zadnych nawiasów.
 
     
Gadatliwa Kasia 

   
Widmo



Pomógł: 180 razy
Posty: 2435
Wysłany: 12-11-2005, 00:30   

Przemo, uwierz ze ta zmiana pomaga - juz na 3 forach pomogło...
_________________
Potrzebujesz pomocy?
 
     
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,11 sekundy. Zapytań do SQL: 14
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

serwis laptopów

phpbb

Design Cart - Tworzenie sklepu internetowego

iRonin.IT

• Zamów reklamę