[php] Probleem met sessions

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het volgende stukje script. Hij geeft elke keer de volgende foutmelding bij het script:

session_start(): Cannot send session cookie - headers already sent by (output started at blabla\admincreateadminuser.php:21) in blabla\sessiondata.php on line 19

en dit is de code:

op lijn 19:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$User = new User;

$SID="";
if (array_key_exists("sid",$HTTP_GET_VARS)) {
  $SID = $HTTP_GET_VARS["sid"];
}

if (array_key_exists("test",$HTTP_GET_VARS)) {
  echo "sid = ".$SID;exit;
}

if ($sessionFileDir != "") {
  session_save_path($sessionFileDir);
}

if ($SID == "") {
  session_start();
  $SID = session_id();
} else {
  session_start($SID);
}

if (array_key_exists("User",$HTTP_SESSION_VARS)) {
  $User = $HTTP_SESSION_VARS["User"];
}


waar kan het nu fout zitten?

Heb al veel gezocht op het forum maar ik kan niks vinden. of heb ik er overheen gekeken...

Acties:
  • 0 Henk 'm!

  • Asperientje
  • Registratie: Juni 2004
  • Laatst online: 07-03-2015
volgens mij zit de fout op lijn 20 (en dus in de {} die bij lijn 19 beginnen)
omdat je eerst
session_start()
aanroept, en daarna
session_start(variabele)
aanroept. ik weet niet wat de declaratie is van de functie, maar volgens mij wil je functie session_start geen variabelen, en crasht ie daarom. (tenminste als je script niet ook crasht bij regel 16/17

edit:
volgens mij heb ik me even te weinig verdiept in het script... (php vooral) :9

[ Voor 11% gewijzigd door Asperientje op 09-06-2004 11:07 ]

Everything's got a meaning


Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
session_start dient de eerste opdracht in het script te zijn.

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • Norckon
  • Registratie: September 2000
  • Laatst online: 01-09 21:26
Niet perse de eerste, maar wel voor elke functie of whatever die iets naar de browser stuurt. Session start wil namelijk eerst in de header een cookie verwerken..

Acties:
  • 0 Henk 'm!

  • Ethnocentrix
  • Registratie: Augustus 2002
  • Laatst online: 11:53

Ethnocentrix

Rijkserkend prutser

Op regel 9 dus even de echo weghalen :)

You know you're an engineer if you have no life & can prove it mathematically.


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Ethnocentrix schreef op 09 juni 2004 @ 11:15:
Op regel 9 dus even de echo weghalen :)
Dat is het waarschijnlijk niet...


Welk bestand is dit? sessiondata.php of admincreateadminuser.php?

Ik denk dat dit sessiondata.php is. Wat staat er op regel 15-25 in admincreateadminuser.php ?

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

LuCarD schreef op 09 juni 2004 @ 11:17:
Dat is het waarschijnlijk niet...


Welk bestand is dit? sessiondata.php of admincreateadminuser.php?

Ik denk dat dit sessiondata.php is. Wat staat er op regel 15-25 in admincreateadminuser.php ?
Een echo boven session_start() is altijd fout, dus 99% kans dat dit het wel is.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik de echo weghaal geeft ie hetzelfde probleem weer.

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

NMe84 schreef op 09 juni 2004 @ 11:22:
[...]

Een echo boven session_start() is altijd fout, dus 99% kans dat dit het wel is.
Nope... Zie de exit!
http://nl.php.net/exit
Verwijderd schreef op 09 juni 2004 @ 11:22:
Als ik de echo weghaal geeft ie hetzelfde probleem weer.
Is het wel jouw code :?

[ Voor 30% gewijzigd door LuCarD op 09-06-2004 11:24 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • jorritv
  • Registratie: Maart 2004
  • Laatst online: 08-09 16:41
Als je ergens iets uitvoert naar de browsers, door middel van echo, gewoon html code, etc. en daarna pas een session_start doet, gaat het niet werken.

Dat wordt dus ook bedoeld met de foutcode
(session_start(): Cannot send session cookie - headers already sent by (output started at blabla\admincreateadminuser.php:21) in blabla\sessiondata.php on line 19)
die je te zien krijgt.
Het kan dus ook zijn dat je in de admincreateadminuser.php al iets naar de browser stuurt, voordat de session_start aangeroepen wordt.

bijvoorbeeld:

fout:
PHP:
1
2
echo "hello";
session_start($SID);


goed:
PHP:
1
2
session_start($SID);
echo "hello";

[ Voor 6% gewijzigd door jorritv op 09-06-2004 11:26 . Reden: spelfouten ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
volgens mij zie ik het probleem al. In admincreateadminuser.php staat eerst een stukje html. Vervolgens roept ie dmv require de php pagina sessionsvars.php aan.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>
      Create the Admin User 
    </title>
    <link rel="stylesheet" href="common.css" type="text/css">
  </head>

  <body class="MAIN">

<?php
  require "SystemVars.php";

etc...


Denk dat dit het is...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Argh, je hebt gelijk. Lekker handig, zo'n commando aanroepen op dezelfde regel... :?

Nouja, dan heeft TS dus idd iets afgedrukt in die andere PHP file en daarna de sessie gestart...
Verwijderd schreef op 09 juni 2004 @ 11:26:
volgens mij zie ik het probleem al. In admincreateadminuser.php staat eerst een stukje html. Vervolgens roept ie dmv require de php pagina sessionsvars.php aan.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>
      Create the Admin User 
    </title>
    <link rel="stylesheet" href="common.css" type="text/css">
  </head>

  <body class="MAIN">

<?php
  require "SystemVars.php";

etc...


Denk dat dit het is...
Zet daar eens
PHP:
1
<?php session_start(); ?>
boven dan. :P

[ Voor 51% gewijzigd door NMe op 09-06-2004 11:28 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • jorritv
  • Registratie: Maart 2004
  • Laatst online: 08-09 16:41
Verwijderd schreef op 09 juni 2004 @ 11:26:
volgens mij zie ik het probleem al. In admincreateadminuser.php staat eerst een stukje html. Vervolgens roept ie dmv require de php pagina sessionsvars.php aan.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>
      Create the Admin User 
    </title>
    <link rel="stylesheet" href="common.css" type="text/css">
  </head>

  <body class="MAIN">

<?php
  require "SystemVars.php";

etc...


Denk dat dit het is...
Yep, dat is het, je moet de session_start doen voordat je deze code naar de browser stuurt.

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 09 juni 2004 @ 11:26:
volgens mij zie ik het probleem al. In admincreateadminuser.php staat eerst een stukje html. Vervolgens roept ie dmv require de php pagina sessionsvars.php aan.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>
      Create the Admin User 
    </title>
    <link rel="stylesheet" href="common.css" type="text/css">
  </head>

  <body class="MAIN">

<?php
  require "SystemVars.php";

etc...


Denk dat dit het is...
Ik denk het niet... Ik weet het wel zeker... O-)

[edit]
Spuit-12 :(

[ Voor 14% gewijzigd door LuCarD op 09-06-2004 11:29 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
klopt dat was het probleem.


Thnx iedereen _/-\o_

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 09 juni 2004 @ 11:32:
klopt dat was het probleem.


Thnx iedereen _/-\o_
Misschien een leuke tip voor de volgende keer. Je krijgt een foutmelding en een bepaalde regel. Je ziet op, of vlak voor die regel een functie staan. Het eerste wat je dan doet is die functie nakijken op PHP.net. In dit geval had je dan gelezen dat session_start aangeroepen moet worden voor de headers verstuurd worden, en zie: je error zegt dat er iets misging met het versturen van headers. Verder kijken op de manual pagina van session_start wijst uit dat headers verstuurd worden zodra er output naar de browser geschreven wordt, dus: je hebt ergens iets afgedrukt en wil daarna nog headers gaan setten.

Errors leren lezen en gebruiken is een van de belangrijkste onderdelen van het debuggen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1