Toon posts:

[PHP] Sessions

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit hier met een f**** probleem waar ik na 3 uur proberen nog nie uit ben :(


Ik ben een nieuws-toevoeg scriptje aan het maken, waarbij je eerst moet inloggen.
De inlogdata worden uit een DB gehaald. Daar staan ook nog extra gegevens zoals de naam.

Nu begin in de pagina uiteraard met
PHP:
1
<?session_start();?>

Daarna laat ik controleren of de user is ingelogd, zo niet krijgt de user 2 velden te zien voor username + pw.

Zodra deze gepost zijn, wordt gecontroleerd of deze user in de DB bestaat.
Zoja:
PHP:
1
<?$username = $record->username;$password = $record->password;$name = $record->name;?>

Dan het probleem. Deze variabelen wil ik opslaan.
Doe ik zo:
PHP:
1
<?session_register("username");session_register("password");session_register("name");?>

Die laatste werkt niet.
Krijg deze foutmelding:
code:
1
2
3
Warning: Cannot send session cache limiter - headers
already sent (output started at blablabla.php:10) in
blablabla.php on line 87

Line 87 staat die laatste zooi, begin bestand ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
1  <?php
2  session_start();
3  ?>
4
5
6  <!docTYPE html public "-//W3C//DTD HTML 4.0 //EN">
7  <HTML><BODY BGCOLOR="#FFFFFF">
8  <FONT FACE="Verdana, Arial" COLOR="#000000">
9 
10 <?

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Je hebt het antwoord al een beetje. Headers already been sent. Je geeft de HTML voordat de headers verstuurd worden. Oplossing? Heel simpel, zet de registers bovenaan de source, onder de session_start().

Verwijderd

Soms krijg ik ook wat vage dingen met sesies. Maar je kunt het beste dacht ik alles wat met sessies te maken heeft helemaal bovenaan een pagina neer te zetten. Dus zelfs voordat de html tag geopend wordt.

Daar heeft de foutmelding in ieder geval mee te maken.

Als je alles bovenaan neerzet dan kun je misschien wel wat probleempjes krijgen als je dezelfde variabele meerdere keren wilt veranderen en opslaan.

Verwijderd

Topicstarter
Op zondag 05 mei 2002 01:11 schreef SONiCB00M het volgende:
Je hebt het antwoord al een beetje. Headers already been sent. Je geeft de HTML voordat de headers verstuurd worden. Oplossing? Heel simpel, zet de registers bovenaan de source, onder de session_start().
Het probleem is dat ik ze nog uit een DB moet halen..
D8 al hieraan, maar ik kan me herinneren dat ik het wel eens werkend heb gekregen.

Ik weet dat de
PHP:
1
<?session_start();?>

bovenaan moet, maar volges mij is er wel een manier om die
PHP:
1
<?session_register(blablabla);?>

middenin een pagina te hebben..

Daar ben ik dus naar op zoek.
Dit dus omdat ik ze simpelweg pas later KAN registeren...

Verwijderd

Op zondag 05 mei 2002 01:17 schreef Blackwater het volgende:
Daar ben ik dus naar op zoek.
Dit dus omdat ik ze simpelweg pas later KAN registeren...
Volgens mij hoef je het registreren niet altijd na het toewijzen van een waarde aan die variabele doen, maar kan dat gewoon bovenaan. Automagisch pakt php dan toch de waarde als je het eenmaal toewijst.

Maar dit werkt niet altijd, maar ik kan niet uit je stukje precies opmaken of je het wel geprobeerd hebt.

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 05-09 14:21

Tuinhark

Retro

Wat ook kan is dat je output buffering gaat toepassen.

:Y)

Verwijderd

Topicstarter
Op zondag 05 mei 2002 01:22 schreef Spooky het volgende:

[..]

Volgens mij hoef je het registreren niet altijd na het toewijzen van een waarde aan die variabele doen, maar kan dat gewoon bovenaan. Automagisch pakt php dan toch de waarde als je het eenmaal toewijst.
Dus als je em bovenaan alvast registreerd en dan erges middenin pas de info er in opslaat doet ie het??
Hm...

Ga ik ff testen!!

Alvast super bedankt!!

Verwijderd

Topicstarter
OK, nu werken me sessions helemaal nie meer :(

Als ik de variabelen geregistered heb en dan dmv een link paar keer pagina herlaad (dus NIET F5; krijg je of je opnieuw wil posten) bestaan de variabelen na de eerste keer niet, dan wel en daarna niet meer!!

:?
Op zondag 05 mei 2002 01:28 schreef Tuinhark het volgende:
Wat ook kan is dat je output buffering gaat toepassen.

:Y)
Heb geen id wat dit is, maar als ik de sessions niet werkend krijg zal ik iets anders moeten proberen.
Tx voor de tip, kijk er morgen wel ff naar.

Verwijderd

Ik zie denk ik wel wat je fout doet, je start je script met een een session_register daar is helemaal niets mis mee maar wanneer je sessions wil registreren mag je helemaal geen input hebben.. vb
PHP:
1
<?session_start();if ($Submit == "Login") {    if (check($user, $psw)) { // user &amp; psw zijn goed        session_register("username"); // registreer username        session_register("password"); // registreer password        $username = $user;  // zet de username        $password = $psw;   // zet de password        header("location: index.php"); // verander pagina.    }}else{?><html>enzo<?}?>

dat zou in theorie moeten werken en heb het net ff uit mijn hoofd gedaan :D

  • Grum
  • Registratie: Juni 2001
  • Niet online
Je mag gewoon geen 1 bit versturen voor je session_start triggert. Dus ook geen enter buiten de <? ?>'s in een include oid.

Verwijderd

Op zondag 05 mei 2002 10:35 schreef Grum het volgende:
Je mag gewoon geen 1 bit versturen voor je session_start triggert. Dus ook geen enter buiten de <? ?>'s in een include oid.
Correct!

One of tha masters have tha answer

Verwijderd

Topicstarter
Bedankt allemaal!!
Hij doet het nu zonder foutmeldingen.



edit:
Opgelost :)
Pagina: 1