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
Problemy z modyfikacjami w wersji 1.12.8
Autor Wiadomość
Woytec


Pomógł: 2596 razy
Posty: 7676
Wysłany: 20-11-2013, 14:03   Problemy z modyfikacjami w wersji 1.12.8

1. Obsługa baz danych
W wersji 1.12.8 wprowadzono obsługę mysqli, domyślnie włączoną. W związku z tym niektóre modyfikacje nie działają, ponieważ wykorzystują nadal funkcje służące do operowania na połączeniu mysql. Gdyby modyfikacje były pisane wg. standardu - tzn. wykorzystywały klasę "db" to problemu by nie było, ponieważ działałyby praktycznie niezależnie od tego, z jakiego silnika bazy danych korzysta pozostała część skryptu (problem może ewentualnie wystąpić z zapytaniami ale w przypadku mysqli to nadal jest taki sam standard jak mysql, to tylko sposób połączenia).
Charakterystyczne komunikaty o błędach zaczynają się na:
Kod:
Warning: mysql****

wskazujące na linię z funkcją dokonującą operacji w bazie danych(np. wywołanie zapytania)

W takim przypadku, w zmodyfikowanych plikach, jak i dołączonych do modyfikacji należy zmienić te funkcje na odpowiedniki z klasy "db".
  • mysql_query na $db->sql_query
  • mysql_fetch_array na $db->sql_fetchrow
  • mysql_num_rows na $db->sql_numrows


2. Cache
W związku ze zmianą sposobu działania cache, mogą pojawić się komunikaty o błędach zaczynające się od:
Kod:
Warning: include(Array)

wskazujące na linię
Kod:
include ($check_cache);

a kilka linii wcześniej
Kod:
sql_cache('check', 'nazwa');


Nowy sposób od razu zwraca zawartość cache a czy coś tam jest sprawdzamy czy zmienna jest pusta a nie jak dotychczas - funkcja zwracała informację o tym, że coś jest w cache i jeżeli zwróciła prawdę to includowaliśmy ten plik.

Nowy wzór:

Kod:
$nazwa = sql_cache('check', 'nazwa');

if(empty($nazwa)
{
//Nie ma nic w cache. Pobieramy z bazy
}
//dalsze operacje

Dla kompatybilności "nazwa" powinna być taka sama w nazwie zmiennej i drugiego parametru funkcji, tak jak we wcześniejszym fragmencie.

3. Funkcja htmlspecialchars
Od wersji php 5.4 zmieniona została zawartość parametru "kodowanie" tej funkcji na nie używane na razie UTF co powodowało problemy m.in przy wysyłaniu postów. Najłatwiej będzie zamienić wszystkie htmlspecialchars w plikach modyfikacji i fragmentach do wyszukania na xhtmlspecialchars - w 1.12.8 stworzyliśmy tę funkcję aby podawała prawidłowy trzeci parametr.

4. Optymalizacje kodu
Nie powoduje to błędów ale ulepsza kod.
Zachęcam do korzystania z funkcji get_vars
Kod:
function get_vars($name, $empty = false, $methods = 'POST,GET', $int = false, $array_level = 0)

Przykład: Zamiast
Kod:
if( isset($HTTP_GET_VARS['mark']) || isset($HTTP_POST_VARS['mark']) )
{
    $mark_read = ( isset($HTTP_POST_VARS['mark']) ) ? $HTTP_POST_VARS['mark'] : $HTTP_GET_VARS['mark'];
}
else
{
    $mark_read = '';
}

można zapisać
Kod:
$mark_read = get_vars('mark', false, 'POST,GET');
Ostatnio zmieniony przez Woytec 14-12-2013, 20:59, w całości zmieniany 1 raz  
 
     
Gadatliwa Kasia 

   
yukos

Posty: 1
Wysłany: 06-12-2013, 14:52   

Mam pytanie jeśli chodzi o podpunkt 4 - gdzie i jak to mam zrobić... ?
Bardzo proszę o odpowiedź. Pozdrawiam.
Ostatnio zmieniony przez Woytec 14-12-2013, 21:00, w całości zmieniany 1 raz  
 
     
Woytec


Pomógł: 2596 razy
Posty: 7676
Wysłany: 06-12-2013, 17:49   

Do działania modyfikacji nie jest to ważne. Tworzysz jakąś?
 
     
HYPERSHOCKK^

Pomógł: 1 raz
Posty: 87
Wysłany: 09-12-2013, 19:13   

Pkt 2 też nas nie interesuje? :P

Jak będzie taki komunikat to jakie pliki trzeba edytować aby pozbyć się tego błędu? Bo chyba nie wszystkie załączone z modem i wszystkie jakie edytowaliśmy dla tego moda?
 
     
Woytec


Pomógł: 2596 razy
Posty: 7676
Wysłany: 09-12-2013, 19:16   

HYPERSHOCKK^ napisał/a:
Pkt 2 też nas nie interesuje?
Zależy czy dodawany kod/obecny w dodatkowych plikach zawiera wykorzystanie cache i to po staremu
 
     
Kajtek223

Posty: 8
Wysłany: 27-01-2014, 23:48   

Pomógłbyś mi? Robię punkt 2, ale coś mi nie wychodzi, bo wyskakują wtedy inne błędy.
U mnie jest takie kodowanie, gdzie i jak wstawić? Jakbyś mógł to podstaw mi :)
Kod:

{
    if ($check_cache = sql_cache('check', 'sb_count'))
    {
        include($check_cache);
        $row = $sb_count;
    }
    else
    {


Dzięki :)


EDIT: Zauważyłem, że był niepotrzebny znak "{" u mnie. Zrobione. Przepraszam za kłopot.
 
     
xaxaxa1

Pomógł: 2 razy
Posty: 11
Wysłany: 28-01-2014, 06:53   

Cytat:
Nie powoduje to błędów ale ulepsza kod.
Ulepsza? Wciaz ta funkcja, jak i znaczna wiekszosc zawiera w sobie archaiczny kod z czasow PHP4 ktory w obecnych czasach nie zasluguje nawet na miano slowa "tandentny".

Jak chcesz coś ulepszyć to zamiast
Kod:
if( isset($HTTP_GET_VARS['mark']) || isset($HTTP_POST_VARS['mark']) )
{
    $mark_read = ( isset($HTTP_POST_VARS['mark']) ) ? $HTTP_POST_VARS['mark'] : $HTTP_GET_VARS['mark'];
}
else
{
    $mark_read = '';
}
sens ma jedynie raczej coś takiego:
Kod:
$mark_read = (isset($_REQUEST['mark']) && !empty($_REQUEST['mark'])) ? $_REQUEST['mark'] : '';


Skoro wydajecie już "nowe wersje" to wysilcie się choć trochę i poprawcie kod sprzed kilku lat - wystarczy odpalić "przema" na serwerze z PHP 5.3 / 5.4 + error_reporting(E_ALL); ;)
 
     
Tommekk80



Pomógł: 1411 razy
Posty: 4780
Wysłany: 29-01-2014, 09:12   

$_POST i $_GET pozwala na szybsze i łatwiejsze zlokalizowanie ewentualnego problemu. $_REQUEST już nie - mamy go używać bo co - bo jest?
 
     
NineX



Pomógł: 546 razy
Posty: 1983
Wysłany: 29-01-2014, 10:58   

xaxaxa1 napisał/a:
sens ma jedynie raczej coś takiego

Nie bardzo. Nie będziemy setki/miliony razy wypisywać isset, empty, przypisywać na sztywno i zaśmiecać dodatkowo kod. W takich projektach sens jest tylko wtedy, gdy konkretna część zbliżonego do siebie kodu jest oparta na 1 funkcji, przez co w przypadku zmian, mamy dostęp z 1 miejsca pliku do każdej zmiennej, więc Twoja sugestia jest całkowicie nietrafiona. Aktualna funkcja get_vars z wersji 1.12.8 jest jak najbardziej poprawna. W przykładzie powyżej $mark_read, w pewnym stopniu powinno się zastosować $_REQUEST, ze względu na wcześniejszą konstrukcję, ale w innych przypadkach już nie. Po zmianach w php.ini request może obsłużyć cookie, co w pewnych częściach forum może powodować problemy, przez dodatkowe modyfikacje. Kod ma być uniwersalny. Poza tym, aktualnie nasza załoga wie co robi, nie potrzebujemy rad odnośnie kodu.

Pozdrawiam
 
     
xaxaxa1

Pomógł: 2 razy
Posty: 11
Wysłany: 15-02-2014, 02:48   

Tommekk80 napisał/a:
$_POST i $_GET pozwala na szybsze i łatwiejsze zlokalizowanie ewentualnego problemu.
Widać że z prawdziwym programowaniem nie masz nic wspólnego skoro takie rzeczy są dla Ciebie ważne.

Tommekk80 napisał/a:
mamy go używać bo co - bo jest?

Tak, bo jest. Jest to zmienna superglobalna tak samo jak $_POST, $_GET czy $_SERVER i nie ma żadnych przeciwskazań aby jej używać.

Cytat:
Aktualna funkcja get_vars z wersji 1.12.8 jest jak najbardziej poprawna.
W tym właśnie momencie pokazałeś swoją kompletną niewiedzę, że aż wstyd :twisted: $HTTP_GET_VARS i $HTTP_POST_VARS mają status DEPRECATED od wersji PHP, uwaga! 4.1.0 czyli przeszło od dwunastu lat. Trochę zacofany jesteś ;)

Na tym momencie możemy zakończyć dyskusję bo nie uznaję argumentów "bo mi się wydaje", bo nie są one żadnym przeciwnikiem do konfrontacji z doświadczeniami typu "wiem z doświadczenia" :mrgreen:
 
     
Gadatliwa Kasia 

   
Woytec


Pomógł: 2596 razy
Posty: 7676
Wysłany: 15-02-2014, 10:43   

xaxaxa1 napisał/a:
Cytat:
Aktualna funkcja get_vars z wersji 1.12.8 jest jak najbardziej poprawna.
W tym właśnie momencie pokazałeś swoją kompletną niewiedzę, że aż wstyd :twisted: $HTTP_GET_VARS i $HTTP_POST_VARS mają status DEPRECATED od wersji PHP, uwaga! 4.1.0 czyli przeszło od dwunastu lat.
To nie znaczy że nie można stworzyć funkcji get_vars,w której szybko można zmienić na krótsze nazwy czy twoje REQUEST.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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,09 sekundy. Zapytań do SQL: 12
Polecane serwisy

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

Sklep z gadżetami

Design Cart - Tworzenie sklepu internetowego

iRonin.IT

• Zamów reklamę