Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

PHP Session doen'st get set

Posted on 2013-02-01
8
Medium Priority
?
248 Views
Last Modified: 2013-10-12
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
0
Comment
Question by:fparvini
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
8 Comments
 
LVL 11

Expert Comment

by:mcnute
ID: 38844528
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
 

Author Comment

by:fparvini
ID: 38844582
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
 
LVL 11

Expert Comment

by:mcnute
ID: 38844592
If you do a var_dump($_SESSION); what does it say? Put it preferably on the end fo your script.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

Author Comment

by:fparvini
ID: 38844635
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
 
LVL 27

Expert Comment

by:Lukasz Chmielewski
ID: 38844649
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
 
LVL 11

Expert Comment

by:mcnute
ID: 38844656
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
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 38844664
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
 
LVL 12

Accepted Solution

by:
Mohamed Abowarda earned 600 total points
ID: 38846495
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

Featured Post

URL rewriting in AWS CloudFront

A quick how-to guide to implement with a Lambda function!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

These days socially coordinated efforts have turned into a critical requirement for enterprises.
This article discusses how to implement server side field validation and display customized error messages to the client.
Learn the basics of if, else, and elif statements in Python 2.7. Use "if" statements to test a specified condition.: The structure of an if statement is as follows: (CODE) Use "else" statements to allow the execution of an alternative, if the …
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question