• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP formularz

Object Storage Arubacloud
0 głosów
547 wizyt
pytanie zadane 21 lutego 2016 w PHP przez michalnt Użytkownik (520 p.)
<!DOCTYPE HTML>
<html lang="pl">
	<head>
		<meta charset="utf-8">
		<title>Plyty SNJT</title>
	
	</head>
	
	<body>
		<h1>Zamówienie online</h1>
		<form action="order.php" method="post">
			Ile płyt SNJT(24.99PLN/szt):
			<input type="text" name="snjt"/>
				<br/><br/>
			
			Ile płyt Radina(30.99PLN/szt):
			<input type="text" name="radina"/>
				<br/><br/>
			<input type="submit" value="Wyślij zamówienie"/>
		</form>
	</body>

</html>
<!DOCTYPE HTML>
<html lang="pl">
	<head>
		<meta charset="utf-8">
		<title>Podsumowanie zamówienia</title>
	
	</head>
	
	<body>
		
		<?php
			
			$snjt = $_POST['snjt'];
			$radina = $_POST['radina'];
			
			echo "<h2>$snjt $radina</h2>";
		
		
		
		
		?>
		
	</body>

</html>

Witam, otoz mam problem po przesylaniu formularzu na serwerze localhost dostaje informacje ze:


Notice: Undefined index: snjt in C:\xampp\htdocs\php1\order.php on line 13

Notice: Undefined index: radina in C:\xampp\htdocs\php1\order.php on line 14

(oba pliki są w tym samym folderze)

Analizowałem ten kod kilkadziesiąt razy i nie moge za nic wychwycić błędu.

1 odpowiedź

+2 głosów
odpowiedź 21 lutego 2016 przez Comandeer Guru (601,930 p.)
wybrane 21 lutego 2016 przez michalnt
 
Najlepsza
$snjt = $_POST['snjt'];
$radina = $_POST['radina'];

Błąd jest tutaj: przypisujesz dane z $_POST, które nie muszą istnieć. Wypada sprawdzić, czy te zmienne istnieją zanim je wykorzystać.

komentarz 21 lutego 2016 przez michalnt Użytkownik (520 p.)
Nie rozumiem za bardzo.
1
komentarz 21 lutego 2016 przez Comandeer Guru (601,930 p.)

W ciemno zakładasz, że istnieją jakieś zmienne, co jest błędem. Zanim wykorzystasz jakąkolwiek zmienną, warto sprawdzić, czy faktycznie istnieje:

$snjt = isset($_POST['snjt']) ? $_POST['snjt'] : null;

 

komentarz 21 lutego 2016 przez michalnt Użytkownik (520 p.)

W filmie https://youtu.be/tD0Q5QwoQJI?t=39m21s u Pana Mirosława tak właśnie jest.39:20 dokładnie widać

komentarz 21 lutego 2016 przez Comandeer Guru (601,930 p.)
Nie pamiętam, co jest w tym filmiku, ale w gruncie rzeczy to nie zmienia faktu, że wypada sprawdzić, czy zmienna, której chcemy użyć, istnieje.
komentarz 21 lutego 2016 przez Comandeer Guru (601,930 p.)
Prawdę mówiąc nie wiem za co dostałem downvote, skoro odpowiedź jest poprawna, a nie zminusowałem samego pytania…
komentarz 21 lutego 2016 przez michalnt Użytkownik (520 p.)
Downvote dostałeś z mojej nie uwagi, poprawiłem... Wiem, że odpowiedź jest jak najbardziej poprawna, ale nie rozumiem dlaczego Pan Mirosław ma niemal identyczny kod w swoim filmie 39:20 minuta i działa wszystko.
komentarz 21 lutego 2016 przez Comandeer Guru (601,930 p.)

Prawdopodobnie ma po prostu wyłączone pokazywanie notice. Ktoś kiedyś w PHP wymyślił, że część błędów będzie traktowana jedynie jako "informacje o tym, że pewne miejsca w kodzie mogą sprawiać problem" i są one domyślnie wyłączone w starszych wersjach PHP. W nowszych są już włączone, co równocześnie wymusza używanie lepszych praktyk (jak właśnie sprawdzanie, czy zmienna istnieje przed jej użyciem).

komentarz 21 lutego 2016 przez michalnt Użytkownik (520 p.)

Ok, teraz mi w pełni rozjaśniłeś to wszystko, wielkie dzięki, a jakby to wyglądało po twojej edycji tego kodu. Dlatego, że jestem zielony w PHP i za bardzo nie wiem jak takie coś zadklerować.

<!DOCTYPE HTML>
<html lang="pl">
	<head>
		<meta charset="utf-8">
		<title>Podsumowanie zamówienia</title>
	
	</head>
	
	<body>
		
		<?php
			
			$snjt = $_POST['snjt'];
			$radina = $_POST['radina'];
			
			
			
			
			echo "<h2>$snjt $radina</h2>";
		
		
		
		
		?>
		
	</body>

</html>

 

komentarz 21 lutego 2016 przez Comandeer Guru (601,930 p.)
$snjt = isset($_POST['snjt']) ? $_POST['snjt'] : null;
$radina = isset($_POST['radina']) ? $_POST['radina'] : null;

 

komentarz 21 lutego 2016 przez michalnt Użytkownik (520 p.)
Pięknie dziękuję i przepraszam za "nadrywanie" twoich nerwów :)))))
komentarz 21 lutego 2016 przez efiku Szeryf (75,160 p.)
Oczywiscie można też się pobawić i opakować $_POST w swoją klasę, która będzie implementować interfejs ArrayAccess. https://3v4l.org/DsX47 :D Tak tylko piszę^^
komentarz 22 lutego 2016 przez suice Gaduła (3,960 p.)
jestes bardzo zabawny zasnac ze smiechu nie moge
komentarz 22 lutego 2016 przez Comandeer Guru (601,930 p.)
Nie bardzo widzę tutaj cokolwiek śmiesznego…
komentarz 23 lutego 2016 przez suice Gaduła (3,960 p.)
odpowiedz efika miala pomoc autorowi pytania? To tak jakby kulturysta swiezakowi radzil 100kg na klate brac, he :)
komentarz 23 lutego 2016 przez efiku Szeryf (75,160 p.)

"W nowszych są już włączone, co równocześnie wymusza używanie lepszych praktyk "

Tak, bo jest to jeden ze sposobów zabezpieczenia się przed dostaniem Notica ;) 

A dwa, to Comandeer pomagał autorowi pytania, nie ja. He ;)

Podobne pytania

0 głosów
2 odpowiedzi 795 wizyt
pytanie zadane 17 grudnia 2016 w PHP przez Alex.Ironside Stary wyjadacz (14,900 p.)
0 głosów
2 odpowiedzi 1,237 wizyt
+1 głos
0 odpowiedzi 197 wizyt
pytanie zadane 11 stycznia 2023 w PHP przez Tadeusz Kwoka Nowicjusz (170 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...