PDA

Zobacz pełną wersję : sobi2- płatności paypal



pioadam
21-06-2009, 19:26
Na wstępie chciał bym się przywitać bo to mój pierwszy post na forum.
Używam Joomli 1.5.10 oraz sobi2 w wersji 2.9.2.1.
a teraz do rzeczy:
gdy dodaję wpis w sobi wszystko jest ok i nowa pozycja się dodaje, natomiast gdy włączę płatności po dodaniu wpisu otrzymuję komunikat "You are not authorized to see this page". Pomimo tego wpis zostaje dodany, jednak w rzaden sposób, nie zostaję poinformowany, że powinienem zapłacić. Czy ktoś spotkał się już z takim problemem? wszystkie podobne tematy dotyczyły linków SEF albo galerii ale ja nie mam tych pluginów. Uprawnienia do katalogów i plików podniosłem nawet do 777 ale problem nadal występuje. W system check nie mam żadnych błędów.
Pozdrawiam!

Mayster
22-06-2009, 00:59
Zamiast zgadywać jakie mogą być przyczyny Twojego problemu podpowiem Ci jak szukać odpowiedzi, a raczej jak wykonać pierwszy etap diagnostyki dla komponentu Sobi2.


Sobi2 posiada mnóstwo opcjii konfiguracyjnych. Oprócz opcjii "Konfiguracja ogólna" w panelu administracyjnym komponentu mamy do dyspozycjii plik rejestru, przy pomocy którego, nie znając sie na programowaniu, bez żadnych zmian kodu, możemy wpłynąć na sposób działania działania komponentu.
Jednak zmiana wartości w pliku rejestru jest niejednokrotnie przyczyną kłopotów, ponieważ zmieniajac jakąkolwiek wartość musimy wiedzieć co robimy, a przeważnie bywa tak, że po pierwszej instalacjii komponentu, chcąc sprawdzic jego możliwości, zmieniamy co się da i patrzymy co sie stanie.
Istnieje małe prawdopodobieństwo że po takiej zabawie, chcąc skonfigurować komponent na potrzeby naszego serwisu, nie napotkamy na problemy.
Zalecam zatem, przed rozpoczęciem prac, całkowite odinstalowanie komponentu i ponowne zainstalowanie. Używając określenia 'całkowite' mam na myśli usunięcie wszystkich plików komponentu i tabel bazy danych dla Sobi2.

Gdy po ponownej instalacjii problem sie powtarza, musimy zlokalizować miejsce w kodzie komponentu, a przynajmniej znależć funkcje w ktorej problem powstaje.

W panelu administracyjnym, w menu 'O Sobi' jest opcja 'Plik Błędów'. Podglądamy wpisy pliku. Jeżeli nie ma zgłoszonych żadnych wpisów to mamy pewność ze nie wystąpiły błędy przy wykonywaniu zapytań sql do bazy danych.
Jeżeli są zapisane jakieś komunikaty, to mamy dużą podpowiedz dla osób które poprosimy o pomoc. Wystarczy skopiować treść komunikatów i przesłać z zapytaniem na forum. oczywiście wcześniej sprawdzając, czy ktos nie szukał podpowiedzi dotyczącej zgłaszanego błedu.

Jeżeli plik błędów jest pusty, to nasze poszukiwania opieramy na komunikacie jaki został wyświetlony po wystąpieniu błedu. W Twoim przypadku mamy komunikat : 'You are not authorized to see this page'
Pozostaje dowiedzieć sie czy ten komunikat został wygenerowany przez Sobi2, czy też przez jego rozszerzenie, albo pliki główne joomli. To znacznie zawęzi nasze poszukiwania błędu. Posługujemy się programem który posiada opcje przeszukiwania wszystkich plików w wybranym katalogu np. PSPad. Przeszukujemy cały katalog joomli.
Dla komunikatu 'You are not authorized to see this page' uzyskałem 2 wyniki z których wynika że komunikat pochodzi z komponentu Sobi2 i zawarty jest w stałej '_SOBI2_NOT_AUTH' . Przeszukuję zatem pliki komponentu dla wyrażenia '_SOBI2_NOT_AUTH'.
Uzyskałem 24 wystapienia w 9 plikach:

field.class.php
form.class.php
default.php
english.php
polish.php
payment.class.php
sobi2.class.php
sobi2.entry.php
sobi2.php

Od razu wykluczam pliki językowe, w których definiowany jest tylko treść komunikatu. Ponieważ z twoich informacji wynika że wpis można było przed zapisaniem edytować wykluczam również plik formularza: form.class.php
Pozostaje 17 opcjii do sprawdzenia w 5 plikach.

field.class.php
payment.class.php
sobi2.class.php
sobi2.entry.php
sobi2.php

Tutaj przydadzą się elementarne znajomości php. Analiza kodu powinna dać nam odpowiedż.
Szukamy warunków jakie muszą być spełnione aby nie został zgłaszany komunikat, a przede wszystkim nazw kluczy rejestru, które występują jako 2 parametr przy wywoływaniu funkcjii key() np: $config->key( "redirects", "payment_no_sobi"). Nazwy kluczy i funkcjii sa dobrane intuicyjnie więc bez trudu dowiemy się czego dotyczą.

Oto klucze i nazwy zmiennych konfiguracji które dotyczyły w/w komunikatu w badanych plikach:

plik: payments.class.php
nazwa sekcji => nazwa klucza
"redirects" => "payment_no_sobi"
"redirects" => "renew_not_allowed"
"redirects" => "renew_no_sid"
"redirects" => "renew_no_perms"
"redirects" => "renew_no_exp_limit"z analizy kodu wynika że wszystkie komunikaty były zapisywane w pliku błedów (wcześniejsze sprawdzenie pliku błędów wyklucza dalsze sprawdzanie komunikatów w pliku payments.class.php)

plik sobi2.entry.php:
nazwa sekcji => nazwa klucza
"redirects" => "form_no_perm"
"redirects" => "update_sobi_no_perm"
"redirects" => "show_sobi_unpublished"plik sobi2.php
nazwa sekcji => nazwa klucza
"redirects" => "form_no_perm"plik sobi2.class.php
nazwa sekcji => nazwa klucza
"redirects" => "no_sobi_attr"
"redirects" => "save_sobi_no_title"
"redirects" => "update_sobi_no_perm"
"redirects" => "unpublish_sobi_no_perm"
"redirects" => "delete_sobi_no_perm"
"redirects" => "sobidata_not_logged_user"Wszystkie klucze dotyczą sekcji "redirects" czyli używane są przy przekierowaniu na inna stronę przy nie spełnieniu określonego warunku. Domyślnie przekierowanie następuje na stronę główna: index.php.
Wystarczy zatem utworzyć plik diagnostyka.php który przyjmuje 1 parametr: numer błędu i zapisać w katalogu głównym instalacji joomla.
Teraz otwieramy w panelu administracyjnym "Edytor Rejestru" (Konfiguracja => Edytor Rejestru ) i do w/w kluczy wpisujemy kolejno wartość: diagnostyka.php?error=1, diagnostyka.php?error=2, diagnostyka.php?error=3 itd.

Wykonujemy operacje która wywoływała błąd a wtedy powinniśmy zostać przekierowani do pliku diagnostyka.php który wyświetli nr błędu przesłanego jako parametr 'error'.
Jesteśmy w domu. Wiemy który klucz dotyczy błędu a na podstawie tego uzyskujemy odpowiedz na nasze pytanie.

P.S.
Wybacz że zamiast krótkiej i zwartej odpowiedzi na zadane przez Ciebie pytanie produkuję lekko przytłaczającego posta, ale uważam że w/w wskazówki powinny pomóc w rozwiązaniu problemu Tobie i potomnym przy różnych problemach z sobi2.

pioadam
22-06-2009, 17:13
Witam! Dzięki za tak rozbudowaną odpowiedź! podmienienie wpisów w rejestrze pomogło i paypal działa. Jeszcze raz serdeczne dzięki!
Napotkałem natomiast inny problem:
znalazłem sposób jak automatycznie dodawać wpisy po przelewie w paypal'u http://www.sigsiu.net/forum/index.php?topic=16716.0
Wszystko działa świetnie, no może prawie, ponieważ jedyna waluta w jakiej to działa to USD.
Czy mógł by mi ktoś pomóc z obsługą PLN?
z tego co znalazłem w kodzie, fragment odpowiadający za walutę to


// Can be USD, GBP, EUR, CAD, JPY
$currency_code = trim(stripslashes($_POST['mc_currency']));
Pozdrawiam!