webForumDet fria alternativet

Undefined variable, igen...

4 svar · 197 visningar · startad av Folkbitar

FolkbitarMedlem sedan feb. 2003168 inlägg
#1

Hej!
Jag fick ett felmeddelande när jag skulle prova ett av mina script från läroboken. (PHP, visuell snabbguide av Larry Ullman)
Jag sökte efter felet här och hittade ett svar. Arvjos hade bekymmer och Sevenet svarade.
Så långt allt väl.
Men, jag begriper inte var jag ska lägga in den lilla kod,

$title=$HTTP_POST_VARS['title'];

som Sevenet skriver om.

Min kod:

<?php
print "Your first name is
$FirstName.<BR>\n";
print "Your last name is
$LastName.<BR>\n";
print "Your E-mail adress is
$Email.<BR>\n";
print "This is what you had to say:<BR>\n
$Comments<BR>\n";
?>

mvh

MatteMedlem sedan aug. 20002 975 inlägg
#2

Har du skickat från ett formulär och har register_globals=Off i dina inställningar så är det en variant på att fixa problemet. Då skulle du kunna göra så här:

$FirstName = $HTTP_POST_VARS['FirstName'];
$LastName = $HTTP_POST_VARS['LastName'];
$Email = $HTTP_POST_VARS['Email'];
$Comments = $HTTP_POST_VARS[''Comments];

Men ännu hellre gör så här:

<?php
print "Your first name is
{$_POST['FirstName']}.<BR>\n";
print "Your last name is
{$_POST['LastName']}.<BR>\n";
print "Your E-mail adress is
{$_POST['Email']}.<BR>\n";
print "This is what you had to say:<BR>\n
{$_POST['Comments']}<BR>\n";
?>
FolkbitarMedlem sedan feb. 2003168 inlägg
#3

Tack Matte!

En fråga.

Jag är ju, som märks, helt ny på php och köpte därför boken jag nämde ovan.
Är detta en bra nybörjarbok? Finns det någon bättre?
Jag undrar lite med tanke på mitt problem.
Jag följde övningen och när det inte funkade laddade jag ner författarens script från förlagets sida. Men det funkade ju som sagt inte så vidare bra.

mvh

MatteMedlem sedan aug. 20002 975 inlägg
#4

Jag vet inte vilka böcker som är bra. Har inte läst någon PHP-bok sedan jag började med PHP för snart två år sedan.

Som ett råd när det gäller böcker vill jag dock säga att man bör köpa någon som är reviderad under senaste året, eller något sådant.
Anledningen till det är att det har hänt mycket med PHP under de senaste åren. En viktig sak är att man ur säkerhetssynpunkt har satt register_globals till Off som default. De flesta webbhotell har register_globals satt till On för att äldre skript ska fungera, men kodar man så det funkar med Off så funkar det även med On, så behåll du Off på din utvecklingsserver.

För bakåtkompabiliteten skull är det tillåtet i PHP att använda variabler utan att de är initierade. Dock resulterar detta användande i en notis för att man ska uppmärksammas på att så här bör man inte koda.
De flesta, åtminstone seriösa, webbhotell har visning av notiser och varningar bortkopplat eftersom felmeddelanden kan ge information till någon som försöker hacka servern, men när du kör lokalt på din utvecklingsmaskin bör du ha visning av notiser och varningar påkopplat, eftersom dessa även ger information om fel som kan bero på annat.

Om du har en äldre bok så är det några saker du kan göra med skripten.

Kommer en variabel från formulär, länk, cookie eller session så byter du ut $variabel mot $_POST['variabel'], $_GET['variabel'], $_COOKIE['variabel'] eller $_SESSION['variabel']. Sessioner är här en liten historia i sig själv, ska du pyssla med det så sök på forumet så kan du få en hel del information.

Använder skriptet servervariabler typ $PHP_SELF så skriver man $_SERVER['PHP_SELF'].

Du kan läsa mer om dessa variabler här: http://se.php.net/manual/en/language.variables.predefined.php

Ibland används en variabel från ett formulär på samma sida som formuläret, t.ex echo $namn, men man har inte postat något än. Då kommer du att få "undefined variable". Åtgärden är då att använda isset (engelska, is set = är satt). T.ex

if (isset($_POST['namn'])) echo $_POST['namn'];

Ibland används en automatisk tilldelning till samma variabel i en slinga. T.ex något på det här hållet:

while (..villkor..) {
   $variabel .= "Något värde";
}

Första gången variabeln används så finns den inte, och därför rapporterar en notis att man försöker lägga till något till en variabel som inte finns. Åtgärden är enkel. Initera variabel först:

$variabel = "";

while (..villkor..) {
   $variabel .= "Något värde";
}

Det här borde ta dig en bit genom en äldre bok. Sedan rekommenderar jag att om du kör windows så bör du ladda ner manualen i chm-format. Hämtar du den här: http://weblabor.hu/php-doc-chm/ så får du även med användarnoteringarna där det finns mycket guld att hämta.

Jobba på och återkom när du har frågor. :)

FolkbitarMedlem sedan feb. 2003168 inlägg
#5

Fantastiskt :)
Jag saknar ord....

Tusen tack för alla dina tips, Matte! :birp

Min bok är från 2001, men det börjar väl bli gammalt i sådana här sammanhang.
Ska genast surfa iväg till dina länktips.

mvh

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