473,394 Members | 1,951 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,394 software developers and data experts.

use SESSION variable?

Hi,

If ever a newbie wants to know how much he has to learn yet, he only has
to look here<g>!! ANYway:

PHP 5.2.5; XP Pro SP2+, local Apache Server

My actual question is: How do I get a POST variable into a session
variable so I can use it in any other page I want to use it in?
Apparently posted variables are only available in the Form page in
the file called by Action=, right? But I'd like to use it in other
places.

By way of example, if this makes any sense:

I have a form.php that posts data to a-file.php. I would also like to
use that same var dat in files other than a-file.php though.
Since however it's only available to a-file.php because that's where
the form's action= sends it, I logically then cannot get the same
variable for z-file.php, right?

So the logical way to get it accessible for other files then would be to
put it into a session variable, right? HOW the heck do I do that???

In this particular case, to keep it simple, I've been using "age" for
the variable. I want to 'input' "age" in 1.php, and use it in both
2.php and 3.php.
===========
In 1.php I have:
<?php
session_start();
$_SESSION['age'] = $age;
?>
<form method="post" action="2.php"
<input type="text" name="age"
<input type="Submit" value="Continue">
</form>
------------------
Runs OK. Say the entered age was "66".
==========

In 2.php I have:
<?php
session_start(); // needed or $age fails completely.
$age = $_POST['age'];
echo '$age is ' . $age;
echo '<br>$POST is ' . $_POST['age'];
echo '<br>session age is ' . $_SESSION['age'];
echo "<br><br><HR>";
?>
<br>
<a href="3.php">Go to 3.php and run same code</a>
---------------------
Outputs:
$age is 66
$POST is 66
session age is

Go to 3.php and run same code

And throws this warning:

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. You can disable this functionality and this
warning by setting session.bug_compat_42 or session.bug_compat_warn to
off, respectively. in Unknown on line 0

I prefer not to mod the .ini; I'd rather know the WHY.
============
and in 3.php I Have:
<?php
session_start();
$age = $_SESSION['age'];
echo '$age is ' . $age;
echo '<br>$POST is ' . $_POST['age'];
echo '<br>session age is ' . $_SESSION['age'];
?>
-----------------------
Clicking the link in 2.php results in this output:
$age is 66
$POST is
session age is 66
BUT there seems to be NO WAY I can find to get "age" properly into a
session variable in 2.php.
The code here is the closest I can come to getting it working; which
isn't very desirable, especially considering the warning, which is new
to me and no amount of research seems to explain it well to me so I can
understand WHY it throws that error.
=============

It's doing approximately what I want, but ... it doesn't feel right, and
I can't do anything to get rid of that Warning and still keep the code
working. Thus, I think I need to get 2.php working correctly.
Any and all relevant comments much appreciated by this newbie,

TIA,
Twayne

Jun 29 '08 #1
5 2180
Twayne wrote:
Hi,

If ever a newbie wants to know how much he has to learn yet, he only has
to look here<g>!! ANYway:

PHP 5.2.5; XP Pro SP2+, local Apache Server

My actual question is: How do I get a POST variable into a session
variable so I can use it in any other page I want to use it in?
Apparently posted variables are only available in the Form page in
the file called by Action=, right? But I'd like to use it in other
places.

By way of example, if this makes any sense:

I have a form.php that posts data to a-file.php. I would also like to
use that same var dat in files other than a-file.php though.
Since however it's only available to a-file.php because that's where
the form's action= sends it, I logically then cannot get the same
variable for z-file.php, right?

So the logical way to get it accessible for other files then would be to
put it into a session variable, right? HOW the heck do I do that???

In this particular case, to keep it simple, I've been using "age" for
the variable. I want to 'input' "age" in 1.php, and use it in both
2.php and 3.php.
===========
In 1.php I have:
<?php
session_start();
$_SESSION['age'] = $age;
?>
<form method="post" action="2.php"
<input type="text" name="age"
<input type="Submit" value="Continue">
</form>
------------------
Runs OK. Say the entered age was "66".
==========

In 2.php I have:
<?php
session_start(); // needed or $age fails completely.
$age = $_POST['age'];
echo '$age is ' . $age;
echo '<br>$POST is ' . $_POST['age'];
echo '<br>session age is ' . $_SESSION['age'];
echo "<br><br><HR>";
?>
<br>
<a href="3.php">Go to 3.php and run same code</a>
---------------------
Outputs:
$age is 66
$POST is 66
session age is

Go to 3.php and run same code

And throws this warning:

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. You can disable this functionality and this
warning by setting session.bug_compat_42 or session.bug_compat_warn to
off, respectively. in Unknown on line 0

I prefer not to mod the .ini; I'd rather know the WHY.
============
and in 3.php I Have:
<?php
session_start();
$age = $_SESSION['age'];
echo '$age is ' . $age;
echo '<br>$POST is ' . $_POST['age'];
echo '<br>session age is ' . $_SESSION['age'];
?>
-----------------------
Clicking the link in 2.php results in this output:
$age is 66
$POST is
session age is 66
BUT there seems to be NO WAY I can find to get "age" properly into a
session variable in 2.php.
The code here is the closest I can come to getting it working; which
isn't very desirable, especially considering the warning, which is new
to me and no amount of research seems to explain it well to me so I can
understand WHY it throws that error.
=============

It's doing approximately what I want, but ... it doesn't feel right, and
I can't do anything to get rid of that Warning and still keep the code
working. Thus, I think I need to get 2.php working correctly.
Any and all relevant comments much appreciated by this newbie,

TIA,
Twayne
You never set $_SESSION['age']. You need something like:

$_SESSION['age'] = $_POST['age'];

Of course, like any user data, you should validate/sanitize it before
using it. The most logical place is before you put in the $_SESSION
variable.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Jun 29 '08 #2
"Twayne" <no****@devnull.spamcop.netwrote:
>
My actual question is: How do I get a POST variable into a session
variable so I can use it in any other page I want to use it in?
Apparently posted variables are only available in the Form page in
the file called by Action=, right? But I'd like to use it in other
places.
There are several ways to do this. A $_SESSION variable is one way, and in
many cases that's the most convenient. However, if you have a bunch of
pages with <form>s that succeed one another, it's also possible to pass
this kind of information as <input type=hiddenvariables without the
overhead of a session.
--
Tim Roberts, ti**@probo.com
Providenza & Boekelheide, Inc.
Jun 30 '08 #3
..oO(Tim Roberts)
>"Twayne" <no****@devnull.spamcop.netwrote:
>>
My actual question is: How do I get a POST variable into a session
variable so I can use it in any other page I want to use it in?
Apparently posted variables are only available in the Form page in
the file called by Action=, right? But I'd like to use it in other
places.

There are several ways to do this. A $_SESSION variable is one way, and in
many cases that's the most convenient. However, if you have a bunch of
pages with <form>s that succeed one another, it's also possible to pass
this kind of information as <input type=hiddenvariables without the
overhead of a session.
Bad idea. Sessions are made for this. It's the hidden fields that cause
the real overhead on the network and the server:

* The same data has to be transferred back and forth between the server
and the client multiple times, wasting bandwidth.
* You have to re-validate the same data over and over again on every
single form submission, because even hidden fields can be manipulated.

With a session you do it all just once: you receive the data, validate
it, store it in the session and that's it. The overhead caused by the
session handler is not really an issue.

Micha
Jun 30 '08 #4
..oO(sheldonlg)
>Tim Roberts wrote:
>>
There are several ways to do this. A $_SESSION variable is one way, and in
many cases that's the most convenient. However, if you have a bunch of
pages with <form>s that succeed one another, it's also possible to pass
this kind of information as <input type=hiddenvariables without the
overhead of a session.

To expand in what Tim wrote, here is what you would do in 2.php

<input type="hidden" value="<?php print $_POST['age']; ?>" >
Such improper use of form values is one of the main reasons for XSS
attacks. You almost always want to use htmlspecialchars() before the
output.

Micha
Jun 30 '08 #5
.oO(Tim Roberts)
>
>"Twayne" <no****@devnull.spamcop.netwrote:
>>>
My actual question is: How do I get a POST variable into a session
variable so I can use it in any other page I want to use it in?
Apparently posted variables are only available in the Form page in
the file called by Action=, right? But I'd like to use it in other
places.

There are several ways to do this. A $_SESSION variable is one way,
and in many cases that's the most convenient. However, if you have
a bunch of pages with <form>s that succeed one another, it's also
possible to pass this kind of information as <input type=hidden>
variables without the overhead of a session.

Bad idea. Sessions are made for this. It's the hidden fields that
cause the real overhead on the network and the server:

* The same data has to be transferred back and forth between the
server and the client multiple times, wasting bandwidth.
* You have to re-validate the same data over and over again on every
single form submission, because even hidden fields can be
manipulated.

With a session you do it all just once: you receive the data, validate
it, store it in the session and that's it. The overhead caused by the
session handler is not really an issue.

Micha
Hmm, recommended or not, that was at least educational. The validation
issue is what convinced me, I think.

I finally got my head around sessions and they aren't so confusing
now. Funny how these danged newfangled machines only do what you tell
them to do, not what you meant to do!! :-)

Thanks to all,

Twayne
Jul 2 '08 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

11
by: doltharz | last post by:
Please Help me i'm doing something i though was to be REALLY EASY but it drives me crazy The complete code is at the end of the email (i mean newsgroup article), i always use Option...
1
by: Ann Leland | last post by:
I have been using session variables to pass a user name from one ASP page to another inside framesets for 9 months and it stopped working this week. I have made no code changes but there was a...
2
by: Eric | last post by:
Hi, I've a problem with trying to retrieve a session variable in an include file. Basically, the main asp creates a session variable: <% Session("var1") = "Hello" %> And then when I click...
4
by: VB Programmer | last post by:
If I have a variable I want to share in my application what is the difference between just declaring a variable (Dim strMyVar as String) and using a session variable (Session("strMyVar"))? When...
9
by: William LaMartin | last post by:
I have a problem, mentioned here before, of Session and Application variables disappearing at one site but not at others or on my development computer. The problem is illustrated by an example...
9
by: Greg Linwood | last post by:
I'm having difficulty understanding Session state in ASP.Net. It's almost embarrassing asking this as I've been using ASP since it was first released & it really shouldn't be this hard to use -...
4
by: T Ralya | last post by:
I am told that ASP.NET controls the session ID and session variables, but that does not fit my symptoms. I am posting here as directed. I'm hoping that someone can at least recommend something to...
3
by: Alan Wang | last post by:
Hi there, Once my application gets complicated and complicated. I found it's really hard to keep track of Session value I am using in my asp.net application. I am just wondering if anyone have...
4
by: Don Miller | last post by:
I am using a Session variable to hold a class object between ASP.NET pages (in VB). In my constructor I check to see if the Session variable exists, and if it doesn't, I create one and populate it...
17
by: Control Freq | last post by:
Hi, Not sure if this is the right NG for this, but, is there a convention for the variable names of a Session variable? I am using .NET 2.0 in C#. I am new to all this .NET stuff, So, any...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.