SitePoint Sponsor

User Tag List

Results 1 to 12 of 12

Hybrid View

  1. #1
    SitePoint Zealot
    Join Date
    May 2011
    Posts
    191
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Session variables not working, please help!!!

    Hi all,

    I have been working is a website for offering stuff.
    I have been dealing with a problem from a while, and now I know why it is happening, but not how to solve it. Please help!!

    Step 1
    In the first page, some items are selected from a list using checkboxs. The result of this selection is stored in a variable called "check" (all checkboxs are within a form).

    echo '<td><input type="checkbox" name="check[]" value='.$fila.'></td>';

    Step 2
    "check" is passed to the next page using a input type="submit", and recovered using POST:

    $check = $_POST['check'];

    Step 3
    In this same page, a session variable is created, in order to use this values in the next pages:

    $_SESSION['session_check']=$check;


    This works perfectly most of the times, but in a few cases the session variable is empty in the next page, even when <?php session_start(); is used in both pages.
    This makes the website stops running.

    Could anyone help? Any idea about why the session variable is empty?

    Thanks a lot!!

  2. #2
    SitePoint Wizard wonshikee's Avatar
    Join Date
    Jan 2007
    Posts
    1,223
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    This makes the website stops running.
    Sounds to me like session_start() is sometimes being called after output (anything echo'd out or not inside php tags).

  3. #3
    SitePoint Zealot
    Join Date
    May 2011
    Posts
    191
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Hi,

    According to the PHP manual, there is a <?php before ...
    http://php.net/manual/en/function.session-start.php

  4. #4
    Keeper of the SFL StarLion's Avatar
    Join Date
    Feb 2006
    Location
    Atlanta, GA, USA
    Posts
    3,747
    Mentioned
    64 Post(s)
    Tagged
    0 Thread(s)
    You're aware you're creating an array there, not a singular value?

    Have you run the script with error displays on (See Common PHP Problems thread at top of forum)?
    Never grow up. The instant you do, you lose all ability to imagine great things, for fear of reality crashing in.

  5. #5
    SitePoint Zealot
    Join Date
    May 2011
    Posts
    191
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Hi StarLion,

    Thanks for helping.
    About your first question, yes, it is an array.
    According to the info I found, I can assing the session as I am doing:
    http://www.phpriot.com/articles/intro-php-sessions/7

    If it is not the proper way, or if I a missing something, please let me know.


    I have reviewed your post of most common errors. I will be adding the script and post the results.

    Thansk a lot!!

  6. #6
    SitePoint Zealot
    Join Date
    May 2011
    Posts
    191
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Hi StarLion,

    Thanks a lot. I have run your script in pages presenting this behavior:
    <?php
    ini_set('display_errors',1);
    error_reporting(E_ALL);
    ?>

    And a very importing result appeared:
    Notice: Use of undefined constant session_check - assumed 'session_check'

    Looking at the code, it was like this:
    if (is_array($_SESSION[session_check])){

    And I guess it has to be like this:
    if (is_array($_SESSION['session_check'])){

    session_check is a session variable storing a selection of items made in the previous page.
    Is it possible this syntax missing has been causing this issue? As stated earlier in this post, in most of the cases all works fine, nothing happens and the program runs perfectly. But in a few cases program stops, print_r(session_check) shows nothing and IF sentence does not work.



    An adittional question please.
    Anothe simitar error message was generated:
    Notice: Use of undefined constant CreditCard - assumed 'CreditCard'

    Pointing to this line:
    if ($Payment_Method==CreditCard){

    It has always workking fine. Has it also a syntaxis problem?


    Thanks a lot once again!!!
    Sir_arcturus

  7. #7
    Keeper of the SFL StarLion's Avatar
    Join Date
    Feb 2006
    Location
    Atlanta, GA, USA
    Posts
    3,747
    Mentioned
    64 Post(s)
    Tagged
    0 Thread(s)
    Without seeing your code, I cant offer any further opinion.
    Never grow up. The instant you do, you lose all ability to imagine great things, for fear of reality crashing in.

  8. #8
    Keeper of the SFL StarLion's Avatar
    Join Date
    Feb 2006
    Location
    Atlanta, GA, USA
    Posts
    3,747
    Mentioned
    64 Post(s)
    Tagged
    0 Thread(s)
    The undefined constant is a NOTICE level warning - it doesnt stop operation. PHP has recognized you typed something that looks like a string, or it was expecting a string, but you forgot to put quotes around it, so puts quotes around it for you.

    Strings should be encapsulated in quotes - either single or double. Double quoted strings will interpret special characters in it -
    echo 'This is a $single quote' will output This is a $single quote
    echo "This is a $double quote' will output This is a <whatever the value of $double is> quote

    This shouldnt have caused the issue you're seeing.... the only reason a session should empty itself is if you wait too long (usually 15 minutes) or closed your browser between page loads.
    Never grow up. The instant you do, you lose all ability to imagine great things, for fear of reality crashing in.

  9. #9
    SitePoint Zealot
    Join Date
    May 2011
    Posts
    191
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Hi StarLion,

    I see, thanks for your answer.

    Just to make my issue clear, a session variable is created in one page, and when in another page, this variable is empty. It happens in a very few cases, normally all works well.
    I have a print_r($_SESSION['session_check']); (now with single quotes). When the problem happens, print_r shows nothing, i.e., the session variable is empty, and this makes the program stops running because it needs this variable.
    I have made tons of tests, but I have been unable to reproduce the issue, it has always happened in another people's computers. It happens with both MAC and PC.

    Any idea?

    Best regards,
    Sir_Arcturus

  10. #10
    Keeper of the SFL StarLion's Avatar
    Join Date
    Feb 2006
    Location
    Atlanta, GA, USA
    Posts
    3,747
    Mentioned
    64 Post(s)
    Tagged
    0 Thread(s)
    Being unable to reproduce it makes it rather frustrating to try and find;

    Did the people reporting the issue leave the page? Close their browser? Not move from page A to page B within 15 minutes? Have they got the site open multiple times?
    Never grow up. The instant you do, you lose all ability to imagine great things, for fear of reality crashing in.

  11. #11
    SitePoint Zealot
    Join Date
    May 2011
    Posts
    191
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    According to their answers, they did it normally.

    Making further research, I've found some posts with similar behaviors, pointing to some directory permissions related to session variables:
    http://stackoverflow.com/questions/1...ot-being-saved

    Are you related with this?

    Thanks again,
    Sir_Arcturus

  12. #12
    Keeper of the SFL StarLion's Avatar
    Join Date
    Feb 2006
    Location
    Atlanta, GA, USA
    Posts
    3,747
    Mentioned
    64 Post(s)
    Tagged
    0 Thread(s)
    If that were your issue, the session would -never- be created. You're seeing it being created, which means PHP has all the necessary information/permissions to do so. If you've managed to bombard your site with a supremely large number (Trillions+) of sessions in the span of a short time (< 15 minutes), you might see session collisions, but if that were the case you'd be able to reproduce the error....

    honestly, I'm at a loss.
    Never grow up. The instant you do, you lose all ability to imagine great things, for fear of reality crashing in.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •