Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Sessions Not working

I just can't get my variables to carry over to the next page. The variable assignment works fine on the initial page (tested), but the value goes null when going to the next. Plz Help!

Page 1:

<?PHP session_start(); ?>
<HTML>
<HEAD>
    <META NAME='robots' CONTENT='noindex,nofollow'>
    <TITLE>Master Chief's Gamestore</TITLE>
    <STYLE type="text/css">
        BODY {
            color: #ffffff;
            background: url('~/halo-reach.jpg');
            background-repeat: no-repeat;
            background-position: top;
            background-color: black;
        }
    </STYLE>
</HEAD>
<body vLink='#3366CC' link='#3366CC' alink='#3366CC'>
<br/><br/><br/><br/><br/>
<table width='100%' height='80%'>
    <tr>
        <td align='center' valign='middle'>
            <table width="50%" cellspacing="0" cellpadding="25" border="0">
                <form method="post">
                    <tr bgcolor="#666633">
                        <th id="header" align="left" colspan="3">
                            <DIV align="center">
                                <font face="Verdana, Arial, Helvetica" color="white" size="3">
                                    &nbsp; Master Chief's Gamestore </font>
                            </DIV>
                        </th>
                    </tr>
                    <tr bgcolor="#A3A385">
                        <td width="100%" valign="middle" colspan="2">
                            <font face="Verdana, Arial, Helvetica" size="2">
                                <div align="center"><br/><br/>
                                    Username:&nbsp
                                    <input type="text" name="username">&nbsp
                                    Password:&nbsp
                                    <input type="password" name="password"><br/>
                                    <br/><input type="submit" name="act" value="Login"><br/>
                                    <input type="submit" name="act" value="Register"><br/>
                                    <input type="submit" name="act" value="Main"><br/> <br/><br/>
                                </div>
                            </font>
                        </td>
                    </tr>
                    <?PHP
                    if ($_POST['act'] == "Login") {
                        mysql_connect("~", "~", "~") or die("unable to connect to server");
                        mysql_select_db("~") or die("unable to select database");
                        $user = $_POST['username'];
                        $pass = $_POST['password'];
                        $query = "select * from users where user like '%" . $user . "%' and pass like '%" . $pass . "%';";
                        $result = mysql_query($query);
                        $rows = mysql_numrows($result);
                        if ($rows == 0 || strlen($user) == 0) {
                            echo "<br />Login Failure";
                        } else {
                            $_SESSION['user'] = mysql_result($result, 0, "user");
                            $_SESSION['id'] = mysql_result($result, 0, "P_Id");
                            header('Location: ~/success.php');
                        }
                    }
                    if ($_POST['act'] == "Register") {
                        header('Location: ~/register.php');
                    }
                    if ($_POST['act'] == "Main") {
                        header('Location: ~/index.php');
                    }
                    ?>
                    <div align="center">
                        <tr bgcolor="#666633">
                            <td align="left">
                                Logged in as:
                                <?PHP
                                $user = $_SESSION['user'];
                                if (!$user) {
                                    $user = 'Guest';
                                }
                                echo $user;
                                ?>
                            </td>
                            <td align="right">
                                Password:&nbsp
                                <input type="password" name="srcpw">
                                <input type="submit" name="dspphp" value="Display PHP">
                            </td>
                        </tr>
                    </div>
                </form>
            </table>
        </td>
    </tr>
</table>
</body>
</html>

Page 2:

<?PHP session_start(); ?>
<HTML>
<HEAD>
    <META NAME='robots' CONTENT='noindex,nofollow'>
    <TITLE>Master Chief's Gamestore</TITLE>
    <STYLE type="text/css">
        BODY {
            color: #ffffff;
            background: url('~/halo-reach.jpg');
            background-repeat: no-repeat;
            background-position: top;
            background-color: black;
        }
    </STYLE>
</HEAD>
<body vLink='#3366CC' link='#3366CC' alink='#3366CC'>
<br/><br/><br/><br/><br/>
<table width='100%' height='80%'>
    <tr>
        <td align='center' valign='middle'>
            <table width="30%" cellspacing="0" cellpadding="25" border="0">
                <form method="post">
                    <tr bgcolor="#666633">
                        <th id="header" align="left" colspan="3">
                            <DIV align="center">
                                <font face="Verdana, Arial, Helvetica" color="white" size="3">
                                    &nbsp; Master Chief's Gamestore </font>
                            </DIV>
                        </th>
                    </tr>
                    <tr bgcolor="#A3A385">
                        <td width="100%" valign="middle" colspan="2">
                            <font face="Verdana, Arial, Helvetica" size="2">
                                <div align="center">
                                    <br/><br/>Success<br/><br/>
                                    <input type='submit' name='main' value='Main'>
                                    <?PHP
                                    if ($_POST['main'] == "Main") {
                                        header('Location: http://~/index.php');
                                    }
                                    if ($_POST['act'] == "Display Code") {
                                        if ($_POST['pw'] == "pass") {
                                            highlight_file("success.php");
                                        }
                                    }
                                    ?>
                                </div>
                            </font>
                        </td>
                    </tr>
                    <div align="center">
                        <tr bgcolor="#666633">
                            <td align="left">
                                Logged in as:
                                <?PHP
                                $user = $_SESSION['user'];
                                if (!$user)
                                    $user = 'Guest';
                                echo $user;
                                ?>
                            </td>
                            <td align="right">
                                Password:&nbsp
                                <input type="password" name="pw">
                                <input type="submit" name="dspphp" value="Display PHP">
                            </td>
                        </tr>
                    </div>
                </form>
            </table>
        </td>
    </tr>
</table>
</body>
</html>

EDIT: I've tried this sample code and it does NOT work.

Page 1:

<?php
session_start();
if (isset($_GET['link'])) {
    $_session['myvariable'] = 'Hello World';
    header('Location: http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['REQUEST_URI']) . '/page2.php');
    exit;
}
?>
<a href="<?php print $_SERVER['REQUEST_URI'] . '?link=yes'; ?>">Click Here</a>

Page 2:

<?php
session_start();
print 'Here is page two, and my session variable: ';
print $_session['myvariable'];
exit;
?>

But as I posted below, I have used sessions in other pages successfully on the same server. Soo frustrating....

Thanks for all the posts btw!

like image 547
Josh Avatar asked May 01 '11 17:05

Josh


People also ask

How do I run a PHP session?

Starting a PHP Session A PHP session is easily started by making a call to the session_start() function. This function first checks if a session is already started and if none is started then it starts one. It is recommended to put the call to session_start() at the beginning of the page.

How do I keep a PHP session alive?

session_start() creates a session or resumes the current one based on a session identifier passed via a GET or POST request, or passed via a cookie. When session_start() is called or when a session auto starts, PHP will call the open and read session save handlers.

What is PHP session_start () and Session_destroy () function?

session_destroy() function: It destroys the whole session rather destroying the variables. When session_start() is called, PHP sets the session cookie in browser. We need to delete the cookies also to completely destroy the session. Example: This example is used to destroying the session.


3 Answers

It looks like you are just redirecting the user to the second page without posting anything. You would want to set hidden variables and actually submit your form to the second page. Re-directing will lose all the post variables.

If you want to send variables to the second page with a redirect, you can use session variables or a GET variable passed in with the URL to the second page.

like image 32
Mikecito Avatar answered Oct 08 '22 16:10

Mikecito


Try using

$_SESSION['myvariable'] = 'Hello World'; 

in upper case

like image 33
Thomas Avatar answered Oct 08 '22 18:10

Thomas


Make sure cookies are enabled so the second page actually re-creates the session of the first page instead of creating a new, empty one. Check out http://www.php.net/manual/en/session.idpassing.php for details.

EDIT

Another possible cause for sessions not working as expected, especially if it only affects certain pages, is that you have accidental whitespace or other output before your first 'session_start() error

like image 193
Thilo Avatar answered Oct 08 '22 18:10

Thilo