PHP会话变量未存储(我正在调用Session_Start())

时间:2011-05-10 17:45:57

标签: php session

我可以为我的生活找出为什么我会丢失所有会话变量

这是我的php代码:

<?php
    if($_POST['loginButton']){
        session_destroy();
        session_start();

        $con = mysql_connect("localhost", $_POST["userNameTextBox"], $_POST["passwordTextBox"]);

        if (!$con)
        {
            echo 'Could not connect: ' . mysql_error() ;
            header( 'Location: index_error.html' ) ;
            die();
        }
        //else

        $_SESSION['IP']="localhost";
        $_SESSION['username']=$_POST["userNameTextBox"];
        $_SESSION['password']=$_POST["passwordTextBox"];
        $_SESSION['database']="Chuckles_DB";
        $_SESSION['Result'] ="Hi";
    }
    ?>

但是当我运行下一个php脚本时

<?php

                    $res=session_start();
                    echo "Session Started with ".$res." <br>";
                    echo "Test::>".$_SESSION['IP']." ".$_SESSION['username']." ".$_SESSION['password']." ".$_SESSION['database']."<:::<br>";

                    $con = mysql_connect( $_SESSION['IP'],$_SESSION['username'],$_SESSION['password']);
                    if (!$con)
                    {
                        echo 'Could not connect: ' . mysql_error() . "  <br><br>";
                        echo '<a href="index.html" target="">Please re-login to the web site</a> ';
                    }
                    else{
                       echo $con;
                    }
               ?>

设置的值不存在(它们在第一次发布到此页面时出现,但如果再次发布,它们就会消失);

here is my phpinfo page

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您的代码应该像

<?php
 if(!session_start()){
   echo "Session Failed!";
   exit();
 }

 if(isset($_POST['commit_sale'])) {
    echo 'Test7';
    commit_sale($_SESSION['ticker']);
    unset($_SESSION['ticker']);
 }

?>

答案 1 :(得分:0)

可能它不是一个合适的答案,但我发现PHP会话相当痛苦。有时它们会造成麻烦,很容易被简单的数据库表替换。您只需创建会话ID并将其存储在数据库表和cookie中。如果你还需要连接数据库,它可能会更快。但是,如果在您的情况下不可能,您可能也会考虑做PHP的工作;使用文件系统存储会话数据。如果您可以使用特定的数据库和表来获取登录信息,请使用它。如果您没有其他选择,请考虑使用文件。

PS:如果您使用手动方法(数据库或文件系统),请创建长会话ID。