PHP session_id

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • KNTA
  • Registratie: Juni 2010
  • Laatst online: 13-04 20:08
Hoi, ik loop momenteel tegen een kleine error aan waarvan ik niet weet hoe ik het moet oplossen.

ik heb een index pagina waar je kan inloggen. Op diezelfde pagina zit een php script die zichzelf laat zien als je bent ingelogd met wat teksten. Als je niet ingelogd bent dan krijg je een inlog formulier te zien ipv die tekst.

PHP:
1
2
3
4
5
<?php
if(!$_SESSION['id']):
?>

formulieren/teksten als je NIET bent ingelogd


PHP:
1
2
3
4
5
6
7
<?php
else:{
echo 'click here to <a href="?logout">logoff</a>'; // als je WEL bent ingelogd
}

endif;
?>


voor de rest staat dit wat denk ik relevant is boven aan mijn pagina:
PHP:
1
2
3
session_name('xxx');
session_set_cookie_params(xxx);
session_start();


de error die ik erbij krijg is:
Notice: Undefined index: id in G:\xampp\htdocs\Test\login.php on line 23

weet iemand hoe je dit moet oplossen?

Ps: ik ben een noob betreft PHP.

Acties:
  • 0 Henk 'm!

Anoniem: 20531

Er vanuit gaan dat regel 23 is: !$_SESSION['id'];

Dan is je ID key niet defined.

Zoek isset || array_key_exists op in de handleiding.

[ Voor 26% gewijzigd door Anoniem: 20531 op 12-09-2011 19:17 ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Idd, het zijn notices. Je krijgt ze omdat je variabelen niet initialiseert.
Zie b.v.: http://www.phphulp.nl/php...ned-variable-p-in-/14486/

Acties:
  • 0 Henk 'm!

  • KNTA
  • Registratie: Juni 2010
  • Laatst online: 13-04 20:08
ok dankje voor de snelle reply! zal de links ff bekijken :)

Acties:
  • 0 Henk 'm!

  • KNTA
  • Registratie: Juni 2010
  • Laatst online: 13-04 20:08
Ik heb het bekeken en gelezen maar kom er niet echt uit :P..
als ik het goed begrijp moet ik dus die session id iets toekennen zodat ik die notice niet krijg toch?

maar hoe doe ik dat dan? want stel er komt een nieuwe bezoeker aan op mijn site die heeft zich natuurlijk nog niet geregistreerd of een terugkerende bezoeker heeft nog niet ingelogd. Dus er is nog helemaal niks toegekend aan die bezoekers..

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Je checkt of de waarde van $_SESSION['id'] false is. Je wilt waarschijnlijk eerst checken of het element bestaat voordat je de waarde checkt:
PHP:
1
2
3
<?php
if(!isset($_SESSION['id']))
?>

[ Voor 10% gewijzigd door KabouterSuper op 12-09-2011 19:47 ]

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • BCage
  • Registratie: Juni 2008
  • Laatst online: 02-04 18:38
Probeer dit eens:

PHP:
1
2
3
<?php
if(!isset($_SESSION['id']) || !$_SESSION['id']):
?>


Zo kijk je of de key 'id' bestaat, en zo ja of hij niet false is.

[ Voor 26% gewijzigd door BCage op 12-09-2011 19:48 ]


Acties:
  • 0 Henk 'm!

  • KNTA
  • Registratie: Juni 2010
  • Laatst online: 13-04 20:08
bedankt! nu laat die geen notice meer zien =)!

Acties:
  • 0 Henk 'm!

  • BCage
  • Registratie: Juni 2008
  • Laatst online: 02-04 18:38
Je kunt er overigens ook voor kiezen om die foutmeldingen helemaal niet meer weer te geven. Ik raad het je voorlopig niet aan, maar toch:

error_reporting

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 03:56

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

BCage schreef op maandag 12 september 2011 @ 20:08:
Je kunt er overigens ook voor kiezen om die foutmeldingen helemaal niet meer weer te geven. Ik raad het je voorlopig niet aan, maar toch:

error_reporting
Geef me 1 goede reden waarom je die foutmeldingen zou verbergen anders dan in productie.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Anoniem: 20531

Hoezo raad je dat voorlopig niet aan maar later wel dan?

Acties:
  • 0 Henk 'm!

  • BCage
  • Registratie: Juni 2008
  • Laatst online: 02-04 18:38
RobIII schreef op maandag 12 september 2011 @ 20:11:
[...]

Geef me 1 goede reden waarom je die foutmeldingen zou verbergen anders dan in productie.
Ik heb geen andere reden. Daarom raad ik het ook niet aan.

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 12-05 09:47

Ventieldopje

I'm not your pal, mate!

BCage schreef op maandag 12 september 2011 @ 19:47:
Probeer dit eens:

PHP:
1
2
3
<?php
if(!isset($_SESSION['id']) || !$_SESSION['id']):
?>


Zo kijk je of de key 'id' bestaat, en zo ja of hij niet false is.
Het lijkt me niet verstandig om van $_SESSION['id'] een boolean te maken, lijkt me nogal tegenstrijdige naam en kun je in de problemen komen dat 0 (int) wordt gezien als boolean en dus false terug geeft en 1 als true. Een isset check met optioneel een is_numeric check zal voldoen lijkt mij.

Wat betreft je fout, misschien is het handig als je je inleest in sessies en arrays dan leer je ook snel genoeg waarom het niet werkt wat je wil (aan de hand van de code die je hier gepost hebt).

Sessies:
http://www.sitemasters.be/tutorials/1/1/4/PHP/Sessies_in_PHP (negeer hier het gebazel van "session.auto_start = 1;". Overal waar je sessies gebruikt bovenin het bestand session_start() aanroepen.)

Arrays:
http://www.sitemasters.be/tutorials/1/1/57/PHP/Arrays_Basics

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8

Pagina: 1