Link to home
Start Free TrialLog in
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,
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 Ray Paseur
Ray Paseur
Flag of United States of America image

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.
Avatar of Dave Baldwin
Dave Baldwin
Flag of United States of America image

Link to home
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of wilko1000


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 ]
$_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.
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.
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.