JJJollyjim
JJJollyjim

Reputation: 6227

Php sessions aren't working

I am new to php, and very new to sessions, so I have no idea what I am doing wrong. I followed the tutorial on tizag, and put this code on my site:

<?php

session_start();

echo SID . "<br><br>";

if(isset($_SESSION['views'])) {
    $_SESSION['views'] = $_SESSION['views'] + 1;
} else {
    $_SESSION['views'] = 1;
    echo "views = ". $_SESSION['views']; 
}

?>

The SID changes whenever I refresh, and the number does not count up.

Update: Url: http://121.73.150.105/PIA/

FIXED BY: Putting session_start() before my doctype, title etc.

Upvotes: 1

Views: 2089

Answers (6)

AmirModiri
AmirModiri

Reputation: 775

ini_set("session.use_cookies",1);
ini_set("session.use_only_cookies",1);

this two parameter must set to gether if you want it work

Upvotes: 0

AmirModiri
AmirModiri

Reputation: 775

in your code if you cant see session ID you can write session_id() in place of SID.

Upvotes: 0

bertzzie
bertzzie

Reputation: 3568

You don't output the $_SESSION['view'] after the if statement. I think that's why it doesn't change.

Try:

<?php

session_start();

echo SID . "<br><br>";

if(isset($_SESSION['views'])) {
    $_SESSION['views'] = $_SESSION['views'] + 1;
} else {
    $_SESSION['views'] = 1;
}

echo "views = ". $_SESSION['views'];     

?>

So you always output the new $_SESSION['views'] value.

EDIT: I think the right answer is that the session is not set. But I'm curious, how can the code always outputs "view = 1"? Can I open a new question referencing this question or just discuss it here?

Upvotes: 0

dqhendricks
dqhendricks

Reputation: 19251

either you are outputting something to the browser before calling session start, or you have cookies disabled.

Upvotes: 0

Your PHP setup may have been configured to not save sessions in cookies.

To verify if this is the case, you can take a look at session.use_cookies in your php.ini, or using ini_get, like so:

<?php echo ini_get('session.use-cookies'); ?>

You can correct it at runtime, as well, using ini_set, like so:

<?php ini_set('session.use-cookies', '1'); ?>

Upvotes: 0

Poelinca Dorin
Poelinca Dorin

Reputation: 9703

Are cookies enabled in you're browser ? phpsessid is stored as a cookie , you can set different parameters for it , one that could be usefull in you're case could be session_get_cookie_params() , and see if everithing is oki with the session cookie params .

If anything is wrong like expiration date you can set the params with session_set_cookie_params()

Upvotes: 1

Related Questions