Niezrozumiałe zachowanie kodu PHP

Pisałem stronę internetową na własny użytek. Mam problem, bo formularz w logowanie.php ma problem z przesłaniem danych do login.php z metodą GET i POST.
Kod zatrzymuje się w linijce 25 pliku login.php
Stronę testuję na WAMP wersja 2.4 x84
login.txt (2,4 KB)
logowanie.txt (1,0 KB)

Z jakim błędem zatrzymuje się parser php?

Pisanie strony w ten sposób nawet na własny użytek to tylko proszenie się o kłopoty.

Gdy wywołuję echo $_POST[“login”] wywala Undefined index: login.
Wiem, że to oznacza nieistniejący wpis w tablicy, ale powinien istnieć skoro najpierw wysyłam wypełniony formularz do login.php a on próbuje to wyświetlić…

Tak, tylko że formularz wysyłasz GETem a nie POSTem więc taki index nie istnieje w tablicy POST.

No i nie wiem jak u Ciebie, ale u mnie w pliku który przesłałeś jest to linijka 18.

Przed wysłaniem chciałem sprawdzić, czy działa metoda GET. Też odpada.
Przed wysłaniem nie zdążyłem z powrotem poprawić na POST, moja wina!
Ale na obydwu metodach wysypuje się…

EDIT: Jak wysyłałem metodą GET to w górnym pasku nie było tej składni login.php/?login=cośtam&password=jeszcze

Nie masz atrybutu name w polach formularza więc php nie wie jak nazywają się zmienne, a przeglądarka pod jakimi nazwami je wysłać więc prawdopodobnie nie wysyła ich wcale.

Dzięki bardzo! Nawet nie wiedziałem, że takie coś musi być. Na przyszłość przetrzepię internet w poszukiwaniu tutoriali na dany temat nie zaśmiecając przy tym forum :smiley:

Spoko, ucząc się mogłeś to przeoczyć nawet lecąc według tutoriala :wink:

Cześć @wojtek20124, tylko pamiętaj, że funkcja isset() oraz empty() nieco różnią się od siebie.

Isset sprawdza czy taka zmienna istnieje, więc jak masz pole formularza “imie” i nic w takie pole nie wpiszesz, a sprawdzisz sobie w warunku przez isset($_POST[‘imie’]) to zwróci Ci prawdę, bo takie pole istnieje.
Zmienna empty sprawdza czy zmienna jest pusta, więc masz podwójne sprawdzenie, bo najpierw sprawdza czy w ogóle taka zmienna istnieje, a następnie czy jest pusta (null lub pusty string).

Sprawdź sobie co Ci zwróci poniższy przykład :slight_smile:

<?php
$value = '';

if(isset($value)){
	print_r('true');
}

if(!empty($value)){
	print_r('true');
}

Szczegół, o którym dowiedziałem się 5 dni temu z oficjalnej strony php. Z obecnego lenistwa dodałem sprawdzenie, czy napis jest pusty za pomocą operatora ===
Ale dzięki za dobre chęci :slight_smile: