Session variables.. [message #177903] |
Thu, 26 April 2012 09:34 |
xs2karan3190
Messages: 4 Registered: April 2012
Karma: 0
|
Junior Member |
|
|
I know there is some problem regarding session variables but I am not able to get what it is.. Kindly help.
my code is in 2 files...
test0.php--->
<html>
<body>
<?php
session_start();
$_SESSION['id']="1";
$_SESSION['psid']="admin";
echo $_SESSION['id']." ".$_SESSION['psid'];
?>
<form method="get" action="test1.php">
<div id="id" name="name">Hello mr.</div>
<input type="submit" name="click" />
</form>
</body>
</html>
test1.php--->
<html>
<body>
<?php
session_start();
echo $_SESSION['id']." ".$_SESSION['psid'];
$a=$_GET['id'];
echo $a;
?>
<br/>
<a href=test0.php">Back</a>
</body>
</html>
--------------------------------------------------------------------------- -----
At start I open the test0.php on my localhost and click on submit button,test1.php loads perfectly.But when I click on back buton in test1.php the url is "localhost\test0.php%22"...
and error msg is access forbidden..
where does this extra %22 come.???
PLZ HELP..
|
|
|
Re: Session variables.. [message #177905 is a reply to message #177903] |
Thu, 26 April 2012 09:39 |
M. Strobel
Messages: 386 Registered: December 2011
Karma: 0
|
Senior Member |
|
|
Am 26.04.2012 11:34, schrieb xs2karan3190(at)gmail(dot)com:
> I know there is some problem regarding session variables but I am not able to get what it is.. Kindly help.
> my code is in 2 files...
>
>
> test0.php--->
>
> <html>
> <body>
> <?php
>
> session_start();
> $_SESSION['id']="1";
> $_SESSION['psid']="admin";
>
> echo $_SESSION['id']." ".$_SESSION['psid'];
>
> ?>
> <form method="get" action="test1.php">
> <div id="id" name="name">Hello mr.</div>
>
> <input type="submit" name="click" />
> </form>
> </body>
> </html>
>
>
>
> test1.php--->
>
> <html>
> <body>
> <?php
> session_start();
> echo $_SESSION['id']." ".$_SESSION['psid'];
> $a=$_GET['id'];
> echo $a;
> ?>
> <br/>
> <a href=test0.php">Back</a>
If you want us to find errors, you must show your code EXACTLY how it is.
You have an unbalanced quote here. It should give you an error message.
/Str.
|
|
|
Re: Session variables.. [message #177909 is a reply to message #177903] |
Thu, 26 April 2012 12:10 |
Olaf S.
Messages: 10 Registered: December 2011
Karma: 0
|
Junior Member |
|
|
Am 26.04.2012 11:34, schrieb xs2karan3190(at)gmail(dot)com:
> I know there is some problem regarding session variables but I am not able to get what it is.. Kindly help.
> my code is in 2 files...
>
>
> test0.php--->
>
> <html>
> <body>
^^^^^There is an OUTPUT.
So session_start does not work.
correct:
<?PHP
session_start( .....
?>
<html>
etc
|
|
|
Re: Session variables.. [message #177910 is a reply to message #177903] |
Thu, 26 April 2012 12:36 |
Scott Johnson
Messages: 196 Registered: January 2012
Karma: 0
|
Senior Member |
|
|
On 4/26/2012 2:34 AM, xs2karan3190(at)gmail(dot)com wrote:
> I know there is some problem regarding session variables but I am not able to get what it is.. Kindly help.
> my code is in 2 files...
>
>
> test0.php--->
>
> <html>
> <body>
> <?php
>
> session_start();
> $_SESSION['id']="1";
> $_SESSION['psid']="admin";
>
> echo $_SESSION['id']." ".$_SESSION['psid'];
>
> ?>
> <form method="get" action="test1.php">
> <div id="id" name="name">Hello mr.</div>
>
> <input type="submit" name="click" />
> </form>
> </body>
> </html>
>
>
>
> test1.php--->
>
> <html>
> <body>
> <?php
> session_start();
> echo $_SESSION['id']." ".$_SESSION['psid'];
> $a=$_GET['id'];
> echo $a;
> ?>
> <br/>
> <a href=test0.php">Back</a>
> </body>
> </html>
> --------------------------------------------------------------------------- -----
>
> At start I open the test0.php on my localhost and click on submit button,test1.php loads perfectly.But when I click on back buton in test1.php the url is "localhost\test0.php%22"...
> and error msg is access forbidden..
> where does this extra %22 come.???
>
> PLZ HELP..
Make sure that:
1. Your <?php tag is the first entry on the file(page), not even a blank
line or space, or a header will be created and sent to the server prior
to session_start is called and will barf.
2. Make sure that session_start in the <?php tags is called before any
out put such as echo, print, header etc....
3. Sometimes it is good when debugging $_SESSION to check the entire
contents to ensure that what you want is not getting overwritten by a
current script. Use var_export($_SESSION). or
$session = var_export($_SESSION, true);
and then read out $session elsewhere if needed such as a mail() call if
you are testing a script not meant for display.
|
|
|
Re: Session variables.. [message #177911 is a reply to message #177909] |
Thu, 26 April 2012 13:12 |
M. Strobel
Messages: 386 Registered: December 2011
Karma: 0
|
Senior Member |
|
|
Am 26.04.2012 14:10, schrieb Olaf S.:
> Am 26.04.2012 11:34, schrieb xs2karan3190(at)gmail(dot)com:
>> I know there is some problem regarding session variables but I am not able to get
>> what it is.. Kindly help.
>> my code is in 2 files...
>>
>>
>> test0.php--->
>>
>> <html>
>> <body>
> ^^^^^There is an OUTPUT.
> So session_start does not work.
>
>
> correct:
> <?PHP
> session_start( .....
>
> ?>
> <html>
> etc
The problem of output before session_start():
It is very handy to set "output_buffering = 4096" or so in your php.ini, and all
these problems are gone.
If you have to output binary data you can even clear the buffer from unwanted stuff
before sending data.
/Str.
|
|
|
Re: Session variables.. [message #177915 is a reply to message #177911] |
Fri, 27 April 2012 00:35 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 4/26/2012 9:12 AM, M. Strobel wrote:
> Am 26.04.2012 14:10, schrieb Olaf S.:
>> Am 26.04.2012 11:34, schrieb xs2karan3190(at)gmail(dot)com:
>>> I know there is some problem regarding session variables but I am not able to get
>>> what it is.. Kindly help.
>>> my code is in 2 files...
>>>
>>>
>>> test0.php--->
>>>
>>> <html>
>>> <body>
>> ^^^^^There is an OUTPUT.
>> So session_start does not work.
>>
>>
>> correct:
>> <?PHP
>> session_start( .....
>>
>> ?>
>> <html>
>> etc
>
> The problem of output before session_start():
>
> It is very handy to set "output_buffering = 4096" or so in your php.ini, and all
> these problems are gone.
>
> If you have to output binary data you can even clear the buffer from unwanted stuff
> before sending data.
>
> /Str.
Bad idea. It may or may not work if your host changes their settings,
for instance. It also adds unnecessary overhead and may hide errors in
your code (error messages can be buffered, also).
Much better is to just structure your code properly - i.e. ensure
session_start() is called before any output.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|
Re: Session variables.. [message #177916 is a reply to message #177903] |
Fri, 27 April 2012 00:37 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 4/26/2012 5:34 AM, xs2karan3190(at)gmail(dot)com wrote:
> I know there is some problem regarding session variables but I am not able to get what it is.. Kindly help.
> my code is in 2 files...
>
>
> test0.php--->
>
> <html>
> <body>
> <?php
>
> session_start();
> $_SESSION['id']="1";
> $_SESSION['psid']="admin";
>
> echo $_SESSION['id']." ".$_SESSION['psid'];
>
> ?>
> <form method="get" action="test1.php">
> <div id="id" name="name">Hello mr.</div>
>
> <input type="submit" name="click" />
> </form>
> </body>
> </html>
>
>
>
> test1.php--->
>
> <html>
> <body>
> <?php
> session_start();
> echo $_SESSION['id']." ".$_SESSION['psid'];
> $a=$_GET['id'];
> echo $a;
> ?>
> <br/>
> <a href=test0.php">Back</a>
> </body>
> </html>
> --------------------------------------------------------------------------- -----
>
> At start I open the test0.php on my localhost and click on submit button,test1.php loads perfectly.But when I click on back buton in test1.php the url is "localhost\test0.php%22"...
> and error msg is access forbidden..
> where does this extra %22 come.???
>
> PLZ HELP..
In addition to what the others have said, your php.ini file on your
development system should ALWAYS have:
display_errors = on
error_reporting = E_ALL
If you had these you would have received an error message telling you
(pretty much) exactly what the error was.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|
Re: Session variables.. [message #177917 is a reply to message #177905] |
Fri, 27 April 2012 06:33 |
xs2karan3190
Messages: 4 Registered: April 2012
Karma: 0
|
Junior Member |
|
|
Thanks.. Silly me , The unbalanced quote was culprit..
But another error crept out while the former one was solved...
PLZ take a look and Provide for a solutionn
code is....-->
<?php
session_start();
$_SESSION['psid']=111;
echo $_SESSION['psid'];
$psid=999;
echo " ".$_SESSION['psid'];
?>
the output is-->1111 1111
but if you reload the page 2nd time then output changes to---> "1111 9999"
and if you write session_destroy() at the end then the output remains unchanged..
how come local variable psid is overwritten over $_SESSION['psid'].??
I have manually configured apache and using PHP as an apache module(not using any package like xampp,wamp etc)...
|
|
|
Re: Session variables.. [message #177918 is a reply to message #177905] |
Fri, 27 April 2012 06:36 |
xs2karan3190
Messages: 4 Registered: April 2012
Karma: 0
|
Junior Member |
|
|
Thanks.. Silly me , The unbalanced quote was culprit..
But another error crept out while the former one was solved...
PLZ take a look and Provide for a solutionn
code is....-->
<?php
session_start();
$_SESSION['psid']=1111;
echo $_SESSION['psid'];
$psid=9999;
echo " ".$_SESSION['psid'];
?>
the output is-->1111 1111
but if you reload the page 2nd time then output changes to---> "1111 9999"
and if you write session_destroy() at the end then the output remains unchanged..
how come local variable psid is overwritten over $_SESSION['psid'].??
I have manually configured apache and using PHP as an apache module(not using any package like xampp,wamp etc)...
|
|
|
Re: Session variables.. [message #177921 is a reply to message #177918] |
Fri, 27 April 2012 08:52 |
M. Strobel
Messages: 386 Registered: December 2011
Karma: 0
|
Senior Member |
|
|
Am 27.04.2012 08:36, schrieb karan kumar:
> PLZ take a look and Provide for a solutionn
>
>
> code is....-->
>
>
> <?php
> session_start();
> $_SESSION['psid']=1111;
> echo $_SESSION['psid'];
> $psid=9999;
> echo " ".$_SESSION['psid'];
> ?>
>
> the output is-->1111 1111
>
> but if you reload the page 2nd time then output changes to---> "1111 9999"
>
> and if you write session_destroy() at the end then the output remains unchanged..
> how come local variable psid is overwritten over $_SESSION['psid'].??
to session_destroy():
you will have your session variables until the end of script. On the next request
they will be gone. The session id remains the same, but the session data is gone.
I find it a bit strange, this function cleans up after you.
/Str.
|
|
|
Re: Session variables.. [message #177922 is a reply to message #177917] |
Fri, 27 April 2012 08:59 |
M. Strobel
Messages: 386 Registered: December 2011
Karma: 0
|
Senior Member |
|
|
Am 27.04.2012 08:33, schrieb karan kumar:
> <?php
> session_start();
> $_SESSION['psid']=111;
> echo $_SESSION['psid'];
> $psid=999;
> echo " ".$_SESSION['psid'];
> ?>
>
> the output is-->1111 1111
>
> but if you reload the page 2nd time then output changes to---> "1111 9999"
>
> and if you write session_destroy() at the end then the output remains unchanged..
> how come local variable psid is overwritten over $_SESSION['psid'].??
The output is unchanged because you always set $_SESSION['psid']. You must first test
if it is set.
The change to "1111 9999" does not happen with the shown code.
/Str.
|
|
|
Re: Session variables.. [message #177923 is a reply to message #177917] |
Fri, 27 April 2012 10:30 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 4/27/2012 2:33 AM, karan kumar wrote:
> Thanks.. Silly me , The unbalanced quote was culprit..
>
> But another error crept out while the former one was solved...
>
> PLZ take a look and Provide for a solutionn
>
>
> code is....-->
>
>
> <?php
> session_start();
> $_SESSION['psid']=111;
> echo $_SESSION['psid'];
> $psid=999;
> echo " ".$_SESSION['psid'];
> ?>
>
> the output is-->1111 1111
>
> but if you reload the page 2nd time then output changes to---> "1111 9999"
>
> and if you write session_destroy() at the end then the output remains unchanged..
> how come local variable psid is overwritten over $_SESSION['psid'].??
>
In this example, $psid is not being overwritten by $_SESSION['psid'].
That's why you get the 1111 twice.
According to your code, it should not happen the second time either. Is
there any chance you've got register_globals on in your php.ini file?
If so, you should turn it off immediately. It's a huge security problem
and a "feature" which will be removed in PHP 6.
But it still doesn't explain why you get two different outputs.
BTW, the output is incorrect (according to your code, it should be '111
111'). Please be careful when copying your code as minor errors can
cause large differences in the results.
> I have manually configured apache and using PHP as an apache module(not using any package like xampp,wamp etc)...
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|
Re: Session variables.. [message #177967 is a reply to message #177923] |
Thu, 03 May 2012 04:19 |
xs2karan3190
Messages: 4 Registered: April 2012
Karma: 0
|
Junior Member |
|
|
I turned the register global=off and now the code works correctly..Thanks a ton.
But could you explain as to how it gave 2 different outputs the first time..??
I tried searching but couldn't find an answer.
|
|
|
Re: Session variables.. [message #177968 is a reply to message #177967] |
Thu, 03 May 2012 12:11 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 5/3/2012 12:19 AM, karan kumar wrote:
> I turned the register global=off and now the code works correctly..Thanks a ton.
>
> But could you explain as to how it gave 2 different outputs the first time..??
>
> I tried searching but couldn't find an answer.
No, it makes no sense, unless there was something left over in your
browser's cache.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|