czwartek, 27 maja 2010

OBSŁUGA PŁATNOŚCI.PL W PHP

Musiałem ostatnio dorobić moduł płatności do strony, gdzie nie dało się zainstalować gotowego modułu, bo go nie było :) Z szybkiego przeglądu forów wynika, że bractwo programistyczne niechętnie dzieli się kodem w tym temacie. Ja postanowiłem się podzielić podstawowym kodem. Pewnie będzie wymagał dopracowania, ale zawsze lepiej zacząć od czegoś, co chociaż w części jest zrobione.

Jak działają platnosci.pl w skrócie

Oczywiście pisząc moduł dobrze się zapoznać z dokumentacją techniczną, ale chodzi mi o skrót, który wygląda mniej więcej tak:
1. Nasz skrypt wysyła POST na stronę platnosci.pl z parametrami, z których obowiązkowe to:
- pos_id - numer tzw POSa (punktu usługowego), czyli jakby jednostki przez którą ma to iść, można takich tworzyć wiele na jednym koncie i różnie je konfigurować,
- pos_auth_key - kod autoryzacyjny nadany przez serwis płatności,
- session_id - unikalny identyfikator,
- amount - kwota zakupu w groszach,
- desc - krótki opis,
- js - info, czy przeglądarka klienta obsługuje JS
- first_name, last_name, client_ip, email - czyli wiadomo.

2. Klient coś tam sobie klika po ich stronie i na końcu jest przekierowany na jeden z dwóch adresów, które podajemy w konfiguracji:
- pierwszy jest w sytuacji jak wszystko poszło OK np: mojadomena.pl/ok.php
- drugi w sytuacji kiedy coś nawaliło np: mojadomena.pl/error.php
do obydwu adresów mogą być przekazane dodatkowe parametry GETem np: mojadomena.pl/error.php?error=%error_id%&order_id=%order_id%
UWAGA PRZEKIEROWANIE NA ok.php NIE OZNACZA, ŻE MAMY JUŻ KASĘ NA KONCIE - OZNACZA, ŻE RACZEJ POSZŁO OK, ALE TRZEBA TO SPRAWDZIĆ.

3. Ostatni etap to sprawdzanie statusów płatności. Nie potrzebujemy do tego crona. Platnosci.pl same informują nas o tym, że zaszła zmiana i wtedy musimy ją pobrać. Służy do tego 3 skrypt: mojadomena.pl/online.php Jest on wywoływany przez pltnosci.pl w momencie gdy zajdzie jakaś zmiana i wtedy on sam powinien zapytać płatności o zmianę i ją obsłużyć.

implementacja

ad1. Ta część jest prosta i zrealizuje ją prosty formularz, przykładowy jest w klasie platnoscipl - mojego autorstwa, ale mocno inspirowana klasą z prestashopa ;)w metodzie: orderForm(). Prawie identyczny formularz jest w dokumentacji platnosci.pl. Przed wyświetleniem formularza należy stworzyć order metodą podobną do: createOrder(); żeby się ustawiły pola w klasie platnoscipl wykorzystywane w formularzu;]

ad2. Jako error.php i ok.php posłuży skrypt z szablonem naszej strony, który w części głównej wypluje coś w rodzaju: ok.php jest analogiczny, tylko bez errora i z weselszym tytułem, więc nie piszę...

ad3. I na koniec zostaje plik komunikujący się "na serio" z płatnościami: online.php - też mój, ale wykorzystane fragmenty kodu modułu płatności do prestashopa, bo tak prościej.

Pliki są wycięte z wersji beta aplikacji, którą piszę, następnie okrojone i dodatkowo okomentowane i po tym okrojeniu już nie testowane, więc mogły wkraść się drobne błędy ;) Myślę, że z nimi dużo łatwiej niż z samą treścią dokumentacji ;)

poniedziałek, 24 maja 2010

Losowe daty w MySQL

Generowałem ostatnio bazę danych katalogu stron i już po uruchomieniu zorientowałem się, że dobrze by było jak by wpisy miały zróżnicowane daty.
Można to uzyskać pisząc jedno sprytne zapytanie do bazy:
2010-01-01 - to data początkowa
150 - to liczba dni jaką MAKSYMALNIE dodajemy do daty początkowej generując kolejne daty

Jeszcze by się jakiemuś robotowi nie spodobało, że wszystkie wpisy mają jedną datę ;)

piątek, 21 maja 2010

WYŁĄCZYĆ HINT z ALT-em OBRAZKA w IE

Korzystając ze skryptów prezentujących obrazki często wpadamy na pomysł, żeby wykorzystać atrybuty alt, lub title w sposób inny niż wynika z ich HTML-owego przeznaczenia.
W jednym z ostatnich projektów wykorzystywałem skrypt imageflow, który atrybut alt obrazka wyświetla jako etykietę. Do alta wstawiłem więc ostylowaną tabelę. Wszystko działa, skrypt pobiera z atrybutu alt kod HTML i wstawia go do właściwego DIV-a...
PROBLEM W TYM, ŻE IE PO NAJECHANIU WYŚWIETLA KOD TABELI :(
Rozwiązanie okazuje się proste: Czyli jeśli wpiszemy title='' to IE nie będzie wyświetlał hinta z altem. Żeby się za dużo nie napisać można to zmienić skryptem. W imageflow po linii 566 dopisać:

czwartek, 6 maja 2010

ZNIKANIE TREŚCI STRONY - ROBOTY

Kilka dni temu robiłem modyfikacje na portalu opartym o live framework. Nie jestem autorem kodu, ale zmiany nie były duże, wymagały jedynie rozbudowy jednej tabeli i drobnych zmian w zapytaniach.

Po kliku dniach okazało się, że ze strony zniknęła większość artykułów oraz ogłoszeń. Pomimo ciężkich rozmyślań nad możliwością namieszania czegoś przeze mnie nie mogłem dojść jak modyfikacja kilku selectów i skórek mogą by spowodować skasowanie danych z bazy mysql. Rozmyślanie było tym bardziej utrudnione, ponieważ spora część kodu strony była zaszyfrowana.
Właściwie pozostało mi zdenerwowanie, że z powodu zmian wartych kilka groszy wyjdę na gościa, co psuje portale... i wtedy znalazłem ARTYKUŁ.

Okazało się, że rzeczywiście administratorka portalu miała zainstalowany alexa toolbar, a w panelu linki do kasowania artykułów były zwykłymi linkami (bez żadnego skryptowego potwierdzenia itp...). Prawdopodobnie sama aplikacja alexa toolbar łazi po wszystkich linkach jakie widzi (a nie robot komunikujący się z aplikacją - to przypuszczenie, ale tak chyba prościej), ale wszystko jedno - pewne jest to, że jest to trudna do przewidzenia dziura, która może być w wielu systemach. Ciężko się zabezpieczyć przed czymś, co działa po stronie zalogowanej do panelu przeglądarki... Taka aplikacja może zrobić właściwie wszystko co może zrobić użytkownik: skasować, zrobić zakupy, a może nawet zrobić przelew??
Wczoraj robiłem porządek na komputerze żony i znalazłem na nim z 5 toolbarów: skype, winamp i jakieś mało znane. Oczywiście nie muszę dodawać, że żaden z nich nie był przez nią używany - nawet nie wiedziała co to jest ;)

DLATEGO LUDZIE PATRZCIE CO INSTALUJECIE, BO ONE SIĘ SAME NIE INSTALUJĄ!!!!

środa, 5 maja 2010

Scuttle - tworzenie zaplecza

Polecam artykuł :)
i zapraszam na stronę: jezyk-angielski.eu, która jest jednocześnie testem tego skryptu :) odezwę się w przyszłości, jeśli okaże się testem udanym :)

poniedziałek, 3 maja 2010

KOLEJNOŚĆ ŁADOWANIA PLIKÓW index.html, index.php - .htaccess

Krótka informacja jak zmusić serwer do załadowania tego, czego chcemy, jeśli użytkownik nie wpisze nazwy pliku. Domyślnie zwykle jest ładowany plik index.html, jeśli takiego nie ma to index.php itd...
Kolejność można zmienić w pliku .htaccess, jeśli mamy do niego dostęp za pomocą instrukcji:

DirectoryIndex index.php index.html

możemy tam wypisać dowolne pliki oddzielone spacją. Należy zwrócić uwagę, że jeśli w katalogu nie znajduje się żaden z wymienionych plików, to serwer może wyświetlić listing katalogu, co nie zawsze jest wskazane.

sobota, 1 maja 2010

ANTYPLAGIAT CO POTRAFI?

Generalnie wydaje mi się, że antyplagiat, jest przez środowiska uczelniane mocno przeceniany i jawi się jako system, który wykrywa w pracach podobieństwa, o których nawet sam "autor" nie wie. Nie znam tego systemu od strony technicznej, ale moim zdaniem w obecnych czasach przeciętny system informatyczny nie jest w stanie wykryć takich rzeczy jak:

- tłumaczenie tekstu - nie potrafi przetłumaczyć, więc tym bardziej porównać tłumaczenia, on chyba w ogóle nie sprawdza tłumaczenia, ale nawet gdyby sprawdzał to może to zrobić bardzo prymitywnie,

- streszczony większy fragment - nie "rozumie" sensu, więc nie widzi związku miedzy tekstem źródłowym a streszczeniem, zresztą streszczenie nie jest plagiatem,

- tekst sparafrazowany i przemieszany - jest w stanie na podstawie powtarzania się wyrazów (czy ich synonimów, chociaż tutaj pewnie w ograniczony sposób) w dłuższym fragmencie tekstu stwierdzić podobieństwo między tym fragmentem, a fragmentem źródłowym. ALE TYLKO w sytuacji jeżeli ktoś parafrazował zdanie po zdaniu (i to jeszcze prymitywnie, robiąc tylko jakieś przestawienia), jeżeli natomiast zdania są parafrazowane, a w dodatku przemieszane zdaniami własnymi, albo zaczerpniętymi z innego źródła, to nie ma wystarczająco długich fragmentów, żeby można było stwierdzić podobieństwo. Chyba, że próbował by składać różne fragmenty z ułożonych zdań i porównywać, ale złożoność by okropnie wzrosła, a i tak by pewnie niewiele z tego było, bo zaraz by się okazało, że każdy tekst jest plagiatem każdego :)

Dodatkowo:

- nie każde źródło internetowe z założenia jest w bazie antyplagiatu - pomijając same ograniczenia co do objętości internetu, dochodzą różne zabezpieczenia publikowanych materiałów (uniemożliwiające ich automatyczne kopiowanie), lub wynikające z samego formatu plików - np: analiza tekstu zawartego w pliku graficznym jest na tyle kłopotliwa, że z pewnością takie teksty nie są brane pod uwagę, pliki flash, zabezpieczone PDF-y, pliki spakowane (zabezpieczone hasłem), materiały dostępne po zalogowaniu, dostępne w sieciach P2P itd. itp.

Podsumowując moja uproszczona wizja tego systemu, jest taka, że:
- posiada bazę najpopularniejszych źródeł do najpopularniejszych tematów + bazę synonimów,
- szuka w tej bazie przede wszystkim powtarzających się fragmentów i fraz, oraz powtarzających się podobnych fragmentów (czyli z tymi samymi słowami, lub ich przestawieniami),
- potrafi do tego policzyć proste statystyki i tyle....

Dlaczego więc taki straszny?
Moje zdanie jest bezwzględne jak ten system:
Ludzie od dawna przeklepują (bardziej lub mniej bezmyślnie) książki. Jeszcze niedawno OCR był uważany za niezbędnik podczas pisania pracy, bo można przeskanować książkę i wkleić do pracy bez przepisywania - HURRA ;) W dodatku mają podobne i szablonowe tematy, które często dostają na liście do wyboru do obdzielenia się (ciekawe czy lista powtarza się co roku, czy chociaż co 2 lata). Korzystają z tych samych źródeł - zarówno jeśli chodzi o książki, bo albo biorą to co jest w bibliotece, albo to, co poleca promotor (trudno żeby każdemu polecił co innego), jak i o źródła internetowe (pierwsze wyniki google, wikipedia itp.). Ze strachu przed antyplagiatem robią masę przypisów, bo przecież mają przypis, więc to nie jest plagiat, a dla systemu tytuł książki w przypisie to tylko kolejny powtórzony tekst. Marnują czas na sztuczne przestawianie wyrazów i szukanie synonimów, zamiast przeczytać 2 strony w dwóch źródłach i napisać o czym one są... Boją się napisać czegokolwiek samemu, czegoś, co wynika z książki, ale nie jest w niej wyklepane czarno na białym. Przecież można napisać zdanie wniosku, własny przekład, cokolwiek. Jak to będzie naiwne, nieciekawe, czy bez sensu to nic się takiego chyba nie stanie - najwyżej będzie trzeba albo swój pomysł obronić, albo powiedzieć: "OK nie mam racji" i albo zmienić, albo trudno - już poszło ;) Niestety ludzie uwielbiają używać argumentu: "Przecież tak jest w książce"...( w domyśle: "Sami mi ją kazaliście przeczytać to się teraz odczepcie").
Człowiek, którego praca jest frankensteinem złożonym na szybko z wikipedii, innych prac półfrankensteinów i książkowych definicji w momencie kiedy nie przepuszcza jej antyplagiat i robi się afera nie powie przecież:
"Tak skopiowałem to na szybko w ciągu ostatniego tygodnia i z braku czasu nie testowałem w necie za 30zł, tylko oddałem - co miałem do stracenia i tak już po terminie by było...". Będzie za to udawał wielkie zdziwienie, mówił jak to brutalny system jest niesprawiedliwy itd... Promotor ma masę prac do sprawdzenia, pełno studentów, którzy przychodzą, albo nie na te seminaria, mało czasu, dużo pracy, stara się być wyrozumiały, sam w końcu kiedyś przechodził coś podobnego i z perspektywy widzi, że nie była to najważniejsza sprawa w jego życiu. Stara się więc problem plagiatu załagodzić, trochę broni studenta, jest lekko sceptycznie nastawiony do systemu... Student skarży się kolegom na niedobry antyplagiat, sprawa roznosi się dalej i dalej... każdy dokłada swoje 3 grosze, że mu to i tamto podkreśliło, "a przecież zmieniał" (miał pisać a nie zmieniać)... Powstaje mit systemu, który jest tak sprawny, że autorom science fiction się o podobnym nie śniło.
ALE
Wszystko wskazuje na to, że jest to stosunkowo proste narzędzie, które wykrywa tylko najbardziej bezmyślne, bezczelne i leniwe kopiowanie ;)

Dla wszystkich, którzy są przerażeni systemem wynik przetestowania 2óch pierwszych rozdziałów mojej pracy, które wielkim dziełem na prawdę nie są ;) (to 0.3 to tytuł ksiązkiw stawiony 3 razy jako op. cit.)

antyplagiat wyniki