php http cookie vars,$HTTP_SESSION_VARS

用户评论:

[#1]

Tugrul [2015-03-09 17:04:49]

Creating New Session

==========================

session_start();$_SESSION["newsession"]=$value;?>

Getting Session

==========================

session_start();$_SESSION["newsession"]=$value;echo$_SESSION["newsession"];?>

Updating Session

==========================

session_start();$_SESSION["newsession"]=$value;$_SESSION["newsession"]=$updatedvalue;?>

Deleting Session

==========================

session_start();$_SESSION["newsession"]=$value;

unset($_SESSION["newsession"]);?>

Reference: http://gencbilgin.net/php-session-kullanimi.html

[#2]

Aswad [2014-11-27 05:01:16]

My session variable dies when it switches on some other page and I can't get it's value on other pages.

$_SESSION["username"]=filter_input(INPUT_POST,"username");

and on the top of every page, I have started the session by using this statement

session_start();

Can anybody help me?  I can't use 1 hidden field in every page just to store the value of 1 attribute. What if I need many variables then using hidden fields for all of them will be a bad approach.

Thanks.

[#3]

Fred [2013-09-07 03:09:40]

Regarding array keys, from http://php.net/manual/en/language.types.array.php, "Strings containing valid integers will be cast to the integer type".

The manual on $_SESSION says "An associative array". So an associative array is expected literally...? It does no one any good if this bit of important info about accessing and storing session data remains buried in manual comments.

Session variables with a single number will not work, however "1a" will work, as will "a1" and even a just single letter, for example "a" will also work.

(Invalid)

1st page

session_start();$_SESSION["1"] ="LOGGED";?>

2nd page

session_start();

echo$_SESSION["1"];?>

---------------------------------------------------------------

(Valid)

1st page

session_start();$_SESSION["a"] ="LOGGED";?>

2nd page

session_start();

echo$_SESSION["a"];?>

---------------------------------------------------------------

(Valid)

1st page

session_start();$_SESSION["a1"] ="LOGGED";?>

2nd page

session_start();

echo$_SESSION["a1"];?>

---------------------------------------------------------------

Example from PHP.net manual on Session variables

$_SESSION[1][1] ='cake';// fails$_SESSION['v1'][2] ='cake';// works?>

Source: http://php.net/manual/en/language.types.array.php

[#4]

opajaap at opajaap dot nl [2013-08-31 11:51:39]

Be carefull with $_SESSION array elements when you have the same name as a normal global.

The following example leads to unpredictable behaviour of the $wppa array elements, some are updated by normal code, some not, it is totally unpredictable what happens.

<?phpglobal $wppa;$wppa= array('elm1'=>'value1','elm2'=>'value2', ....etc...);

if ( !session_id() ) @session_start();

if ( ! isset($_SESSION['wppa'])$_SESSION['wppa'] = array();

if ( ! isset($_SESSION['wppa']['album']) )$_SESSION['wppa']['album'] = array();$_SESSION['wppa']['album'][1234] =1;$wppa['elm1'] ='newvalue1';print_r($_SESSION);?>

This will most likely display Array ( [wppa] => Array ( [album] => Array ( [1234] => 1 ) [elm1] => 'newvalue1' [elm2] => 'value2' ... etc ...

But setting $wppa['elm1'] to another value or referring to it gives unpredictable results, maybe 'value1', or 'newvalue1'.

The most strange behaviour is that not all elements of $wppa[xx] show up as $_SESSION['wppa'][xx].

[#5]

Miller [2013-08-12 20:48:05]

I wrote a little page for controlling/manipulating the session. Obviously, never use this on a production server, but I use it on my localhost to assist me in checking and changing session values on the fly.

Again, it makes use of eval() and exposes the session, so never use this on a web server.

error_reporting(E_ALL);session_start();

if (isset($_POST['session'])) {$session= eval("return{$_POST['session']};");

if (is_array($session)) {$_SESSION=$session;header("Location:{$_SERVER['PHP_SELF']}?saved");

}

else {header("Location:{$_SERVER['PHP_SELF']}?error");

}

}$session=htmlentities(var_export($_SESSION,true));?>

html>

Session Variable Management

textarea { font: 12px Consolas, Monaco, monospace; padding: 2px; border: 1px solid #444444; width: 99%; }

.saved, .error { border: 1px solid #509151; background: #DDF0DD; padding: 2px; }

.error { border-color: #915050; background: #F0DDDD; }

Session Variable Management

The session was saved successfully.

The session variable did not parse correctly.

"><?php  echo $session;?>

[#6]

pike-php at kw dot nl [2011-02-07 06:00:29]

When accidently assigning a unset variable to $_SESSION, like

$_SESSION['foo'] = $bar

while $bar was not defined, I got the following error message:

"Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. "

The errormessage was quite unrelated and got me off-track. The real error was, $bar was not defined.

[#7]

Dave [2009-11-17 14:05:47]

If you deploy php code and cannot control whether register_globals is off, place this snippet in your code to prevent session injections:

[#8]

charlese at cvs dot com dot au [2009-07-04 18:47:26]

I was having troubles with session variables working in some environments and being seriously flaky in others. I was using $_SESSION as an array. It works properly when I used $_SESSION as pointers to arrays. As an example the following code works in some environments and not others.

if (isset($_SESSION['form_convert'])){$form_convert=$_SESSION['form_convert'];

}

}?>

The following works well.

}else{$form_convert= array();$_SESSION['form_convert']=$form_convert;

}?>

[#9]

bohwaz [2008-08-31 14:43:37]

Please note that if you have register_globals to On, global variables associated to $_SESSION variables are references, so this may lead to some weird situations.

session_start();$_SESSION['test'] =42;$test=43;

echo$_SESSION['test'];?>

Load the page, OK it displays 42, reload the page... it displays 43.

The solution is to do this after each time you do a session_start() :

{

foreach ($_SESSIONas$key=>$value)

{

if (isset($GLOBALS[$key]))

unset($GLOBALS[$key]);

}

}?>

[#10]

Steve Clay [2008-08-17 06:28:18]

Unlike a real PHP array, $_SESSION keys at the root level must be valid variable names.

$_SESSION[1][1] ='cake';// fails$_SESSION['v1'][1] ='cake';// works?>

I imagine this is an internal limitation having to do with the legacy function session_register(), where the registered global var must similarly have a valid name.

[#11]

jherry at netcourrier dot com [2008-08-01 16:16:05]

You may have trouble if you use '|' in the key:

$_SESSION["foo|bar"] = "fuzzy";

This does not work for me. I think it's because the serialisation of session object is using this char so the server reset your session when it cannot read it.

To make it work I replaced '|' by '_'.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值