[PHP]Checken of Session var. bestaat in IF lus

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Topicstarter
In het boek wat ik een tijd geleden gekocht heb (PHP4 Zonder stress) gebruikt men vaak de volgende code om te kijken of bijvoorbeeld $blaat wel bestaat
PHP:
1
2
3
if ($blaat) {
echo "blaat bestaat jah";
}


Ik wil op m'n eigen site deze zelfde code gebruiken om te kijken of een session variabele bestaat. Ik heb 2 manieren geprobeerd om dit te bereiken, maar ik krijg telkens de melding dat de variable niet bestaat (als je niet ingelogd bent). Dat weet ik, en dat hoef ik niet nog een keer te horen ;)

PHP:
1
2
3
4
5
6
session_start("died2k");

if ($_SESSION['ingelogt']) {
//checken of wachtwoord enzo wel klopt anders >> uitloggen

}

Als de user is ingelogd, is de waarde van ingelogt 1, vandaar dat als ingelogt kleiner dan 1 is, de user niet is ingelogt :)

PHP:
1
2
3
4
5
6
7
8
session_start("died2k");

$ingelogt = $_SESSION['ingelogt'];

if ($ingelogt > 0) {
//checken of wachtwoord enzo wel klopt anders >> uitloggen

}


Ik snap er niks van. Wat doe ik fout?

*ik ben nog maar een beginner, dus straf me niet te hard af :'(

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

$ingelogt is een string dus de if statement zou moeten zijn: $ingelogt != "".

Hier kun je alles over sessies vinden:

www.php.net/session

_/-\o_

[ Voor 36% gewijzigd door André op 02-07-2003 01:56 ]


Acties:
  • 0 Henk 'm!

  • not-known
  • Registratie: Februari 2002
  • Laatst online: 20-07 00:04

not-known

[BI] Crewmember

om te controleren of een variable bestaat kan je heel gemakkelijk
PHP:
1
if(isset($variabele))
gebruiken, misschien dat je er wat mee kan?
is verder allemaal op www.php.net te vinden eigenlijk ;)

Officiëel bikkel'n in #bikkels
Campzone Veld C FieldAdmin
De Veld C site!


Acties:
  • 0 Henk 'm!

  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Topicstarter
Het probleem is niet de if lus, of de manier waarop gekeken wordt of deze een waarde bevat, maar het probleem is dat ik met _elke_ code waarin ik tracht
PHP:
1
$_SESSION['ingelogt']
te gebruiken, ik de melding
Notice: Undefined index: ingelogt in C:\Program Files\Apache Group\Apache2\htdocs\died2k\index.php on line 5
krijg :/

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Ten eerste gebruik je een parameter voor session_start. Nou weet ik niet of dat de bedoeling is, maar volgens de manual heeft die functie geen parameters.

Ten tweede; een 'if ($variabele)' geeft false als de variabele weliswaar bestaat maar de integer-waarde 0 heeft. Om met behulp van een sessie-variabele te kijken of iemand is ingelogd, gebruik dan vooral een boolean (true/false) voor 'ingelogd'. Daarmee kun je namelijk heel makkelijk de volgende code gebruiken om te kijken of men is ingelogd:
PHP:
1
2
3
if($_SESSION['ingelogd'] {
// checken of wachtwoord klopt
}

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • not-known
  • Registratie: Februari 2002
  • Laatst online: 20-07 00:04

not-known

[BI] Crewmember

dual-zip schreef op 02 July 2003 @ 02:05:
Het probleem is niet de if lus, of de manier waarop gekeken wordt of deze een waarde bevat, maar het probleem is dat ik met _elke_ code waarin ik tracht
PHP:
1
$_SESSION['ingelogt']
te gebruiken, ik de melding

[...]

krijg :/
mja de gebruiker is hier dus niet ingelogd en DUS bestaat de variabele nog niet.
voordat je hm kan gebruiken zal je dus eerst moeten checken of hij bestaat cq een waarde heeft

Officiëel bikkel'n in #bikkels
Campzone Veld C FieldAdmin
De Veld C site!


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
dual-zip schreef op 02 juli 2003 @ 02:05:
Het probleem is niet de if lus, of de manier waarop gekeken wordt of deze een waarde bevat, maar het probleem is dat ik met _elke_ code waarin ik tracht
PHP:
1
$_SESSION['ingelogt']
te gebruiken, ik de melding

[...]

krijg :/
In dat geval moet je eerst even controleren of die variabele überhaubt wel bestaat. Kan met session-is-registered.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • not-known
  • Registratie: Februari 2002
  • Laatst online: 20-07 00:04

not-known

[BI] Crewmember

bigtree schreef op 02 July 2003 @ 02:09:
[...]
In dat geval moet je eerst even controleren of die variabele überhaubt wel bestaat. Kan met session-is-registered.
If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use isset() to check a variable is registered in $_SESSION.
isset() wordt voor hem dus aanbevolen :) ;)

Officiëel bikkel'n in #bikkels
Campzone Veld C FieldAdmin
De Veld C site!


Acties:
  • 0 Henk 'm!

  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Topicstarter
not-known schreef op 02 July 2003 @ 02:12:
isset() wordt voor hem dus aanbevolen :) ;)
en dit was het inderdaad :)

PHP:
1
2
3
4
5
6
7
session_start("died2k"); 

if(isset($_SESSION['ingelogt'])) { 

//checken of wachtwoord enzo wel klopt anders >> uitloggen 

}


heel aardig dat jullie een beginner zo op weg helpen _/-\o_

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

PHP:
1
2
3
4
5
<?
if ($blaat) { 
echo "blaat bestaat jah"; 
}
?>
Persoonlijk zou ik dat boek het raam uitgooien als ze met dit soort foute voorbeelden komen ;)
Uiteraard krijg je dan een notice als de variabale (of een index van een array) niet bestaat, en je je error_reporting op E_ALL heb staan (wat in mijn ogen zo hoort te zijn op een ontwikkelbak)....
Zelf zou ik het zo doen:
PHP:
1
if(isset($_SESSION['ingelogt']) && $_SESSION['ingelogt'] == 1) { }

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

de meeste boeken leren dingen verkeerd aan, vooral errorhandling enzo

dit zal ook wel een boek zijn waarin $_SESSION ed nog niet bestonden

Doet iets met Cloud (MS/IBM)

Pagina: 1