-----Original Message-----
From: Webmaster [mailto:[EMAIL PROTECTED]
Sent: Monday, April 24, 2006 1:49 PM
To: php-general@lists.php.net
Subject: [PHP] Session Array Disappears
Hello,
The site I'm working on works like this...
Requires a login that uses sessions to remember username and email
address. Upon being verified, the user is presented with a page that
displays several questions regarding their background. Upon
submitting
the background page, a script checks to make sure all background
questions were answered. If not, the page is redisplayed
with a warning
to answer all questions. If they are all present, a second page is
displayed asking about a specific topic. Submitting the second page
calls up the code provided below.
In reading the www.php.net/manual/en/ref.session.php page,
I'd like to
point out we do not use cookies. The session id is propagated in the
URL (although it's not visible in the URL bar). Also,
session.gc_maxlifetime is set to 5400. We are using PHP 4.3.4.
Not very often, but once in a while, I'll get an email
warning me that a
submission was denied because $_SESSION['Q'] is empty. I'm
wondering,
hoping and/or praying that someone out there can look at this small
script and let me know if I'm doing something wrong with the built in
function array_pop, perhaps I don't understand sessions at all or
perhaps it is a server issue. It's very confusing because
other session
variables (name and email from the login page) are not emptied, just
$_SESSION['Q'].
Here's my code with some documentation:
<?php
/*
$_SESSION['startQA'] contains 11 elements and is generated by
a previous
page in the site.
Once the visitor clicks the page two submit button, the above SESSION
variable comes into play again.
This script takes that array of elements and does the following:
1. Assign session array to local array
2. Removes the last elemental value using array_pop
3. Removes the last elemental value using array_pop
4. Assign local variable the value of the a POST element
4a. Create a new session array and populates the first
element equal to
POST element
5. Runs through and populates the remaining 9 elements
5a. Total of 10 elements are now populated, 0 thru 9
6. Double checks the existence of each element
6a. if an element is missing, email me a warning and end program
*/
//Assign Session array to local variable
// Step 1
$thisQarray = $_SESSION['startQA'];
//Remove the last element of the original array
// Step 2
$area = array_pop($thisQarray);
//Remove last element of bgq array and assign to taking_test_at
// Step 3
$from_location = array_pop($thisQarray);
//Assign test version to variable
// Step 4
$testVersion = $_POST['version'];
//Start building the final Session Array
// Step 4a
$_SESSION['Q'] = array($testVersion);
//Populate rest of Session Array
// Step 5
for ($newBGQCounter=0; $newBGQCounter<count($thisQarray);
$newBGQCounter++)
{
$_SESSION['Q'][$newBGQCounter+1] = $thisQarray[$newBGQCounter];
}
//test for existense of session array elements
if ( ($_SESSION['Q'][0] == "") OR ($_SESSION['Q'][1] == "") OR
($_SESSION['Q'][2] == "") OR ($_SESSION['Q'][3] == "") OR
($_SESSION['Q'][4] == "") OR ($_SESSION['Q'][5] == "") OR
($_SESSION['Q'][6] == "") OR ($_SESSION['Q'][7] == "") OR
($_SESSION['Q'][8] == "") OR ($_SESSION['Q'][9] == "") )
{
SEND ME AN ERROR EMAIL
END PROGRAM
}
?>
Thank you all very much,
R
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php