Niezrozumiałe zachowanie kodu PHP


(wojtek20124) #1

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)


(Fizyda) #2

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.


(wojtek20124) #3

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ć…


(Fizyda) #4

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.


(wojtek20124) #5

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


(Fizyda) #6

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.


(wojtek20124) #7

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:


(Fizyda) #8

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


(danoxide) #9

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');
}

(wojtek20124) #10

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: