Med IIS får jag detta felmedelande, (men på ett Linux webhotell funkar det)
Notice: Undefined index: QUERY_STRING in C:\Inetpub\home\fnf.nu\gastbok\2\pagfunc.php on line 19
vilken ser ut så här:
$getvar = $HTTP_SERVER_VARS['QUERY_STRING'];
6 svar · 224 visningar · startad av perp
Med IIS får jag detta felmedelande, (men på ett Linux webhotell funkar det)
Notice: Undefined index: QUERY_STRING in C:\Inetpub\home\fnf.nu\gastbok\2\pagfunc.php on line 19
vilken ser ut så här:
$getvar = $HTTP_SERVER_VARS['QUERY_STRING'];
det där är inget fel-meddelande utan bara en "notis" som talar om att det indexet i $HTTP_SERVER_VARS inte är satt eller så är det tomt. Att detta inte kommer upp på Linux-servern beror nog på att den servern har stängt av notiser i php.ini.
Gör detta så här:
1. Öppna php.ini
2. Hitta detta: error_reporting = E_ALL
3. Ändra till: error_reporting = E_ALL & ~E_NOTICE
Tack! vad skulle man ta sig till utan detta forum :-)
En notis betyder att man gjort något som visserligen är tillåtet, men som inte är att rekommendera, t.ex att använda en variabel som inte är initierad tidigare.
Notisen kan också betyda att man har något fel (oftast logiskt) i sitt skript.
På en webserver som man endast har för utveckling lokalt, bör man visa alla notiser, och istället ändra koden så man slipper dom. Det är oftast inga större problem.
Då får man på köpet "felmeddelanden" som kan visa på brister i skriptet.
I det här aktuella fallet försöker man i koden hämta det som ligger i QUERY_STRING, alltså det som kommer efter frågetecknet i en URL. Tydligen saknar du variabeln QUERY_STRING på din server. Har du variabler efter frågetecken i adressfältet så är denna kod av vikt och felmeddelandet ska inte bara rensas bort.
Jag skulle isåfall rekommendera dig att du byter ut
$getvar = $HTTP_SERVER_VARS['QUERY_STRING'];
mot
$temp_arr = array();
foreach($HTTP_GET_VARS as $key => $val) {
$temp_arr[] = "$key=$var";
}
$getvar = implode("&", $temp_arr);
I det här fallet handlade det om en funktion för att dela upp på flera sidor, och i vissa fall. blir det inget efter ? därav felmedelandet som jag nu fattar.
Vad gör bytet av koden? hinner inte testa just nu.
Den skapar query-strängen manuellt.
På de flesta webservrar med PHP har du en variabel som heter $_SERVER['QUERY_STRING'] (eller $HTTP_SERVER_VARS['QUERY_STRING'] eller $QUERY_STRING).
Har du i adressfältet sida.php?var1=A&var2=B så innehåller QUERY_STRING var1=A&var2=B
Denna variabel tycks du sakna i din webserver. Däremot har du GET-variablerna $_GET['var1'] med värde A och $_GET['var2'] med värde B. I äldre PHP-versioner använder man $HTTP_GET_VARS istället för $_GET.
Vad koden gör är att ta dina GET-variabler och gör en sträng som är identisk (grovt sett) med QUERY_STRING.
På detta så får du fram motsvarande värde för $getvar som om QUERY_STRING hade funnits på din webserver.
Felmeddelandet betydde alltså inte att din QUERY_STRING var tom, utan det betydde att du överhuvudtaget inte hade den på webservern.