Jump to content

PHP operators in $_SESSIONS


empec

Recommended Posts

i'm trying to develop a deeper understanding of sessions, and I found this article on php.net regarding sessions with the following script;

<?php
    // Get the private context
    session_name('Private');
    session_start();
    $private_id = session_id();
    $b = $_SESSION['pr_key'];
    session_write_close();
   
    // Get the global context
    session_name('Global');
    session_id('TEST');
    session_start();
   
    $a = $_SESSION['key'];
    session_write_close();

    // Work & modify the global & private context (be ware of changing the global context!) 
?> 
<html>
    <body>
        <h1>Test 2: Global Count is: <?=++$a?></h1>
        <h1>Test 2: Your Count is: <?=++$b?></h1>
        <h1>Private ID is <?=$private_id?></h1>
        <h1>Gloabl ID is <?=session_id()?></h1>
        <pre>
        <?php print_r($_SESSION); ?> 
        </pre>
    </body>
</html>
<?php
    // Store it back
    session_name('Private');
    session_id($private_id);
    session_start();
    $_SESSION['pr_key'] = $b;
    session_write_close();

    session_name('Global');
    session_id('TEST');
    session_start();
    $_SESSION['key']=$a;
    session_write_close(); 
?> 

[EDIT BY danbrown AT php DOT net: Contains a bugfix provided by (lveillette AT silexmultimedia DOT com) on 19-NOV-09.]

I do not understand line 21 and 22.

<h1>Test 2: Global Count is:<?=++$a?></h1>

If I change this to;

        <h1>Test 2: Global Count is:<?php echo =++$a; ?></h1>
or
        <h1>Test 2: Global Count is:<?php =++$a ?></h1>

I would get a parse error, unexpected "=" in line 21.

Can anyone explain why this is?

* Why is it being echoed
* Why can I not use echo in this case
* Why does the code not start with <?php ?
* What does line 21 even mean? =++$a?

 

 

 

Thanks in advance guys!

Edited by empec
Link to comment
Share on other sites

 

 

Can anyone explain why this is?

<?=   is shorthand syntax for <?php echo  

There is also another form of short tag which is  <?  this is shorthand syntax for the full open tag  <?php

 

When using short tag syntax be-careful as these are controlled by a PHP directive called  short_open_tag  . Not all server configurations has this directive enabled. If this directive is not enabled on a server then your PHP code will be completely ignored and will be output to the browser!

 

NOTE: As of PHP 5.4+  <?=  is always available regardless of the short_open_tag directive status. For older versions of PHP the above warning still applies!

 

I only recommend using the short tags in template files only. For all other cases always use the full php tags syntax.

 

As for  ++$a  it is shorthand syntax for  $a = $a + 1;

Edited by Ch0cu3r
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.