PHP Session doen'st get set

Hi ,
I need a simple visitor counter ,
I put this code in my index.php

<?php

if(isset($_SESSION['views'])){
        $_SESSION['views']=$_SESSION['views']+1;
        echo "session is isset : Views=". $_SESSION['views']. "<BR><BR>";
} else {
        $_SESSION['views']=1;
        echo "session is Not set : Views=". $_SESSION['views']. "<BR><BR>";
}
?>

but every-time that I go back browsing that page, I get the message :
session is Not set : Views = 1

Thanks
fparviniAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Mohamed AbowardaConnect With a Mentor Software EngineerCommented:
Report all errors using:
error_reporting(-1);

Open in new window


Create test.php and use the following code:
// File: test.php
error_reporting(-1);
session_write_close();
session_start();
$_SESSION['test'] = 'Session data...';
echo $_SESSION['test'];

Open in new window


The above code should outputs: "Session data..."

If the above code doesn't work, then you probably have configuration problem, perhaps the timeout is set to expire instantly?
0
 
mcnuteCommented:
add session_start(); at the top of your script.

<?php
session_start();
if(isset($_SESSION['views'])){
        $_SESSION['views']=$_SESSION['views']+1;
        echo "session is isset : Views=". $_SESSION['views']. "<BR><BR>";
} else {
        $_SESSION['views']=1;
        echo "session is Not set : Views=". $_SESSION['views']. "<BR><BR>";
}
?>

Open in new window

0
 
fparviniAuthor Commented:
Thanks , I have it (and then removed) , but still doesn't work
I also added some debugging , as follows :


<?php

$a = session_id();
if(empty($a)) session_start();
echo "SID: ".SID."<br>session_id(): ".session_id()."<br>COOKIE: ".$_COOKIE["PHPSESSID"];

if(isset($_SESSION['views'])){
        $_SESSION['views']=$_SESSION['views']+1;
        echo "isset Views=". $_SESSION['views']. "<BR><BR>";
} else {
        $_SESSION['views']=1;
        echo "Not set Views=". $_SESSION['views']. "<BR><BR>";
}

?>

but everytime I get different ids

SID: PHPSESSID=clfrk1b0heon60e23lsnrie613
session_id(): clfrk1b0heon60e23lsnrie613
COOKIE: Not set Views=1


SID: PHPSESSID=j2qai0obf52ch6c8cfq4bh23s2
session_id(): j2qai0obf52ch6c8cfq4bh23s2
COOKIE: Not set Views=1
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
mcnuteCommented:
If you do a var_dump($_SESSION); what does it say? Put it preferably on the end fo your script.
0
 
fparviniAuthor Commented:
First time visiting page :

SID: PHPSESSID=ogusctqkfqqirtfefjojko2vt7
session_id(): ogusctqkfqqirtfefjojko2vt7
COOKIE: Not set Views=1

array(1) { ["views"]=> int(1) }


second time :
SID: PHPSESSID=08r9t5c91ne0jpd9mlkgmrv3j3
session_id(): 08r9t5c91ne0jpd9mlkgmrv3j3
COOKIE: Not set Views=1

array(1) { ["views"]=> int(1) }
0
 
Lukasz ChmielewskiCommented:
You have to set seeeion start at the top

<?php
session_start();

mcnute's example is working, try refreshing the page few times.
A possible reason for your issue would be revealed when setting
error_reporting(E_ALL);
at the top also.
0
 
mcnuteCommented:
Ahahaaa, now I get where the flaw is: You cannot count visitors with storing the number of visitors in a session variable. You can start with this project. Simple and easy:

http://code.google.com/p/simphp/
0
 
Ray PaseurCommented:
Let's run this test to see if your session handler is working correctly.  Install this script and run it a few times.  Click the appropriate places.  If the "cheese" counter increments predictably your session works and the problem lies elsewhere in the code.

<?php // RAY_session_test.php
error_reporting(E_ALL);


// DEMONSTRATE HOW PHP SESSIONS WORK
// MAN PAGE HERE: http://php.net/manual/en/function.session-start.php


// START THE SESSION (DO THIS FIRST, UNCONDITIONALLY, IN EVERY PHP SCRIPT ON EVERY PAGE)
session_start();

// INITIALIZE THE SESSION ARRAY TO SET A DEFAULT VALUE
if (empty($_SESSION["cheese"])) $_SESSION["cheese"] = 1;

// SEE IF THE CORRECT SUBMIT BUTTON WAS CLICKED
if (isset($_POST['fred']))
{
    // ADD ONE TO THE CHEESE
    $_SESSION['cheese']++;
}

// RECOVER THE CURRENT VALUE FROM THE SESSION ARRAY
$cheese = $_SESSION['cheese'];


// END OF PROCESSING SCRIPT - CREATE THE FORM USING HEREDOC NOTATION
$form = <<<ENDFORM
<html>
<head>
<title>Session Test</title>
</head>
<body>
Currently, SESSION["cheese"] contains: $cheese<br/>
<form method="post">
<input type="submit" value="increment this cheese" name="fred"  />
<input type="submit" value="leave my cheese alone" name="john" />
</form>
</body>
</html>
ENDFORM;

echo $form;

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.