|
| 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 (23-12-2003)
| Kommentar Fra : RuneStone |
Dato : 23-12-03 00:00 |
| | |
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
--
| |
|
|