Avatar of wilko1000
 asked on

PHP $_SESSION passing variable to another page-help with syntax


I would like to store a userID into $_SESSION then reference the $_SESSION in another page. I get how the Session function supposed to work but need help with the syntax please?

I have  a table called users which stores uid, username and password

I have then started the session function like this


class DB_Functions {

Then tried to use the $_SESSION here:

     * Get user by email and password
    public function getUserByEmailAndPassword($email, $password) {
        $result = mysql_query("SELECT * FROM users WHERE email = '$email'") or die(mysql_error());
        // check for result
        $no_of_rows = mysql_num_rows($result);
        if ($no_of_rows > 0) {
            $_SESSION[email] =$email
            $result = mysql_fetch_array($result);
            $salt = $result['salt'];
            $encrypted_password = $result['encrypted_password'];
            $hash = $this->checkhashSSHA($salt, $password);
            // check for password equality
            if ($encrypted_password == $hash) {
                // user authentication details are correct
                return $result;
        } else {
            // user not found
            return false;

Then called it in the next page as below:


$result = mysql_query("SELECT users.uid, users.name
FROM users
WHERE EXISTS (SELECT 0 FROM available A1, available A2
WHERE  users.uid <> $_SESSION[email])") or die(mysql_error());

But got syntax error

How do i store the ID from the user returned in the 1st query then pass to the second query correctly?

Avatar of undefined
Last Comment
Mark Brady

8/22/2022 - Mon
Ray Paseur

Couple of things.  First, you need to get off MySQL as soon as possible.  PHP is removing support for the MySQL extension.  This article tells why and what you must do to keep your scripts running.

Second, the PHP session is really easy to use correctly, and many people over-think it.  This article tells what you want to do.

Looking at this code snippet, it appears that it would fail, since you cannot have function calls outside of class methods.  Session_start() does not belong here.
class DB_Functions {

Open in new window

You may have had some of the issues because of the use of quotation marks in PHP.  They are required in some instances, and using them correctly is an important part of the language.  I'm not sure about that, because PHP has many installation options that can impinge on the use of quotes, but you might want to check the code over to make sure it's coded correctly to do what you want.

If you can show us where you got the syntax error and what the error message said, we can probably help with that.
Dave Baldwin

View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.

Hi thanks for the feedback

My fault typo

Thats how it looks.

Anyway i still do not know the 'Syntax' articles are great but no examples.
My biggest concern is not be able to use $_SESSION within functions and if statements (with all due respect no mention of this in the articles ).

As my DB functions script is constructed using functions are you saying im unable to use $_SESSION in this script?

[attached for reference ]
Ray Paseur

$_SESSION is a superglobal variable.  Please see How the PHP Session Handler Works in this article.

See also:

And this:

Superglobal variables are present in every scope and namespace.  You can use them anywhere for read or write, inside open code, inside class methods, inside functions, etc.
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
Dave Baldwin

You can use $_SESSION variables anywhere you use 'regular' variables IF you run session_start(); first at the top of the page.  session_start(); creates or renews the session identity that is used to access your $_SESSION variables.
Mark Brady

In both cases $_SESSION[email] should be $_SESSION['email']

$email is a string so you must reference it as a string value and not a defined value. PHP will consider $_SESSION[email]  (the email part) as a defined value and if it isn't defined anywhere it will give you grief.