Переменная Session PHP не сохраняется (я вызываю Session_Start ()) - PullRequest
0 голосов
/ 10 мая 2011

Я могу на всю жизнь понять, почему я теряю все переменные сессии

Вот мой 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;
                    }
               ?>

Набор значений отсутствует (они присутствуют при первой публикации этой страницы, но при повторной публикации они исчезают);

вот моя страница phpinfo

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 11 мая 2011

Может быть, это не подходящий ответ, но я нашел сессии PHP довольно болезненными. Иногда они вызывают проблемы, и их легко заменить простой таблицей базы данных. Вам просто нужно создать идентификатор сеанса и сохранить его в таблице базы данных и куки. Вероятно, это будет работать быстрее, если вам все равно нужно подключиться к базе данных. Однако, если это невозможно в вашей ситуации, вы также можете подумать о том, чтобы делать то, что делает PHP; использование файловой системы для хранения данных сеанса. Если вы можете использовать конкретную базу данных и таблицу для своей регистрационной информации, используйте ее. Если у вас нет другого выбора, рассмотрите возможность использования файлов.

PS: если вы используете ручной метод (база данных или файловая система), создайте длинные идентификаторы сеанса.

0 голосов
/ 10 мая 2011

Ваш код должен быть похож на

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

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

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...