|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
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:
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?
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 $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" |
|
|
|
|
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 $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. |
|
|
|
|
|
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
|
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 | |
|
|