![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Piszę to w kontekscie wielu ostatnich postów, gdzie ludzie mieli podstawowe problemy z debugowaniem i analizą kodu.
Warto zacząć od: jak pisać? 1. Problemy z tablicami Często pomocną funkcją przy debugowaniu problemów z tablicami jest:
W ten sposób można np. sprawdzić co trzymamy w tablicy $_SESSION, w tablicach $_GET, $_POST oraz $_REQUEST i sprawdzać co zostało nam przesłane np. formularzem. Możesz równie dobrze w ten sposób kontrolować co zwraca Ci zapytanie z bazy danych:
2. Problemy z zapytaniem SQL Mamy jakieś zapytanie:
I coś niedobrego nam się dzieje. Wtedy można użyć funkcji mysql_error która podpowie nam co robimi źle:
3. Problem z session Czasmi, przed użyciem sesji zapominamy o session_start. 4. Problem z kodowaniem/czcionkami Aby wszystko było ze sobą "zgrane", zazwyczaj wystaczy używać edytora który zapisuje pliki w odpowiednim kodowaniu i dać na początku np:
gdzie utf-8 możemy zastąpić naszym kodowaniem. 5. Szukałem na forum ale nie znalazłem W opcjach wyszukiwania najlepiej wybrać: Gdzie szukać->Wszystkie fora oraz Szukaj postów od->kiedykolwiek 6.Cannot add header information - headers already sent Tak jak podał to aleksander w swoim przyczepionym poście, rozwiązanie znajduje się tutaj. 7. Notice: Undefined variable: ... Często serwery php mają ustawione: Cytat error_reporting = E_ALL & ~E_NOTICE w pliku php.ini i ten błąd nie wyskakuje, jednak aby się te błedy nie wyświetlały w wielu przypadkach, przed dokonaniem operacji na jakiejś zmiennej wystarczy użyć pętli oraz funkcji isset:
8. Kod mi nie działa i nie wyświetla żadnego błędu Jeśli kod nie działa i nie wyświetla żadnego błędu, możesz usunąć wszystkie znaki @ (o ile takie są) sprzed funkcji. Np:
9. Nie widać błędów (by strife) Często bywa tak, że nie widzimy błędów w skrypcie i wszystko wydaje nam się dobrze napisane, jednak skrypt działa niepoprawnie. Aby zaradzić temu, i szybko poprawiać napotkane błędy za wczasu, do każdego skryptu na początku dodajemy raportowanie błędów na E_ALL, w taki oto sposób:
Umożliwi to wykrywanie błędów, których nie dostrzegamy normalnie, a które mogą być ukryte poprzez po prostu konfigurację serwera. Jest to bardzo ważne. Dodatkowo (by Hacker) w PHP5 najlepjej stosować E_ALL | E_STRICT. 10. Na localu działa a na serwerze nie... (by nospor) Często takie zdanie słyszymy, gdy ktoś próbuje dobrać się do parametru w linku poprzez $zmienna a nie $_GET['zmienna']. Podobnie z formularzem przesyłanem postem. Zamiast pisać $_POST['zmienna'] piszą $zmienna. Konstrukcję $zmienna można stosować gdy włączone jest register_globals. Ale należy tego unikać gdyż jest to niebezpieczna praktyka i hostingi coraz częściej to wyłączają. Podsumowując: Dla linka: http://jakislink/?zmienna=1&zmienna2=2
Dla forma
Mam nadzieję, że to się komuś przyda ![]() Ten post edytował TomASS 24.05.2008, 09:27:04 -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Skoro debugowanie to proces pozbywania się błądów (bug'ów) to czym jest w takim razie programowanie?
![]() ~TomASS podał kilka rzeczy, które sprawdzone na samym początku pozwolą nam od razu wyłapać błędy w aplikacji. Gdyby każdy przed zadanim pytania, zacząłby od powyższych to to forum miałoby połowę mniej postów ![]() Temat przypinam, bo warto utworzyć zbiór porad, które pomogą Wam samemu znajdować błędy we własnych skryptach. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 6.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ja chciałbym trochę wspomnieć o kodowaniu znaków. Na wielu forach widzę, że są z tym problemy to tu napiszę jak temu zaradzić
![]() Często źle są wyświetlane polskie znaki takie jak ł, ś, ć itp. Aby to naprawić trzeba mieć w dokumencie: Kod <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2"> a jak będzie źle wyświetlać to tekst można przekonwertować np. programem Ogonki97. Albo wpisywać polskie znaki wg. tej tablicy: http://webdesign.art.pl/atelier/ISO_8859-2.html np. zamiast ł trzeba wpisać ł. I powinno być ok. Często też wielu Webmasterów pisze stronę tylko przy użyciu notatnika. On niestety nie koduje znaków w iso-8859-2 i najlepiej robić strony w jakimś edytorze tekstowym (np. EditPlus 2. W większości programów można ustawić aby kodowało w iso-8859-2). Ten post edytował adam9870 9.04.2006, 20:46:56 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
A czy to nie jest napisane w pkt 4 ?
![]() Że trzeba ustawić kodowanie i w dodatku takie samo kodowanie musi być ustawione w edytorze ![]() Acha - w notatniku można zapisać niektóre kodowania ![]() Ten post edytował TomASS 9.04.2006, 23:15:01 -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 449 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Sam pisze w większość w notatniku i problemow z kodowaniem juz nie mam, ale moze ktoś wie jak w winXP zrobić sobie nowy skrót klawiszowy pod którym przypisze się znaki, których często się używa, a nie są dostępne wprost z klawiatury?
Gdzieś w końcu znajduje się odpowiedni wpis (w klawiaturze programisty) określający, że Alt+a daje "ą" więc napewno można sobie zrobić inne kombinacje? -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 195 Pomógł: 14 Dołączył: 12.01.2006 Skąd: Gotham City Ostrzeżenie: (0%) ![]() ![]() |
mniej błędów sie też popełnia jak sie nie pisze w notatniku.. i jest podświetlanie składni, przeglądarka klas i wiele pomocnych rzeczy... jak np w phpEclipse... no i najlepiej programowac obiektowo to tez wplywa na to ze mniej sie bledow popelnia w porownaniu ze strukturalnym programowaniem... starac sie zeby metoda klasy nie miala wiecej niz jednej strony A4
![]() ![]() -------------------- Temat zamykam i przenoszę do Bangladeszu.
To jest wiadomość śmierci jeśli ją czytasz to znaczy że pozostało ci 30 sekund życia, więc lepiej zacznij się modlić. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 6.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat("TomASS") A czy to nie jest napisane w pkt 4 ? Troszkę jest, ale jak zrobić aby wszytskie znaki polskie były dobrze wyświetlane nie ma bo nie zawsze wystarczy tylko wstawić : Kod <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2"> często mimo to są źle kodowane niektóre znaki więc wspomniałem w swoim poście o programie Ogonki97 oraz o tablicy ![]() ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 449 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Cytat(adam9870 @ 2006-04-10 15:19:41) nie zawsze wystarczy tylko wstawić : Wystarczy wstawić odpowiedni wpis (a nawet jest to obowiązkowe) dotyczący kodowania, tylko trzeba się jeszcze do niego zastosować podczas edycji pliku.Kod <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2"> A różnica pomiędzy kodowaniem windows-1250 a iso-8859-2 dotyczy tylko trzech znaków: "ą, ś, ź" i oczywiście ich duzych odpowiedników. Z pozostałymi znakami nie ma zadnego problemu. -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ad. 1 To dużo ładniejsze jest wyjscie z var_dump() po zainstalowaniu rozszerzenia xdebug.
Odnosnie ostatnich postów nie bardzo rozumiem po co wracać do iso-8859-2. Przecież utf-8 załatwia sprawę. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 26.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Z wlasnego doswiadczenia : Komunikaty zwrotne z bazy danych wyswietlamy :
kolejna rzecza ktora mnie bardzo irytowala na poczatku bylo ( przy probie uzycia sesji czy tez wyslania naglowka ) wstawianie JAKIEGOKOLIEK znaku na poczatku pliku (czesto ENTER lub SPACJA). |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 23 Dołączył: 3.06.2006 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
yavaho, zobacz tu: http://windows.online.pl/klawiat.htm
Ja sobie zainstalowalem i nie mam żadnych problemow, jak chce przelaczam na iso-8859-2 i od razu mam klawiaturke pod tym kodowaniem ![]() -------------------- Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 449 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Dzieki mokry
To mi w zupełności wystarczy do szczęścia ![]() -------------------- |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 1.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
witam
mam problem ze stroną kodową. przy wyświetlaniu tekstu pobranego z bazy MSSQL2000 w miejscu polskich znaków mam krzaczki i inne fajne znaczki. Ustawione mam iso-8859-2. Sprawidziłem, czy strona kodowa w MSSQL jest właściwa - jest. Sprawdziłem też pobierany tekst za pomocą Excel. Jest OK. Polskie litery nie pobierane z bazy danych są prawidłowo wyświetlane. Czy ktoś wie ,jak ten problem rozwiązać. Zmiana bazy danych nie jest możliwa. Mam PHP4. na stronach pl2.php.net znalazłem informację o parametrze mssql.charset dostępnym dla wersji php 5.1.2. Zastanawiam się czy jeżeli nie da się rozwiązać w 4 to przejść na 5 (co wcale nie oznacza, że problem będzie rozwiązany). Ten post edytował r_a_d_e_k 21.06.2006, 12:09:19 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 449 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Czy baza danych (a raczej tekst w bazie) już istniała wcześniej niż strona, która pobiera z niej tekst?
Jeżeli nie, to jak kodowana jest strona na której znajduje się formularz do wprowadzania danych do bazy? Jeżeli zmienisz kodowanie strony np: na iso-8859-1 lub utf-8 to też są krzaki w tych tekstach, które pobierane są z bazy danych? -------------------- |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 1.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
zmiana strony kodowej powoduje wyświetlenie innego zestawu znaczków. dla utf-8 w miejsce polskich liter pojawiają się ?. Tekst został wcześniej wprowadzony. nie ma formularza do wprowadzania, gdyż obecnie informacje są statyczne.
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
dodatkowo w PHP5 najlepjej stosować E_ALL | E_STRICT
proszę również o usunięcie mojego posta i ew. dodanie do posta autora tematu -------------------- (\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him... (> <)...on his way to world domination |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 7.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Problem: php podczas próby wysłania cookie wyświetla ostrzeżenie podobne do:
Kod Warning: Cannot modify header information - headers already sent by (output started at /sciezka/do/pliku/cos.php:X) in /sciezka/do/pliku/cos.php on line X Rozwiązanie: Na samym początku skryptu (nie mogą być wysłane żadne dane, nawet jedna spacja) dodaj kod: oraz na końcu: -------------------- ![]() |
|
|
![]()
Post
#20
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
» PeHaPe - Czytałeś pkt. 6?
![]() -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 10.06.2024 - 13:43 |