|
| hjælp til funktion Fra : Lars Axberg |
Dato : 14-01-03 23:25 |
|
Hej ng
Da jeg bruger cookies på mine sider synes jeg det var en god ide, at smide
det i en funktion som jeg så bare kunne hente, det sparer jo mig for en del
kode skrivning. Da jeg er ny i php verdenen troede jeg, at jeg bare kunne
tage koden og smække den ind i en funktion men når jeg så kalder på
funktionen melder den fejl hvad gør jeg galt? Funktionen er vist nedenunder.
<?php
function get_cookie() {
$HTTP_COOKIE_VARS['uid'];
$user = $HTTP_COOKIE_VARS['uid'];
if(!ereg("[A-z0-9]+", $user)) {
echo "<p>Du er ikke logget ind som $user <br />";
echo "<strong><a href=\"forumlogin.php\" title=\"Log dig ind på
forummet\">Log ind</a></strong></p>";
}
else
{
echo "Du er logget ind som $user<br />";
echo "<a href=\"logaf.php?uid=$user\">Log af</a>";
}
}
?>
Når jeg så kalder på den med echo $get_cookie(); får jeg fejlmeddelse er der
en venlig sjæl?
Mvh
Lars Axberg
| |
Morten Trab (14-01-2003)
| Kommentar Fra : Morten Trab |
Dato : 14-01-03 23:36 |
|
"Lars Axberg" <axberg@person.dk> skrev i en meddelelse
news:D60V9.11004$CG6.196993@news4.e.nsc.no...
> Når jeg så kalder på den med echo $get_cookie(); får jeg fejlmeddelse er
der
> en venlig sjæl?
Jeg ved ikke lige om det gør den store forskel, men prøv at bare at skrive
get_cookie();
Din funktion laver jo selv echo...
Men ellers...Hvad for en fejl kommer den med??
--
Morten Trab - http://www.blackchart.dk
Ved mail, fjern da REMOVE i adressen, men send kun en mail til mig hvis jeg
be'r om det, eller hvis det er meget vigtigt!
http://modeltog.blackchart.dk - Følg med i opbygningen af min modelbane
| |
Lars Axberg (15-01-2003)
| Kommentar Fra : Lars Axberg |
Dato : 15-01-03 00:17 |
|
"Morten Trab" <mortenREMOVE@trab.dk> wrote in message
news:b0238u$8up$1@sunsite.dk...
> "Lars Axberg" <axberg@person.dk> skrev i en meddelelse
> news:D60V9.11004$CG6.196993@news4.e.nsc.no...
> Jeg ved ikke lige om det gør den store forskel, men prøv at bare at skrive
> get_cookie();
>
> Din funktion laver jo selv echo...
>
> Men ellers...Hvad for en fejl kommer den med??
Prøvede bare at kalde den med get_cookie(); Men det lader til at fejlen
ligger i funktionen for det ser ud til at variablen $user er tom ! Selv om
den ikke burde være det! Den springer ned til else betingelsen i funktionen
og det er det den skriver på siden!
Et skridt nærmere! Er der nogen der har den sidste hjælp?
| |
Tinky Winky (15-01-2003)
| Kommentar Fra : Tinky Winky |
Dato : 15-01-03 00:30 |
|
> Prøvede bare at kalde den med get_cookie(); Men det lader til at fejlen
> ligger i funktionen for det ser ud til at variablen $user er tom ! Selv om
Bliver variablen $user sat i funktionen, eller uden for funktionen? Hvis du
bare skriver function foo() {echo $a;}, vil funktionen aldrig udskrive
noget, da $a ikke bliver defineret _i funktionen_. Hvis du har en variabel,
$a som du sætter til en værdi uden for funktionen og du vil have at
funktionen bruger den variabel, så skal du bruge global:
$a = "min værdi";
function foo() {
global $a;
echo $a;
}
prøv at fjerne global $a; og se hvad der sker...
tjek global i manualen
| |
Thomas Lindgaard (15-01-2003)
| Kommentar Fra : Thomas Lindgaard |
Dato : 15-01-03 00:24 |
|
"Morten Trab" <mortenREMOVE@trab.dk> wrote in
news:b0238u$8up$1@sunsite.dk:
> Jeg ved ikke lige om det g›r den store forskel, men pr›v at bare at
> skrive get_cookie();
>
> Din funktion laver jo selv echo...
Jeps - og da den ikke returnerer nogen værdi vil
echo get_cookie();
bare resultere i den tekst der bliver skrevet ud inde fra funktionen samt
returværdien (dvs. 'Du er logget ind...' og '') - men det vil ikke give
nogen fejl og ingen synlig forskel hvis echo udelades.
.... og så lige en ting: Hvorfor den her linie?
$HTTP_COOKIE_VARS['uid'];
Den henter en værdi ud af dit cookie-array og smider den prompte væk - i
næste linie henter du værdien igen og tildeler den til variablen $user.
> Men ellers...Hvad for en fejl kommer den med??
Det er ALTID en god ide at informere om, hvilken fejlbesked man får, hvis
man skal bruge hjælp - vi er jo ikke (altid) synske :)
Hyggehej
/Thomas
| |
Lars Axberg (15-01-2003)
| Kommentar Fra : Lars Axberg |
Dato : 15-01-03 02:54 |
|
"Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in message
news:Xns930440A189C1thomasitsnedkerendk@62.243.74.162...
> "Morten Trab" <mortenREMOVE@trab.dk> wrote in
> news:b0238u$8up$1@sunsite.dk:
> > Men ellers...Hvad for en fejl kommer den med??
>
> Det er ALTID en god ide at informere om, hvilken fejlbesked man får, hvis
> man skal bruge hjælp - vi er jo ikke (altid) synske :)
Den skriver ikke nogen fejl mere! Men den spytter ikke den rigtige data ud.
Tager jeg linierne inde fra funktionen og sætter dem ind på en side, så
fungerer de som de skal nemlig om brugeren har en aktiv cookie på maskinen
og hvis ikke så får de at vide de ikke er logget ind.
Jeg takker for dit hint i, at det er spild af tid at hente cookie arrayet 2
gange og har rettet det! Her førlger den "opdaterede" funktion som ikke
fungerer:
<?php
function get_cookie() {
$user = $HTTP_COOKIE_VARS['uid'];
if(!ereg("[A-z0-9]+", $user)) {
echo "<p>Du er ikke logget ind <br />";
echo "<strong><a href=\"forumlogin.php\" title=\"Log dig ind på
forummet\">Log ind</a></strong></p>"; }
else {
echo "Du er logget ind som $user<br />";
echo "<a href=\"logaf.php?uid=$user\">Log af</a>";}
} ?>
Det må da kunne lade sig gøre, at få en funktion til, at gøre dette arbejde!
Jeg takker for all hjælp indtil videre og håber på at den(de?) sidste
brikker(linier) falder på plads!
Mvh
Lars Axberg
| |
Thomas Lindgaard (15-01-2003)
| Kommentar Fra : Thomas Lindgaard |
Dato : 15-01-03 10:50 |
|
"Lars Axberg" <axberg@person.dk> wrote in
news:La3V9.11082$CG6.197853@news4.e.nsc.no:
> Den skriver ikke nogen fejl mere! Men den spytter ikke den rigtige
> data ud. Tager jeg linierne inde fra funktionen og s‘tter dem ind p†
> en side, s† fungerer de som de skal nemlig om brugeren har en aktiv
> cookie p† maskinen og hvis ikke s† f†r de at vide de ikke er logget
> ind.
Hmm... jeg kan ikke lige huske om HTTP_COOKIE_VARS er superglobal eller om
man eksplicit skal gøre den global. Hvis den ikke er superglobal skal du
tilføje linien
global $HTTP_COOKIE_VARS;
til din funktion for at få adgang til arrayet - ellers vil $user ikke blive
sat til nogen værdi. Prøv at var_dump'e $user for at se, hvad den faktisk
bliver sat til.
Mvh.
/Thomas
| |
Lars Dybdahl (15-01-2003)
| Kommentar Fra : Lars Dybdahl |
Dato : 15-01-03 11:03 |
|
Thomas Lindgaard wrote:
> global $HTTP_COOKIE_VARS;
Ellers brug $_COOKIE.
Lars.
--
Freelance programmør
Programmering mod timebetaling
| |
Morten Trab (15-01-2003)
| Kommentar Fra : Morten Trab |
Dato : 15-01-03 11:37 |
|
"Lars Dybdahl" <lars@dybdahl.dk> skrev i en meddelelse
news:3e2531c1$0$11084$edfadb0f@dread12.news.tele.dk...
> Thomas Lindgaard wrote:
> > global $HTTP_COOKIE_VARS;
>
> Ellers brug $_COOKIE.
Jeg havde ca. samme problem med en side hvor jeg bruger sessions, indtil jeg
begyndte at bruge $_SESSION, så den med $_COOKIE vil jeg egentligt holde med
i at den burde virke...
--
Morten Trab - http://www.blackchart.dk
Ved mail, fjern da REMOVE i adressen, men send kun en mail til mig hvis jeg
be'r om det, eller hvis det er meget vigtigt!
http://modeltog.blackchart.dk - Følg med i opbygningen af min modelbane
| |
|
|