webForumDet fria alternativet

$_GET Och undefined index?

5 svar · 394 visningar · startad av tillmar

tillmarMedlem sedan sep. 2002928 inlägg
#1

Hej
Jag har nyligen börjar gå över på från asp till php.
Och sitter och kodar lite här och får detta fel.

Notice: Undefined index: sida in C:\Program\Apache Group\Apache2\htdocs\gb\action.php on line 9

Notice: Undefined index: sida in C:\Program\Apache Group\Apache2\htdocs\gb\action.php on line 18

Notice: Undefined index: sida in C:\Program\Apache Group\Apache2\htdocs\gb\action.php on line 23

<?php
session_start();
session_register('admingb');

//kolla så att man är inloggad
if ( $_SESSION['admingb'] == 'granted')
{

	if($_GET['sida'] == "svara")    //Rad 9
	{
		$id = $_GET['id'];
		echo "Skriv ditt svar i rutan<br />";
		echo "<form action=\"action.php?sida=svara1&id\"" . $id ."";
		echo "<textarea name=\"svar\" cols=\"50\" rows=\"10\"></textarea><br />";
		echo "<input type=\"submit\">";
		echo "</form>";
	} 
	else if($_GET['sida'] == "svara1") //Rad 18
	{
	//svarkoden
	echo "svaret sparas";
	}
	else if($_GET['sida'] == "delete") //rad 23
	{
	echo "delete";
	}
}
else {
echo "Du verkar inte vara inloggad";
}
?>

Fick även detta fel när jag körde denna kod

if ( $_SESSION['admingb'] == 'granted')

Men ordnade sig med session_register. Varför måste man använda detta?!

Mvh Pontus

GislavedMedlem sedan nov. 20041 740 inlägg
#2

Den säger helt enkelt att $_GET['sida'] inte är definierad någonstans. Du kan antingen definiera alla dina variabler & arrayer i början av filen, eller så kollar du om de finns över huvud taget.

if(isset($_GET['sida']) && $_GET['sida'] == "svara") ...
TroxyMedlem sedan mars 20041 505 inlägg
#3

Du får inget fel, utan en notis. En notis säger till om saker som eventuellt skulle kunna bli till fel. Det finns där för man lättare ska veta vad som händer. I det här fallet så försöker du kolla värdet på GET-variabeln "sida" fast den inte finns.

ASP är ett väldigt förlåtande språk som låter dig läsa värden från variabler även fast dom kanske inte existerar. PHP fungerar i stora drag på samma sätt, fast man får notiser om saker som man borde rätta till.

Om du exempelvis läser en GET-variabel så är det säkrast att först kontrollera om den ens existerar genom att använda sig av funktionen isset().

För att bli av med notiserna ovan så kan du exempelvis skriva såhär istället:

if ( isset($_GET['sida']) && ($_GET['sida'] == 'svara') )
tillmarMedlem sedan sep. 2002928 inlägg
#4

Aha då förstår jag!

Då har jag en liten fråga till bara.

Vad är skillnaden på att skriva

$_GET['sida'] == 'svara'

Och...

$_GET['sida'] == "svara"

Alltså ' ' eller " "
Har fått för mig att den tolkar den som två olika typer eller är jag hel ute och cyklar?

TroxyMedlem sedan mars 20041 505 inlägg
tillmarMedlem sedan sep. 2002928 inlägg
#6

Där du, en får tacka :D

129 ms totalt · 3 externa anrop · v20260731065814-full.91fd2ad2
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)