/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
if sætning
Fra : RuneStone


Dato : 21-12-03 20:24

Jeg har købt bogen "Start på PHP" af Thomas G Kristensen og til dem der har
denne bog skriver han på side 43 noget lignende dette her:
<html>
<body>
<?
if ($navn){
echo "Hej $navn, hvordan går det?";
}
else
{
?>
<form method=post action="index.php">
Skriv dit navn:
<input type=text name=navn>
<input type=submit value=Submit>
</form>
<?
}
?>
</body>
</html>

men jeg får hele tiden denne her fejl:
Notice: Undefined variable: navn in f:\inetpub\wwwroot\karakter\index.php on
line 4

Er det mig der har skrevet forkert eller hvor ligger fejlen ?

mvh. Rune Thougaard
--



--
www.rtk-design.dk || www.vinperlen.dk



 
 
RuneStone (21-12-2003)
Kommentar
Fra : RuneStone


Dato : 21-12-03 20:31

> Jeg har købt bogen "Start på PHP" af Thomas G Kristensen og til dem der
har
> denne bog skriver han på side 43 noget lignende dette her:
> <html>
> <body>
> <?
> if ($navn){
> echo "Hej $navn, hvordan går det?";
> }
> else
> {
> ?>
> <form method=post action="index.php">
> Skriv dit navn:
> <input type=text name=navn>
> <input type=submit value=Submit>
> </form>
> <?
> }
> ?>
> </body>
> </html>
>
> men jeg får hele tiden denne her fejl:
> Notice: Undefined variable: navn in f:\inetpub\wwwroot\karakter\index.php
on
> line 4
>
> Er det mig der har skrevet forkert eller hvor ligger fejlen ?
>
> mvh. Rune Thougaard
> --

Har fundet fejlen, den skriver kun den fejl lokalt, når jeg ligger den ud på
en server:
www.rtk-design.dk/rod/php/index.php
så virker den helt fint !

men hvorfor virker dette ikke lokalt, jeg har installeret php-4.3.4 (så jeg
ikke behåver at bruge apach)

mvh. Rune Thougaard
--



Mads Lie Jensen (21-12-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 21-12-03 22:46

On Sun, 21 Dec 2003 20:31:17 +0100, "RuneStone" <rune@rtk-design.dk>
wrote:

>> men jeg får hele tiden denne her fejl:
>> Notice: Undefined variable: navn in f:\inetpub\wwwroot\karakter\index.php
>on
>> line 4
>>
>> Er det mig der har skrevet forkert eller hvor ligger fejlen ?

>men hvorfor virker dette ikke lokalt, jeg har installeret php-4.3.4 (så jeg
>ikke behåver at bruge apach)

Det virker som sådan også - som der står er det kun en Notice, dvs. en
oplysning.

På din egen server er error_reporting sat højere end på dit webhotel. Se
mere om fejlhåndtering på http://dk.php.net/manual/en/ref.errorfunc.php
- læs især om error_reporting funktionen.

Det der sker er at du i linie 4 laver en test på om variablen $navn
indeholder noget. Men da du ikke i scriptet har tildelt en værdi til
$navn, får du det at vide - det kunne jo være det var en skrivefejl.
Men php-scriptet kører videre og gør som du forventer.


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Kig også ind på http://hjoerringnyplanteskole.dk/

Leonard (21-12-2003)
Kommentar
Fra : Leonard


Dato : 21-12-03 20:55

"RuneStone" <rune@rtk-design.dk> wrote:

>Notice: Undefined variable: navn in f:\inetpub\wwwroot\karakter\index.php on
>line 4

Som den skriver, så er variablen ikke defineret og derfor kan man ikke
lave det tjek på den, som forøvrigt er dårlig skik, men det er en
anden snak.
Det skyldes nok at du i din nye installation af PHP ikke har
register_globals=on, hvilket er god skik, så du skal tilgå variablen
med:

$_POST['navn']

--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

RuneStone (21-12-2003)
Kommentar
Fra : RuneStone


Dato : 21-12-03 22:37

> >Notice: Undefined variable: navn in f:\inetpub\wwwroot\karakter\index.php
on
> >line 4
>
> Som den skriver, så er variablen ikke defineret og derfor kan man ikke
> lave det tjek på den, som forøvrigt er dårlig skik, men det er en
> anden snak.
> Det skyldes nok at du i din nye installation af PHP ikke har
> register_globals=on, hvilket er god skik, så du skal tilgå variablen
> med:
>
> $_POST['navn']

Nu har jeg ændret koden lidt:
<?
$navn = $_POST["navn"];
if ($navn <> ""){
echo "Hej $navn, hvordan går det?";
}
else
{
?>
<form method=post action="index.php">
Skriv dit navn:
<input type=text name=navn>
<input type=submit value=Submit>
</form>
<?
}
?>

men den kommer stadig med den her fejl: Notice: Undefined index: navn in
f:\inetpub\wwwroot\side43\index.php on line 4

men du snakkede noget om register_globals=on, hvordan finde jeg ud af om den
er on eller off ??

mvh. Rune Thougaard
--



Jonas Delfs (21-12-2003)
Kommentar
Fra : Jonas Delfs


Dato : 21-12-03 22:58

"RuneStone" <rune@rtk-design.dk> skrev i en meddelelse
news:3fe61275$0$27454$edfadb0f@dread16.news.tele.dk...
> > >Notice: Undefined variable: navn in
f:\inetpub\wwwroot\karakter\index.php
> on
> > >line 4
> >
> > Det skyldes nok at du i din nye installation af PHP ikke har
> > register_globals=on, hvilket er god skik, så du skal tilgå variablen
> > med:
> >
> > $_POST['navn']
>
> Nu har jeg ændret koden lidt:
[snip]
>
> men den kommer stadig med den her fejl: Notice: Undefined index: navn in
> f:\inetpub\wwwroot\side43\index.php on line 4

Ja, du fik ikke hele historien af Leonard:)
Kig lidt på http://php.net/isset

> men du snakkede noget om register_globals=on, hvordan finde jeg ud af om
den
> er on eller off ??

Du enten kigger på det output som php_info() giver, eller du kalder
www.dithotel.dk/fil.php?var=sars og tjekker i fil.php om $var findes..

--
Mvh. Jonas Delfs
Freelance webprogrammør: http://delfs.dk



Peter Brodersen (22-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 22-12-03 01:06

On Sun, 21 Dec 2003 20:24:11 +0100, "RuneStone" <rune@rtk-design.dk>
wrote:

>men jeg får hele tiden denne her fejl:
>Notice: Undefined variable: navn in f:\inetpub\wwwroot\karakter\index.php on
>line 4
>
>Er det mig der har skrevet forkert eller hvor ligger fejlen ?

http://php-faq.dk/index.php?faq=10

--
- Peter Brodersen

Ugens sprogtip: at køre (og ikke at kører)

RuneStone (22-12-2003)
Kommentar
Fra : RuneStone


Dato : 22-12-03 09:37

> http://php-faq.dk/index.php?faq=10


Nu jeg har chekket min php.ini

og der stod allerede følgende:
error_reporting = E_ALL & ~E_NOTICE

hvis jeg har forstået det ret så skulle den nu helst ikke komme med denne
med.:
Notice: Undefined index: navn in f:\inetpub\wwwroot\side43\index.php on line
4
?

mvh. Rune Thougaard
--



Jesper Brunholm (22-12-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 22-12-03 09:46

RuneStone skrev:
>>http://php-faq.dk/index.php?faq=10
> Nu jeg har chekket min php.ini
> og der stod allerede følgende:
> error_reporting = E_ALL & ~E_NOTICE
>
> hvis jeg har forstået det ret så skulle den nu helst ikke komme med denne
> med.:
> Notice: Undefined index: navn in f:\inetpub\wwwroot\side43\index.php on line
> 4

Jo, det skulle den da vist gerne - det betyder jo netop at den meddeler
dig alt incl notices.

Det er også smart nok - det er bedre at lave kode som ikke giver
notices, fordi du på den måde også implicit sikrer dig mod nogle
sikkerhedsrisici.

Det _er_ fx smart aldrig at anvende en variabel uden at vide om den er
initialiseret og hvor der er rimelig formodning om at den kan have
indhold fra.

Din bog må være lidt ældre, og det er selvfølgelig træls at du ikke kan
bruge den som basis for at lære god kodning, men efter min mening er der
ikke nogen vej uden om at checke om variabler er sat med isset() eller
empty() og lignende.

mvh

Jesper Brunholm


RuneStone (22-12-2003)
Kommentar
Fra : RuneStone


Dato : 22-12-03 10:50

> > hvis jeg har forstået det ret så skulle den nu helst ikke komme med
denne
> > med.:
> > Notice: Undefined index: navn in f:\inetpub\wwwroot\side43\index.php on
line
> > 4
>
> Jo, det skulle den da vist gerne - det betyder jo netop at den meddeler
> dig alt incl notices.
>
> Det er også smart nok - det er bedre at lave kode som ikke giver
> notices, fordi du på den måde også implicit sikrer dig mod nogle
> sikkerhedsrisici.
>
> Det _er_ fx smart aldrig at anvende en variabel uden at vide om den er
> initialiseret og hvor der er rimelig formodning om at den kan have
> indhold fra.
>
> Din bog må være lidt ældre, og det er selvfølgelig træls at du ikke kan
> bruge den som basis for at lære god kodning, men efter min mening er der
> ikke nogen vej uden om at checke om variabler er sat med isset() eller
> empty() og lignende.

Men hvordan skal jeg nogle sinde komme til at kode php når den skriver den
der Notice... det bevirker jo at jeg ikke kan så programmet til at virke.
Hvordan kan jeg fjerne den der notice ??

mvh. Rune Thougaard
--



Leonard (22-12-2003)
Kommentar
Fra : Leonard


Dato : 22-12-03 12:17

"RuneStone" <rune@rtk-design.dk> wrote:

>Men hvordan skal jeg nogle sinde komme til at kode php når den skriver den
>der Notice... det bevirker jo at jeg ikke kan så programmet til at virke.
>Hvordan kan jeg fjerne den der notice ??

Du skal begynde din kode med at tjeke om der i et hele taget er en
variabel navn:

<?
if (isset($_POST["navn"]))
   $navn = $_POST["navn"];
else
   $navn="";


--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

RuneStone (22-12-2003)
Kommentar
Fra : RuneStone


Dato : 22-12-03 23:23

> <?
> if (isset($_POST["navn"]))
> $navn = $_POST["navn"];
> else
> $navn="";


Vil i ikke nok fortælle mig hvordan jeg slår den der Notice fra, jeg er ved
at få spat af det...

mvh. Rune Thogaard
--



Thomas Lindgaard (23-12-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 23-12-03 02:13

> Vil i ikke nok fortælle mig hvordan jeg slår den der Notice fra, jeg er
ved
> at få spat af det...

Den kommer fordi en variabel ikke er tildelt en værdi. Det kan ske i flere
tilfælde:

For eksempel:

<?php
if ( false ) $variabel = 'hejsa';
print "Den lille hund med blå ben sagde $variabel";
?>

Eller det kan ske i forbindelse med en HTML-form (hvilket næsten altid er
tilfældet når dette spørgsmål bliver stillet). Hvis du har følgende form:

<form action="bla.php" method="post">
<input type="text" name="variabel" value="hejsa">
<input type="submit">
</form>

og din bla.php ser ud som følger:

<?php
print "Den lille blå hund med ben sagde $variabel";
?>

og register_globals er sat til off i php.ini, så får du en notice fra PHP.

Det er fordi form-variable ikke automagisk bliver til variabel i
php-scriptet når register_globals=off. Den gode løsning (i forbindelse med
form-variable) er at skrive:

<?php
print "Den småsnottede hvalp vuffede {$_POST['variabel']}";
?>

Den dårlige løsning er at sætte register_globals=on i php.ini, men det gør
at du ikke kan vide hvor dine variable kommer fra (fordi så kan man også
tildele $variabel en værdi via URLen
(bla.php?variabel=denne_værdi_kommer_ikke_fra_en_form_men_fra_adresselinien)
). Nyere installationer af PHP sætter som standard register_globals=off af
sikkerhedsmæssige hensyn.

Hjalp det?
/Thomas



Leonard (22-12-2003)
Kommentar
Fra : Leonard


Dato : 22-12-03 23:31

"RuneStone" <rune@rtk-design.dk> wrote:

>error_reporting = E_ALL & ~E_NOTICE

Kig på
http://dk.php.net/manual/en/function.error-reporting.php

og find ud af hvad du kan skrive i den linie.

--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

RuneStone (23-12-2003)
Kommentar
Fra : RuneStone


Dato : 23-12-03 00:00

> Kig på
> http://dk.php.net/manual/en/function.error-reporting.php
>
> og find ud af hvad du kan skrive i den linie.

kan man ikke dekativere den helt? så jeg ikke behøver lave alt det ekstra
kode...

mvh. Rune Thougaard
--



Peter Brodersen (23-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 23-12-03 00:20

On Mon, 22 Dec 2003 09:37:01 +0100, "RuneStone" <rune@rtk-design.dk>
wrote:

>Nu jeg har chekket min php.ini

Hvor ligger den php.ini henne? Prøv at flytte den til
Windows-kataloget - og genstart din webserver.

--
- Peter Brodersen

Ugens sprogtip: at køre (og ikke at kører)

RuneStone (23-12-2003)
Kommentar
Fra : RuneStone


Dato : 23-12-03 14:15

Så fadt jeg ud af at sætte register_globals = on så nu får jeg ikke mere de
der notice.

tak for hjælpen til jer alle sammen...
god jul

mvh. Rune Thougaard
--



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408934
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste