/ 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
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&aring;
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&aring;
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



Søg
Reklame
Statistik
Spørgsmål : 177519
Tips : 31968
Nyheder : 719565
Indlæg : 6408658
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste