putty Posted April 21, 2008 Share Posted April 21, 2008 I am having trouble keeping a session variable, I have a login script that when authenticated sets $_SESSION['uid'] = $uid; $_SESSION['password'] = $password; I am using “php_value session.auto_start” set in my htaccess.dist file to automatically start my session for every page. The problem is that the session value is not held if I navigate to another page $_SESSION['uid'] is empty. Any suggestions why? Is this something to do with “php_value session.auto_start”? Any help or suggestions of how to debut this problem would be much appreciated, my application goes live at the end of the week and I don’t think my users will appreciate having to type there username and password on every page. PS. I am using AJAX to call my authentication script, if that makes a difference. Thanks in advance, Levi Quote Link to comment Share on other sites More sharing options...
DarkWater Posted April 21, 2008 Share Posted April 21, 2008 I am having trouble keeping a session variable, I have a login script that when authenticated sets $_SESSION['uid'] = $uid; $_SESSION['password'] = $password; I am using “php_value session.auto_start” set in my htaccess.dist file to automatically start my session for every page. The problem is that the session value is not held if I navigate to another page $_SESSION['uid'] is empty. Any suggestions why? Is this something to do with “php_value session.auto_start”? Any help or suggestions of how to debut this problem would be much appreciated, my application goes live at the end of the week and I don’t think my users will appreciate having to type there username and password on every page. PS. I am using AJAX to call my authentication script, if that makes a difference. Thanks in advance, Levi Turn off the auto_start on sessions and just start the sessions yourself. Auto-starting them creates unnecessary overhead on pages that don't require sessions. And on the other page, the one that has no session vars, do this: print_r ($_SESSION); And tell us the output. Quote Link to comment Share on other sites More sharing options...
dptr1988 Posted April 21, 2008 Share Posted April 21, 2008 Yes, the AJAX may be causing the trouble. There was another guy that was having trouble setting a cookie from a PHP script that was called by AJAX. Have you tried accessing this script from a regular webbrowser instead of AJAX? Quote Link to comment Share on other sites More sharing options...
putty Posted April 21, 2008 Author Share Posted April 21, 2008 Ok the problem seems to be with “php_value session.auto_start” if I use session_start(); instead it seems to work, however I get a warning, Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/duguljambula/index.php:1) in /var/www/duguljambula/index.php on line 2 I can hide this warning with @session_start() and everything works. I don’t understand what is causing this warning and it may cause problems down the road. session_start(); is the first thing called in my script, before headers are sent. <?php session_start(); require_once('./config.php'); //Header require_once(_ABSPATH . 'content/layout/header.php'); $PAGE = $_INPUT[2]; if(!$PAGE){ $PAGE = 'index'; } if(file_exists(_ABSPATH . 'content/pages/'. $PAGE . '.php')){ include_once(_ABSPATH . 'content/pages/'. $PAGE . '.php'); }else{ include_once(_ABSPATH . 'content/error/404.htm'); } //footer require_once(_ABSPATH . 'content/layout/footer.php'); ?> I am using RewriteEngine to pass every script via the index page. Eg, “www.mysite.com/map” will call index.php with the page variable ‘map’ however I still get the same warning if I call the script directly .eg, www.mysite.com/index.php?page=map Any thoughts or suggestions? Yes, the AJAX may be causing the trouble. There was another guy that was having trouble setting a cookie from a PHP script that was called by AJAX. Have you tried accessing this script from a regular webbrowser instead of AJAX? It doesn’t seem to make any difference it I authenticate using AJAX or just in the index script. Thanks for the suggestion. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.