My page loads, and calls an init() function that returns content to a
div on the page, as well as setting a $_SESSION variable. The content
it returns includes a link that calls the same variable, but I get an
error that says the index isn't defined.
The second two calls are AJAX-generated. The second call immediately
echos the $_SESSION variable back after it sets it, and it sets it
properly. But the subsequent request doesn't see it.
I can't figure this one out, and this sort of function is vital to the
site I'm building.
Things I've already done:
Put session_start() in the functions that get called after the initial
pageload. Just generates warnings that a session has already been
started (by the original pageload).
Checked to make sure the same session is being used by all requests,
and it is (according to session_id).
Any help is appreciated. 15 5810
Evil Otto wrote:
My page loads, and calls an init() function that returns content to a
div on the page, as well as setting a $_SESSION variable. The content
it returns includes a link that calls the same variable, but I get an
error that says the index isn't defined.
The second two calls are AJAX-generated. The second call immediately
echos the $_SESSION variable back after it sets it, and it sets it
properly. But the subsequent request doesn't see it.
I can't figure this one out, and this sort of function is vital to the
site I'm building.
Things I've already done:
Put session_start() in the functions that get called after the initial
pageload. Just generates warnings that a session has already been
started (by the original pageload).
Checked to make sure the same session is being used by all requests,
and it is (according to session_id).
Any help is appreciated.
session_start() must be called before ANY OUTPUT - including whitespace,
DOCTYPE statement, <head>, etc. 99% of the time people ask about
session problems here, they have already sent output before the call to
session_start() is made, but don't have error reporting enabled.
As the very first lines in the page you're loading, try the following:
<?php
error_reporting(E_ALL);
ini_set("display_errors","1");
?>
No whitespace or anything else before it.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp. js*******@attglobal.net
==================
Evil Otto wrote:
Put session_start() in the functions that get called after the initial
pageload. Just generates warnings that a session has already been
started (by the original pageload).
You are supposed to use one session_start() per script, say your AJAX will
call the getnewcars.php to get a result, then you have session_start() first
in that script, and thats all, nothing in the functions that are called from
that script.
--
//Aho
J.O. Aho wrote:
Evil Otto wrote:
>Put session_start() in the functions that get called after the initial pageload. Just generates warnings that a session has already been started (by the original pageload).
You are supposed to use one session_start() per script, say your AJAX
will call the getnewcars.php to get a result, then you have
session_start() first in that script, and thats all, nothing in the
functions that are called from that script.
You can put session_start() after other output if you use ob_start to
buffer output.
turnitup wrote:
J.O. Aho wrote:
>Evil Otto wrote:
>>Put session_start() in the functions that get called after the initial pageload. Just generates warnings that a session has already been started (by the original pageload).
You are supposed to use one session_start() per script, say your AJAX will call the getnewcars.php to get a result, then you have session_start() first in that script, and thats all, nothing in the functions that are called from that script.
You can put session_start() after other output if you use ob_start to
buffer output.
Even if using buffering, it's a good thing to write it properly anyway.
--
//Aho
There's no output going to the browser before session_start(). The
top of my script looks like this:
--quote
<?php
error_reporting(E_ALL);
ini_set("display_errors","1");
?>
<?php
/* Should only be debugging from one machine
* Should plan on making this a config variable
*/
if ($_SERVER['REMOTE_ADDR'] == '192.168.1.201')
{
$debug = 1;
}
$html='';
require_once('includes.php');
session_start();
--end quote
After that, there is content that is put into a variable and then run
through a filter before it gets echoed to the browser. There's an
onLoad="" call in the body tag that trips off another request, which
generates content that includes a link, as well as setting a $_SESSION
variable in the process. The problem is that it doesn't appear to
"write" the variable out to the session storage, because subsequent
requests can't see it.
On Feb 17, 10:23 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
Evil Otto wrote:
My page loads, and calls an init() function that returns content to a
div on the page, as well as setting a $_SESSION variable. The content
it returns includes a link that calls the same variable, but I get an
error that says the index isn't defined.
The second two calls are AJAX-generated. The second call immediately
echos the $_SESSION variable back after it sets it, and it sets it
properly. But the subsequent request doesn't see it.
I can't figure this one out, and this sort of function is vital to the
site I'm building.
Things I've already done:
Put session_start() in the functions that get called after the initial
pageload. Just generates warnings that a session has already been
started (by the original pageload).
Checked to make sure the same session is being used by all requests,
and it is (according to session_id).
Any help is appreciated.
session_start() must be called before ANY OUTPUT - including whitespace,
DOCTYPE statement, <head>, etc. 99% of the time people ask about
session problems here, they have already sent output before the call to
session_start() is made, but don't have error reporting enabled.
As the very first lines in the page you're loading, try the following:
<?php
error_reporting(E_ALL);
ini_set("display_errors","1");
?>
No whitespace or anything else before it.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
Evil Otto kirjoitti:
There's no output going to the browser before session_start(). The
top of my script looks like this:
--quote
<?php
error_reporting(E_ALL);
ini_set("display_errors","1");
?>
Output starts here cos you have a gap between two php tags. It's the
whitespace effect.
<?php
--
"En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö sp**@outolempi.net | Gedoon-S @ IRCnet | rot13(xv***@bhgbyrzcv.arg)
I removed the ?and <?php tags from where you saw the whitespace, so
there's no extraneous whitespace. Had no effect on the problem I'm
seeing; the third request still cannot see changes to the $_SESSION
variable made by the second.
On Feb 18, 3:24 pm, Kimmo Laine <s...@outolempi.netwrote:
Evil Otto kirjoitti:
There's no output going to the browser before session_start(). The
top of my script looks like this:
--quote
<?php
error_reporting(E_ALL);
ini_set("display_errors","1");
?>
Output starts here cos you have a gap between two php tags. It's the
whitespace effect.
<?php
>
--
"En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö
s...@outolempi.net | Gedoon-S @ IRCnet | rot13(x...@bhgbyrzcv.arg)
Evil Otto wrote:
I removed the ?and <?php tags from where you saw the whitespace, so
there's no extraneous whitespace. Had no effect on the problem I'm
seeing; the third request still cannot see changes to the $_SESSION
variable made by the second.
On Feb 18, 3:24 pm, Kimmo Laine <s...@outolempi.netwrote:
>Evil Otto kirjoitti:
>>There's no output going to the browser before session_start(). The top of my script looks like this: --quote <?php error_reporting(E_ALL); ini_set("display_errors","1"); ?>
Output starts here cos you have a gap between two php tags. It's the whitespace effect.
>><?php -- "En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö s...@outolempi.net | Gedoon-S @ IRCnet | rot13(x...@bhgbyrzcv.arg)
And can you be sure that *NOTHING* in your include.php file generates
output - including leading or trailing blanks, newline characters, etc.?
What do you get for error messages?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp. js*******@attglobal.net
==================
turnitup wrote:
J.O. Aho wrote:
>Evil Otto wrote:
>>Put session_start() in the functions that get called after the initial pageload. Just generates warnings that a session has already been started (by the original pageload).
You are supposed to use one session_start() per script, say your AJAX will call the getnewcars.php to get a result, then you have session_start() first in that script, and thats all, nothing in the functions that are called from that script.
You can put session_start() after other output if you use ob_start to
buffer output.
Output buffering just hides the real problem - it doesn't solve it.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp. js*******@attglobal.net
==================
The only error i get is an undefined index message when the third
request tries to access the $_SESSION variable.
On Feb 18, 8:37 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
Evil Otto wrote:
I removed the ?and <?php tags from where you saw the whitespace, so
there's no extraneous whitespace. Had no effect on the problem I'm
seeing; the third request still cannot see changes to the $_SESSION
variable made by the second.
On Feb 18, 3:24 pm, Kimmo Laine <s...@outolempi.netwrote:
Evil Otto kirjoitti:
>There's no output going to the browser before session_start(). The top of my script looks like this: --quote <?php error_reporting(E_ALL); ini_set("display_errors","1"); ?>
Output starts here cos you have a gap between two php tags. It's the
whitespace effect.
><?php
--
"En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö
s...@outolempi.net | Gedoon-S @ IRCnet | rot13(x...@bhgbyrzcv.arg)
And can you be sure that *NOTHING* in your include.php file generates
output - including leading or trailing blanks, newline characters, etc.?
What do you get for error messages?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
On Feb 18, 8:37 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
Evil Otto wrote:
I removed the ?and <?php tags from where you saw the whitespace, so
there's no extraneous whitespace. Had no effect on the problem I'm
seeing; the third request still cannot see changes to the $_SESSION
variable made by the second.
On Feb 18, 3:24 pm, Kimmo Laine <s...@outolempi.netwrote:
Evil Otto kirjoitti:
>There's no output going to the browser before session_start(). The top of my script looks like this: --quote <?php error_reporting(E_ALL); ini_set("display_errors","1"); ?>
Output starts here cos you have a gap between two php tags. It's the
whitespace effect.
><?php
--
"En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö
Positive.
s...@outolempi.net | Gedoon-S @ IRCnet | rot13(x...@bhgbyrzcv.arg)
And can you be sure that *NOTHING* in your include.php file generates
output - including leading or trailing blanks, newline characters, etc.?
What do you get for error messages?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
Evil Otto wrote:
The only error i get is an undefined index message when the third
request tries to access the $_SESSION variable.
On Feb 18, 8:37 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
>Evil Otto wrote:
>>I removed the ?and <?php tags from where you saw the whitespace, so there's no extraneous whitespace. Had no effect on the problem I'm seeing; the third request still cannot see changes to the $_SESSION variable made by the second. On Feb 18, 3:24 pm, Kimmo Laine <s...@outolempi.netwrote: Evil Otto kirjoitti: There's no output going to the browser before session_start(). The top of my script looks like this: --quote <?php error_reporting(E_ALL); ini_set("display_errors","1"); ?> Output starts here cos you have a gap between two php tags. It's the whitespace effect. <?php -- "En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö s...@outolempi.net | Gedoon-S @ IRCnet | rot13(x...@bhgbyrzcv.arg)
And can you be sure that *NOTHING* in your include.php file generates output - including leading or trailing blanks, newline characters, etc.?
What do you get for error messages?
-- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstuck...@attglobal.net ==================
In that case there are only two options. Either the second page didn't
call session_start() before any output, or the third page didn't do it.
Sessions work. If the second page properly starts the session and sets
the session info, and the third page properly starts the session, it
does work.
I know this sounds blunt - and I'm really sorry, I don't mean to be
blunt about it. But sessions do work. If you have a case where the
second page sets a session variable and the third page can't read it,
one of two things is wrong:
1. The second page didn't actually set the $_SESSION value in the
session (possibly because session_start wasn't called early enough - but
there could be other reasons), or
2. The third page can't read the $_SESSION value. In this case if it
is set, about the only option you have is that session_start() wasn't
called soon enough.
So, if the third page (where the value is read) is correct, perhaps the
second page (where it is set) has a problem?
It's got to be one or the other.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp. js*******@attglobal.net
==================
session_start() is called exactly once, at the beginning of the main
script.
There are multiple requests, but there is ONE page.
I've tried putting session_start() at the beginning of the functions
that get called, but they throw "session has already been started"
errors.
On Feb 18, 9:40 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
Evil Otto wrote:
The only error i get is an undefined index message when the third
request tries to access the $_SESSION variable.
On Feb 18, 8:37 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
Evil Otto wrote: I removed the ?and <?php tags from where you saw the whitespace, so there's no extraneous whitespace. Had no effect on the problem I'm seeing; the third request still cannot see changes to the $_SESSION variable made by the second. On Feb 18, 3:24 pm, Kimmo Laine <s...@outolempi.netwrote: Evil Otto kirjoitti: There's no output going to the browser before session_start(). The top of my script looks like this: --quote <?php error_reporting(E_ALL); ini_set("display_errors","1"); ?> Output starts here cos you have a gap between two php tags. It's the whitespace effect. <?php -- "En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö s...@outolempi.net | Gedoon-S @ IRCnet | rot13(x...@bhgbyrzcv.arg)
And can you be sure that *NOTHING* in your include.php file generates
output - including leading or trailing blanks, newline characters, etc..?
What do you get for error messages?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
In that case there are only two options. Either the second page didn't
call session_start() before any output, or the third page didn't do it.
Sessions work. If the second page properly starts the session and sets
the session info, and the third page properly starts the session, it
does work.
I know this sounds blunt - and I'm really sorry, I don't mean to be
blunt about it. But sessions do work. If you have a case where the
second page sets a session variable and the third page can't read it,
one of two things is wrong:
1. The second page didn't actually set the $_SESSION value in the
session (possibly because session_start wasn't called early enough - but
there could be other reasons), or
2. The third page can't read the $_SESSION value. In this case if it
is set, about the only option you have is that session_start() wasn't
called soon enough.
So, if the third page (where the value is read) is correct, perhaps the
second page (where it is set) has a problem?
It's got to be one or the other.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
Evil Otto wrote:
session_start() is called exactly once, at the beginning of the main
script.
There are multiple requests, but there is ONE page.
I've tried putting session_start() at the beginning of the functions
that get called, but they throw "session has already been started"
errors.
On Feb 18, 9:40 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
>Evil Otto wrote:
>>The only error i get is an undefined index message when the third request tries to access the $_SESSION variable. On Feb 18, 8:37 pm, Jerry Stuckle <jstuck...@attglobal.netwrote: Evil Otto wrote: I removed the ?and <?php tags from where you saw the whitespace, so there's no extraneous whitespace. Had no effect on the problem I'm seeing; the third request still cannot see changes to the $_SESSION variable made by the second. On Feb 18, 3:24 pm, Kimmo Laine <s...@outolempi.netwrote: >Evil Otto kirjoitti: >>There's no output going to the browser before session_start(). The >>top of my script looks like this: >>--quote >><?php >> error_reporting(E_ALL); >> ini_set("display_errors","1"); >>?> >Output starts here cos you have a gap between two php tags. It's the >whitespace effect. >><?php >-- >"En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö >s...@outolempi.net | Gedoon-S @ IRCnet | rot13(x...@bhgbyrzcv.arg) And can you be sure that *NOTHING* in your include.php file generates output - including leading or trailing blanks, newline characters, etc.? What do you get for error messages? -- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstuck...@attglobal.net ==================
In that case there are only two options. Either the second page didn't call session_start() before any output, or the third page didn't do it.
Sessions work. If the second page properly starts the session and sets the session info, and the third page properly starts the session, it does work.
I know this sounds blunt - and I'm really sorry, I don't mean to be blunt about it. But sessions do work. If you have a case where the second page sets a session variable and the third page can't read it, one of two things is wrong:
1. The second page didn't actually set the $_SESSION value in the session (possibly because session_start wasn't called early enough - but there could be other reasons), or 2. The third page can't read the $_SESSION value. In this case if it is set, about the only option you have is that session_start() wasn't called soon enough.
So, if the third page (where the value is read) is correct, perhaps the second page (where it is set) has a problem?
It's got to be one or the other.
-- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstuck...@attglobal.net ==================
Hmmm, when you say
"The content it returns includes a link that calls the same variable,
but I get an error that says the index isn't defined."
what do you mean exactly? Is this an html link? A function call?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp. js*******@attglobal.net
==================
On Feb 19, 7:24 am, Jerry Stuckle <jstuck...@attglobal.netwrote:
Evil Otto wrote:
session_start() is called exactly once, at the beginning of the main
script.
There are multiple requests, but there is ONE page.
I've tried putting session_start() at the beginning of the functions
that get called, but they throw "session has already been started"
errors.
On Feb 18, 9:40 pm, Jerry Stuckle <jstuck...@attglobal.netwrote:
Evil Otto wrote: The only error i get is an undefined index message when the third request tries to access the $_SESSION variable. On Feb 18, 8:37 pm, Jerry Stuckle <jstuck...@attglobal.netwrote: Evil Otto wrote: I removed the ?and <?php tags from where you saw the whitespace, so there's no extraneous whitespace. Had no effect on the problem I'm seeing; the third request still cannot see changes to the $_SESSION variable made by the second. On Feb 18, 3:24 pm, Kimmo Laine <s...@outolempi.netwrote: Evil Otto kirjoitti: >There's no output going to the browser before session_start(). The >top of my script looks like this: >--quote ><?php > error_reporting(E_ALL); > ini_set("display_errors","1"); >?> Output starts here cos you have a gap between two php tags. It's the whitespace effect. ><?php -- "En ole paha ihminen, mutta omenat ovat elinkeinoni." -Perttu Sirviö s...@outolempi.net | Gedoon-S @ IRCnet | rot13(x...@bhgbyrzcv.arg) And can you be sure that *NOTHING* in your include.php file generates output - including leading or trailing blanks, newline characters, etc.? What do you get for error messages? -- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstuck...@attglobal.net ==================
In that case there are only two options. Either the second page didn't
call session_start() before any output, or the third page didn't do it.
Sessions work. If the second page properly starts the session and sets
the session info, and the third page properly starts the session, it
does work.
I know this sounds blunt - and I'm really sorry, I don't mean to be
blunt about it. But sessions do work. If you have a case where the
second page sets a session variable and the third page can't read it,
one of two things is wrong:
1. The second page didn't actually set the $_SESSION value in the
session (possibly because session_start wasn't called early enough - but
there could be other reasons), or
2. The third page can't read the $_SESSION value. In this case if it
is set, about the only option you have is that session_start() wasn't
called soon enough.
So, if the third page (where the value is read) is correct, perhaps the
second page (where it is set) has a problem?
It's got to be one or the other.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
Hmmm, when you say
"The content it returns includes a link that calls the same variable,
but I get an error that says the index isn't defined."
what do you mean exactly? Is this an html link? A function call?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstuck...@attglobal.net
==================
This is an onClick attribute in a div that calls a javascript
function, which makes an Ajax request calling a PHP funciton on the
server.
I think i may have cleared this up, however. Turns out a
session_destroy() was in the wrong place, and an undefined index
should have been expected. This discussion thread is closed Replies have been disabled for this discussion. Similar topics
1 post
views
Thread by Ken |
last post: by
|
8 posts
views
Thread by chris_fieldhouse |
last post: by
|
9 posts
views
Thread by cendrizzi |
last post: by
|
7 posts
views
Thread by mantrid |
last post: by
| |
13 posts
views
Thread by Marvin Zhang |
last post: by
|
6 posts
views
Thread by =?Utf-8?B?U2hhd24gU2VzbmE=?= |
last post: by
| | | | | | | | | | | | | |