Nano Hash - криптовалюты, майнинг, программирование

Переменные сеанса не публикуются

Я использую PHP 5.3.6 (Yahoo) и имею проблемы с сохранением/получением переменных сеанса с помощью $_POST. Я воссоздал проблему в своей среде разработки (PHP 5.5.6), установив ENABLE_POST_DATA_READING=OFF.

Я новичок в PHP и сначала изо всех сил пытался выяснить причину, а теперь с потенциальным решением (php://input ????). Ниже приведена страница, с которой у меня возникли проблемы: ей не удается прочитать переменную сеанса для загрузки страницы mbrsvc.php.

<!DOCTYPE html>
<?php
session_start(); 
$inactive = 600;
// check to see if $_SESSION["timeout"] is set
if (isset($_SESSION["timeout"])) {
    // calculate the session's "time to live"
    $sessionTTL = time() - $_SESSION["timeout"];
    if ($sessionTTL > $inactive) {
        session_destroy();
        header("Location: /ssl/index.php");
    }
}
$_SESSION["timeout"] = time();
?>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Login</title>
</head>
<body>
    <?php 
    // {removed CSS include & function include references}
require 'include/hdr1.php';
    ?>
    <div id="fNav">
        <div class="arrowgreen">
            <ul>
                <li><a href="index.php" title="Home">Home</a></li>
                 <li><a href="logout.php" title="Close">Close</a></li>
            </ul>
        </div>
    </div>
   <div id="fMain">
        <?php
        if (isset($_POST['Submit'])):
            $flag='ok';
        else :
            $flag='new';
            $emailid="";
        endif;
       if ($flag=='new'):
            //echo 'New Form being displayed<br>' ;    
            //echo time();
        endif;
        if (isset($_POST['Submit'])): //Form has already been displayed and submit button clicked
           if (isset($_POST['cname'])):
                $inputvalue=$_POST['cname'];
           else: 
               $inputvalue='notset';
           endif;
           $inputopt = trim($_POST['tinput']);
           require 'include/opendb.php';
            switch ($inputopt):
                case "MemberID":
                    // Processing for Member ID entered;    
                    $memberid = filter_var(trim($inputvalue), FILTER_SANITIZE_STRING);
                    if (!$memberid):
                        echo 'Invalid Memebr ID entered... please retry';
                        echo "<input type='button' value='Retry' onClick='history.go(-1)'>" ;
                        return;
                    endif;
                        $sql01 = "select acnt.customerid, acnt.userid, acnt.pswd, members.firstname,
                            members.lastname, acnt.idseq, acnt.daystamp, acnt.hashlog, acnt.prole 
                            from acnt, members 
                            WHERE !acnt.obs_fg and members.customerid = acnt.customerid 
                            and acnt.customerid like '" . $memberid."'";
                    break;

                case "email" :
                    //do e-mail validation, then match e-mail to user ID & set SQL
                    $emailid = filter_var(trim($inputvalue), FILTER_VALIDATE_EMAIL);
                    if (!$emailid):
                        echo 'Invalid e-mail address provided' ;
                        echo '<big>Please provide valid e-mail address</big><br>';
                        $flag='bademail';
                        echo "<input type='button' value='Retry' onClick='history.go(-1)'>" ;
                        return;
                    endif;
                    $sql01 = "select acnt.customerid, acnt.userid, acnt.pswd, members.firstname, 
                        members.lastname, acnt.idseq, acnt.daystamp, acnt.hashlog, acnt.prole
                        from acnt, members 
                        WHERE !acnt.obs_fg and members.customerid = acnt.customerid 
                        and acnt.userid like " . "'" .trim($emailid)."'";
                    break;

                 default:
                    break;
            endswitch;
            if ($flag <>'ok'):
               echo "<input type='button' value='Retry' onClick='history.go(-1)'>" ;
            else: // all entries are correct and let us proceed with the database checking etc …
            endif;
            if (isset($mysqli)):
                // verifying db handle is set
            else:
                 require 'include/opendb.php';
            endif;
            $result = mysqli_query($mysqli, $sql01) or die (mysqli_error($mysqli));
            $num =  mysqli_num_rows($result);
            if ($num==0):
                //No results, acnt record does not exist
                echo "<p>Your Login does not seem to be setup yet.</p>";
                echo '<p>Click <a href="newlogin.php">here to set up your login.</a>';
                return ;
            else:
                while ($row    = mysqli_fetch_row($result)) :
                    $memberid  = $row[0];   //  customerID
                    $userid    = $row[1];   //email   userID
                    $emailid   = $row[1];   //repeating same value for emialID as userID
                    $pwdh1     = $row[2];   //pswd
                    $firstname = $row[3];   //firstname
                    $lastname  = $row[4];   //lastname
                    $idseq     = $row[5];   //idseq
                    $salt      = $row[6];   //daystamp
                    $hashlog   = $row[7];   //hashlog
                    $prole     = $row[8];   //prole
                endwhile;
                mysqli_close($mysqli);
                $srcip = getRealIpAddr();
                $timeformat='Y-m-d-G-i-s-e';
                $timenow = date($timeformat,$_SERVER['REQUEST_TIME']);
                if (!isset($loggedin)):
                    $loggedin = 0;
                endif;
            endif;
            if (!isset($_POST['pswd'])):
                echo '<big><b>Password cannot be blank</b></big><br>';
                $flag='blankpswd';  
                $pwd='';
                if ($flag <>'ok'):
                   echo "<input type='button' value='Retry' onClick='history.go(-1)'>" ;
                else: // all entries are correct and let us proceed with the database checking etc …
                endif;
            else:
                $pwd = filter_input(INPUT_POST, 'pswd', FILTER_SANITIZE_URL);
            endif;
            include 'include/ihash.php';
            if ($hashlog == 'BLOWFISH'):
                $salt = substr($pwdh1,0,28) . '$';
                $pwdh2 = crypt($pwd, $salt);
            else:
                $pwdh2 = hash_hmac($hashalog, $pwd, $salt);
            endif;
             if ($pwdh1==$pwdh2):

                session_regenerate_id();
                $a = session_id();
                $timeformat='Y-m-d-G-i-s-e';
                $timenow = date($timeformat,$_SERVER['REQUEST_TIME']);
                $logintime = time();
                $loggedin  = 1;
                $srcip     = getRealIpAddr();
                $loginid   = $memberid;
                $userid    = $emailid;
                $_SESSION['memberid']  = $memberid ;
                $_SESSION['loginid']   = $loginid;
                $_SESSION['srcip']     = $srcip;  
                $_SESSION['userid']    = $userid;
                $_SESSION['firstname'] = $firstname;
                $_SESSION['lastname']  = $lastname;
                $_SESSION['idseq']     = $idseq;
                $_SESSION['loggedin']  = $loggedin;
                $_SESSION['firstname'] = $firstname;
                $_SESSION['lastname']  = $lastname;
                $_SESSION['idseq']     = $idseq;
                $_SESSION['logintime'] = $logintime;
                $_SESSION['prole']     = $prole;
                $_SESSION['a']         = $a ;
                $sqllog = 'insert into userlog (loginid, srcip, action) values ('. $loginid.', "' .$srcip . '", "Logged in" )';
                $res=mysqli_query($mysqli, $sqllog);
                if (!$res):
                endif;
                $sqlupdate = "Update acnt set lastlogdt = "."'".$timenow."'"." where idseq = ".$idseq ;
                $updateres = mysqli_query($mysqli, $sqlupdate);
                if ($updateres==0):
                else:
                endif;
                //consider to be logged in
                session_commit();  //added this to try to have updated session variables written 
                // capture & insert IP & datetime into acnt
                mysqli_close($mysqli);
                print "<script>";
                print " self.location='mbrsvc.php'"; // Comment this line if you don't want to redirect
                print "</script>";
                return;
            else:  
                //password did not match what was stored
                $srcip=getRealIpAddr();
                $loginid=$memberid;
                $userid=$emailid;
                $flag='badcredentials';
                echo 'Credentials did not match, please retry';
                echo "<input type='button' value='Retry' onClick='history.go(-1)'>" ;
                mysqli_close($mysqli);
                exit;
            endif;  
            //end of FormSubmit
         else :    
            //Display form
            echo '<form action="login.php" method="post">';
            echo 'Enter your Member ID or e-mail address (and select which you entered below):<br />';
            echo '<input type="text" name="cname" maxlength="60" size="30" value ="" tabindex="1"/>';
            echo '<p>';
            echo 'Member ID <INPUT CHECKED type="radio" name="tinput" value="MemberID" tabindex="2"><br>';
            echo 'E-Mail Address<INPUT type="radio" name="tinput" value="email" tabindex="3"><br></p>';
            echo '<p>Password: <input type="password" name="pswd" size="30" maxlength="30" value="" tabindex="4"/></p>';
            echo '<input type="Submit" name="Submit" value="Submit" tabindex="5"/>';
            echo '<input type="reset" name="reset" value="Reset" tabindex="6"/>';
            echo '<p>Forgot Your Password? <a href="resetsec.php"/> Click here. </a> </p>';
            echo '</form>';
        endif;
        ?>
        </div>
  </body>
</html>

Любая помощь, которую вы можете оказать, очень ценится!

24.12.2013

  • проверьте настройки Session и Post, используя файл с помощью функции php_info() на вашем сервере. 24.12.2013
  • Посмотрите, сможете ли вы создать ОЧЕНЬ КОРОТКУЮ программу, которая либо воспроизводит проблему, либо устраняет ее. Количество кода, которое у вас есть прямо сейчас, не способствует тому, чтобы вторая пара глаз посмотрела на вашу проблему. В процессе вы можете решить свою проблему. 24.12.2013
  • Я могу воссоздать проблему в своей среде разработки, установив ENABLE_POST_DATA_READING=OFF. Эта директива была введена в версии 5.4 (моя среда разработки — 5.5.6), но рабочий сайт Yahoo — 5.3.6. В моей среде разработки, когда я сбрасывал ENABLE_POST_DATA_READING=ON, все работало правильно, но я не могу сделать это в среде 5.3.6. 25.12.2013
  • Сравнивая результаты PHPINFO() с серверов PROD и Dev, я обнаружил настройку, которая при локальном тестировании позволила мне воссоздать проблему. 25.12.2013

Ответы:


1

Используйте одинарные кавычки в $_SESSION.. т. е. используйте $_SESSION['timeout'] вместо $_SESSION["timeout"]

24.12.2013
  • Хотя у меня была переменная TIMEOUT в двойных кавычках, все остальные переменные были в одинарных кавычках. Я исправил тайм-аут var, но это не решает проблему. Конкретная переменная, которая является основной проблемой, — LOGGEDIN. Я могу воссоздать проблему в своей среде разработки, установив ENABLE_POST_DATA_READING=OFF. Эта директива была введена в версии 5.4 (моя Dev Environemnt — 5.5.6), но рабочий сайт Yahoo — 5.3.6. В моей среде разработки, когда я сбрасываю ENABLE_POST_DATA_READING=ON, все работает правильно, но я не могу сделать это в среде 5.3.6. 25.12.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..