/ 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
2 Spørgsmål: sessions og syntax.
Fra : Ukendt


Dato : 10-06-03 10:10

Davs (igen)

Jeg er gammel i gårde med ASP men totalt ny i PHP så bær over med mine måske
åbenlyse spørgsmål :)

1.
Antag jeg har følgende kode:
<?php if (!isset($_SESSION['authorized']) or (!$_SESSION['authorized'])): ?>

Opfører den sig som i C eller som fx ASP? Altså udføres sætningen efter "or"
hvis den første sætning ikke er opfyldt? Jeg har self. prøvet, men ville
lige have den endelige "ok" da jeg ikke umiddelbart kan finde dette ved at
rtfm'e emnet.

2.
Antag at jeg har defineret følgende:
session_register('authorized');
$_SESSION['authorized'] = true;

-Hvor længe holder sessionen i PHP pr. default? Jeg spørger fordi ASP (3)
default er sat til 20min.

Takker,
--
TH
Pffmppppmppffpmmpp fmpmfpmpp mpmppfmfm
mmpmppmpfppfpffmpp pffmpppfmpmfffmmffpppmfm...
<http://www.namesuppressed.com/kenny/>



 
 
Kasper Garnæs (10-06-2003)
Kommentar
Fra : Kasper Garnæs


Dato : 10-06-03 10:34

TH <th_at_cogito.greatdanedk> wrote:
> Antag jeg har følgende kode:
> <?php if (!isset($_SESSION['authorized']) or
> (!$_SESSION['authorized'])): ?>
>
> Opfører den sig som i C eller som fx ASP? Altså udføres sætningen
> efter "or" hvis den første sætning ikke er opfyldt?

Jeg tror, du refererer til short circuiting, men det gælder så vidt jeg ved
ikke for bolsk OR (jeg kender hverken til hvordan C eller ASP håndterer
dette). Selv om den første sætning giver FALSE, er der jo stadig mulighed
for, at hele udtrykket returnerer TRUE, hvis den anden sætning giver TRUE,
og derfor bør den anden sætning så vidt jeg kan se også altid blive udført.
Det havde været en anden sag hvis der var tale om bolsk AND.

> 2.
> Antag at jeg har defineret følgende:
> session_register('authorized');
> $_SESSION['authorized'] = true;
>
> -Hvor længe holder sessionen i PHP pr. default?

Session i PHP holder per default indtil browseren er blevet lukket, men
dette kan selvfølgelig ændres. Det står nærmere beskrevet i
http://dk.php.net/session under session.cookie_lifetime.

Mvh.
Kasper Garnæs



Ukendt (10-06-2003)
Kommentar
Fra : Ukendt


Dato : 10-06-03 11:00

Hej,


> Jeg tror, du refererer til short circuiting, men det gælder så vidt jeg
ved
> ikke for bolsk OR (jeg kender hverken til hvordan C eller ASP håndterer
> dette). Selv om den første sætning giver FALSE, er der jo stadig mulighed
> for, at hele udtrykket returnerer TRUE, hvis den anden sætning giver TRUE,
> og derfor bør den anden sætning så vidt jeg kan se også altid blive
udført.
> Det havde været en anden sag hvis der var tale om bolsk AND.

Hmm, jeg spørger fordi mine tests viser at:

if (!$_SESSION['authorized']) ... blabla
Ovenstående giver en PHP fejl da variablen (index'et) ikke er defineret.

men hvis jeg siger:
if (!isset($_SESSION['authorized']) or (!$_SESSION['authorized']))

-så kommer der ingen fejl...dvs (!isset($_SESSION['authorized']) =true og
dermed er der ingen grund til at udføre andet i if-sætningen...imø (i mine
øjne) netop ved "or" kan det bruges...(eller taler vi forbi hinanden?)

> Session i PHP holder per default indtil browseren er blevet lukket, men
> dette kan selvfølgelig ændres. Det står nærmere beskrevet i
> http://dk.php.net/session under session.cookie_lifetime.

Takker...

/TH



Kasper Garnæs (10-06-2003)
Kommentar
Fra : Kasper Garnæs


Dato : 10-06-03 11:22

TH <th_at_cogito.greatdanedk> wrote:
>> Jeg tror, du refererer til short circuiting, men det gælder så vidt
>> jeg ved ikke for bolsk OR (jeg kender hverken til hvordan C eller
>> ASP håndterer dette). Selv om den første sætning giver FALSE, er der
>> jo stadig mulighed for, at hele udtrykket returnerer TRUE, hvis den
>> anden sætning giver TRUE, og derfor bør den anden sætning så vidt
>> jeg kan se også altid blive udført. Det havde været en anden sag
>> hvis der var tale om bolsk AND.
>
> Hmm, jeg spørger fordi mine tests viser at:
>
> if (!$_SESSION['authorized']) ... blabla
> Ovenstående giver en PHP fejl da variablen (index'et) ikke er
> defineret.
>
> men hvis jeg siger:
> if (!isset($_SESSION['authorized']) or (!$_SESSION['authorized']))
>
> -så kommer der ingen fejl...dvs (!isset($_SESSION['authorized'])
> =true og dermed er der ingen grund til at udføre andet i
> if-sætningen...imø (i mine øjne) netop ved "or" kan det
> bruges...(eller taler vi forbi hinanden?)

Jeg tror vi talte lidt forbi hinanden - eller også forstår jeg ikke dit
spørgsmål.

Du lagde ud med at spørge: "Altså udføres sætningen efter "or"
hvis den første sætning ikke er opfyldt?"

Jf. ovenstående: Ja, sætningen efter "or" udføres, hvis den første sætning
ikke er opfyldt.

Nu kan short curcuiting jo også fungerer den anden vej, så jeg antager at
PHP ikke udførerden anden sætning i et bolsk OR statement, hvis den første
sætning giver TRUE - i så fald kan statementet jo ikke undgå at give TRUE.
Der er netop derfor at dit ovenstående eksempel ikke giver nogen fejl.

Alt i alt:

Ja, sætningen efter "or" udføres, hvis den første sætning *ikke er* opfyldt.
Sætningen efter "or" udføres derimod ikke, hvis den første sætning *er*
opfyldt.

Set ud fra det synspunkt er din kode:

>if (!isset($_SESSION['authorized']) or (!$_SESSION['authorized']))

også ganske fin, hvis noget kun skal vises/udføres hvis
$_SESSION['authorized'] har en værdi, og denne værdi er forskellig fra
FALSE, 0 og hvad PHP nu ellers type juggler til FALSE.

Mvh.
Kasper Garnæs



Ukendt (10-06-2003)
Kommentar
Fra : Ukendt


Dato : 10-06-03 11:25

Hej,


> Jf. ovenstående: Ja, sætningen efter "or" udføres, hvis den første sætning
> ikke er opfyldt.

Jeps...vi mener det samme. Skulle bare være sikker da sandsynligheden for at
jeg misforstår PHP er meeget stor :)
(Installerede PHP4 igår aftes :)

> Set ud fra det synspunkt er din kode:
>
> >if (!isset($_SESSION['authorized']) or (!$_SESSION['authorized']))
>
> også ganske fin, hvis noget kun skal vises/udføres hvis
> $_SESSION['authorized'] har en værdi, og denne værdi er forskellig fra
> FALSE, 0 og hvad PHP nu ellers type juggler til FALSE.

Alletiders...tak.

/TH



Kim Emax (10-06-2003)
Kommentar
Fra : Kim Emax


Dato : 10-06-03 18:40

TH wrote:

> Jeg er gammel i gårde med ASP men totalt ny i PHP så bær over med
> mine måske åbenlyse spørgsmål :)

Velkommen, super du har set lyset

> Antag jeg har følgende kode:
> <?php if (!isset($_SESSION['authorized']) or
> (!$_SESSION['authorized'])): ?>
>
> Opfører den sig som i C eller som fx ASP? Altså udføres sætningen
> efter "or" hvis den første sætning ikke er opfyldt? Jeg har self.
> prøvet, men ville lige have den endelige "ok" da jeg ikke umiddelbart
> kan finde dette ved at rtfm'e emnet.

Du kunne nemt teste det med følgende:

$test1 = 1;
$test2 = 0;
if($test2 or $test1) {
print "hej";
}

Her vil du komme ind i betingelsen, da $test1 er sand.

--
Take Care
Kim Emax - Freelance programmør
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



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

Månedens bedste
Årets bedste
Sidste års bedste