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

Błąd na stronie - XAMPP

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
+1 głos
400 wizyt
pytanie zadane 20 czerwca 2015 w HTML i CSS przez Wiiiciu Obywatel (1,110 p.)

Witajcie

Mam wielki problem który przeszkadza mi w mojej pracy. Otóż chodzi tu tak jak napisałem o XAMPPA, mam napisaną stronę, testuję ją w tym lokalnym serwerze, i nad całą stroną widnieje informacja

 

Notice: Undefined index: p in D:\XAMPP1\htdocs\strona\funkcje\index_strony.php on line 6

 

A w ten plik to: 

<?php


function wczytuj_strony()
{
	$go = $_GET['p'];
	if(!empty($go)) 
	{
		if(is_file("strony/$go.php"))
		{
			include "strony/$go.php";
		}
		else
		{
			include "strony/error.php"; 
		}
	}
	else
	{
		include "strony/start.php"; 
	} 
}
?>

Czemu ta informacja się ukazuje? Jest tylko w XAMPP, już w normalnym serwerze z hostingu wszystko jest ok.

 

Proszę o pomoc

 

Pozdrawiam Wiktor

2 odpowiedzi

+2 głosów
odpowiedź 20 czerwca 2015 przez Comandeer Guru (607,060 p.)
wybrane 20 czerwca 2015 przez Wiiiciu
 
Najlepsza

Nie jest ok, tylko na serwerze nie masz włączonego wyświetlania E_NOTICE

Problem polega na tym, że z góry zakładasz, że istnieje zmienna $_GET['p'] - a przecież jak ktoś wejdzie na stronę, to ta zmienna nie będzie dostępna w adresie. Dlatego zawsze przed użyciem zmiennej należy sprawdzić czy istnieje:

$go = isset($_GET['p']) ? $_GET['p'] : null;

//powyższy zapis (operator trójkowy) jest równoważny z:

if(isset($_GET['p']))
    $go = $_GET['p'];
else
    $go = null;

BTW polecam przepuścić to dodatkowo przez basename, tak dla pewności.

komentarz 20 czerwca 2015 przez Wiiiciu Obywatel (1,110 p.)
Wielkie dzięki! Wszystko działa :)
0 głosów
odpowiedź 20 czerwca 2015 przez Arkadiusz Waluk Ekspert (290,250 p.)

Na hostingu to ostrzeżenie dalej występuje tylko że na pewno wyłączone jest pokazywanie błędów ;)

A występuje wtedy gdy nie istnieje zmienna $_GET['p']. Czyli trzeba by najlepiej zrobić coś w tym stylu:

if(isset($_GET['p'])) $go = $_GET['p']; else $go='';

Po prostu jeśli p nie istnieje to ustawia je na pustą wartość i wtedy nie będzie problemu ;)

 

EDIT: @Comandeer zawsze jesteś kilkanaście sekund szybszy ode mnie :D

komentarz 20 czerwca 2015 przez Comandeer Guru (607,060 p.)
Narzekają na to użytkownicy wielu forów…

Chodzą słuchy, że jestem botem ;)
komentarz 20 czerwca 2015 przez Arkadiusz Waluk Ekspert (290,250 p.)
Haha no to całkiem niezłym, tyle rozwiązań na przeróżne problemy znasz albo dobry algorytm wyszukujący masz :D

A tak poważnie to nie narzekam i liczy się wg mnie to że pomoc uzyskała kolejna osoba a od kogo to już mniej ważne ;)

Podobne pytania

0 głosów
1 odpowiedź 463 wizyt
pytanie zadane 19 grudnia 2018 w HTML i CSS przez FutrzaQQ Nowicjusz (180 p.)
0 głosów
1 odpowiedź 509 wizyt
0 głosów
1 odpowiedź 686 wizyt

93,443 zapytań

142,434 odpowiedzi

322,691 komentarzy

62,805 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

...