webForumDet fria alternativet
Logga in / Bli medlem

Felmedelande: QUERY_STRING

PHP

6 svar · 226 visningar · startad av perp

Medlem sedan apr. 200331 inlägg
Trådstart#1

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'];

Medlem sedan apr. 200354 inlägg
#2

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

Medlem sedan apr. 200331 inlägg
#3

Tack! vad skulle man ta sig till utan detta forum :-)

Medlem sedan aug. 20002 975 inlägg
#4

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);
Medlem sedan apr. 200331 inlägg
#5

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.

Medlem sedan apr. 200354 inlägg
#6

Den skapar query-strängen manuellt.

Medlem sedan aug. 20002 975 inlägg
#7

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.

248 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)