Kurs PHP - dodatki
Dodatki
Najczęstsze błędy
Każdemu zdarzają się pomyłki, mnie również. PHP jednak ułatwia nam nieco sprawę, bo wyświetla komunikaty o błędach. Postaram się objaśnić znaczenie tych najczęściej występujących.
$dlugosc = strlen($str);
Błąd: Notice: Undefined variable: str in 'plik' on line 'linia'
Znaczenie: Nie ma zmiennej o takiej nazwie (nie została zdefiniowana - to znaczy - nie została przypisana jej żadna wartość)
Jak poprawić: Po pierwsze można użyć funkcji isset, aby sprawdzić, czy taka zmienna rzeczywiście istnieje, a potem dopiero wykonywać działania na tej zmiennej. Jest to sposób wygodny, gdy nie jesteśmy pewni istnienia zmiennej (na przykład to dana z formularza wysłanego metodą POST, ale użytkownik mógł wejść bez pośrednictwa formularza na stronę ze skryptem jego obsługi).
A jeżeli jesteśmy pewni, że taka zmienna jest gdzieś w skrypcie, albo powinna być w tym miejscu, gdzie chcemy z niej skorzystać, to sprawdźmy, czy nie popełniliśmy literówki w nazwie albo przypiszmy najpierw tej zmiennej jakąś wartość.
$tekst = trim(inny_tekst);
Błąd: Notice: Use of undefined constant inny_tekst - assumed 'inny_tekst' in 'plik' on line 'linia'
Znaczenie: Użyto niezdefiniowanej stałej. PHP założyło, że chodzi o tekst odpowiadający tej nazwie.
Jak poprawić: W przykładzie powyżej widać na pierwszy rzut oka, że jest coś nie tak, bo argument funkcji jest wyświetlone w innym kolorze i kursywą. To akurat zasługa kolorowania składni, jakie oferuje wiele edytorów kodu PHP. A chodzi po prostu o to, że brakuje dolara przed nazwą zmiennej. Używając dobrego edytora (takiego jak na przykład Pajączek), który wyróżnia innym kolorem nazwy zmiennych, masz dużą szansę, że nie zobaczysz tego błędu, bo coś "nie będzie grało" w kolorach na monitorze.
Przykład:
echo('tekst';
Błąd: Parse error: parse error in 'nazwa pliku' on line 'linia'
Znaczenie błędu: Brak nawiasu w instrukcji echo. (parse error - tu: błąd składni)
Jak poprawić: wstawić nawias
Przykład:
function aaa
{
echo 'aaa';
}
Błąd: Parse error: parse error, expecting `'('' in 'plik' on line 'linia'
Znaczenie błędu: Błąd składni - brak nawiasów w definicji funkcji
Jak poprawić: jeżeli funkcja pobiera argumenty, to podać je w nawiasach. Jeżeli nie, to i tak wstawić puste nawiasy.
Przykład:
if (isset($action)
{
echo 'blablabla';
}
Błąd: Parse error: parse error in 'nazwa pliku' on line 'linia'
Znaczenie: to samo, co powyżej, ale tym razem to błąd w zagnieżdżeniu nawiasów
Jak poprawić: Dopisać jeszcze jeden nawias (od if)
$file = fopen('plik.txt');
Błąd: Warning: Wrong parameter count for fopen() in 'plik' on line 'linia'
Znaczenie: Ostrzeżenie - nieprawidłowa ilość parametrów (argumentów) dla funkcji fopen
Jak poprawić: podaj odpowiedni drugi argument. Dla przypomnienia ich pełna lista:
//Funkcja fopen otwiera plik plik.txt:
$plik = fopen('plik.txt', 'r'); // do odczytu
$plik = fopen('plik.txt', 'w'); // do skasowania całej zawartości i zapisu
$plik = fopen('plik.txt', 'a'); // do dopisywania nowej treści
$plik = fopen('plik.txt', 'r+'); // do odczytu i zapisu
$plik = fopen('plik.txt', 'w+'); // do skasowania wszystkiego, zapisu i odczytu
$plik = fopen('plik.txt', 'a+'); // do dopisywania i odczytu
$p = fopen('plik.txt', 'r');
fclose($p);
Błąd: Jeżeli nie ma pliku plik.txt, to PHP zwróci komunikat:
Warning: fopen('plik.txt', 'r') - No such file or directory in 'plik' on line 'linia'
Znaczenie: Ostrzeżenie - nie ma takiego pliku lub katalogu (coś jak DOSowe 'Bad command or filename'... ktoś to jeszcze pamięta?)
Jak poprawić: Stworzyć taki plik, albo zmienić wywołanie funkcji fopen do istniejącego pliku
I związany z tym błąd:
Warning: Supplied argument is not a valid File-Handle resource in 'plik' on line 'linia'
Znaczenie: Podany argument nie jest prawidłowym "wskaźnikiem na plik" (wolna interpretacja)
Jak poprawić: Jak wyżej
echo '<HTML>';
// ...
setcookie('ciasteczko', 'nadzienie czekoladowe');
Błąd: Warning: Cannot add header information - headers already sent by (output started at 'plik':'linia') in 'plik' on line 'linia'
Znaczenie: nie można dodać informacji nagłówka, ponieważ wcześniej wysłano coś do przeglądarki, np. instrukcją echo lub w inny sposób. Taki sam błąd pojawiłby się, gdyby była wywołana funkcja header.
Jak poprawić: Jeżeli sądzisz, że nic nie wysyłasz do przeglądarki przed nagłówkami, upewnij się, że przed blokiem kodu PHP nie ma nic. Nawet jedna spacja przed znacznikiem <?php może spowodować ten błąd. Jeżeli już musisz coś wysyłać przed nagłówkami, to radą jest tu buforowanie wyjścia. Aby je zastosować, w kodzie PHP, gdzieś powyżej wywołania funkcji wysyłajacej nagłówki, umieść wywołanie funkcji
ob_start();
Funkcja ob_start uruchamia mechanizm buforowania. Możesz za ten czas wysyłać nagłówki, a treść strony zostaje wrzucana do bufora. Gdy skrypt zakończy działanie i w buforze będzie kompletna strona, zostanie ona wysłana jako jedna całość do przeglądarki.
[--Spis treści--]
_uacct = "UA-374880-1";
urchinTracker();
writeObjects();
Wyszukiwarka
Podobne podstrony:
les09 conf err rep smfunction yp err stringARYTM KOL2 05 06 rozw errerrwięcej podobnych podstron