Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не передаются значения сессии на новом хостинге
Форумы портала PHP.SU » PHP » Программирование на PHP » Не передаются значения сессии на новом хостинге

Страниц (1): [1]
 

1. alexchromets - 24 Мая, 2016 - 17:11:20 - перейти к сообщению
Перенёс сайт с одного хостинга на другой, теперь непонятно отрабатывают сессии.
Есть файл login.php, куда пользователь заходит по умолчанию, заполняет форму, нажимает submit, форма перенаправляется на эту же страницу и если есть $_POST['login'], то выполняется код, который приведу ниже.
Как должно быть: пользователь заходит на страницу с логином, вводит свои данные, данные сравниваются с БД и перенаправляются на другую страницу в зависимости от его роли.
Как есть: перенаправляет на страницу в зависимости от роли, но данные в сессию не записываются.
На странице, откуда переходит, в начале файла session_start(); и в файле, куда переходит, тоже session_start();
Обращался в саппорт, они ничем помочь не могут, говорят, что проблема в коде.

Код:

login.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(isset($_POST['rememberMe']) && $_POST['rememberMe'] == 'Yes') {
  4.     setcookie('login', $_POST['username'], time()+ (86400 * 30), "/");
  5.     setcookie('pass', $_POST['password'], time()+ (86400 * 30), "/");
  6. }
  7. require_once 'config.php';
  8. require_once 'vendor/autoload.php';
  9.  
  10. if(!empty($_COOKIE) && !empty($_SESSION) && isset($_SESSION['remember_me']) == 1) {
  11.     if($_SESSION['usr_role'] == 1 || $_SESSION['usr_role'] == 2) {
  12.         echo "<script>window.location.assign('admin_hr/index.php')</script>";
  13.     } elseif($_SESSION['usr_role'] == 3) {
  14.         echo "<script>window.location.assign('user/index.php')</script>";
  15.     }
  16. }
  17.  
  18. if (isset($_POST['login'])) {
  19.     $username = $_POST['username'];
  20.     $passwordNotMd5 = $_POST['password'];
  21.     $password = md5($_POST['password']);
  22.     $login = $_POST['login'];
  23.     if(isset($_POST['rememberMe']) && $_POST['rememberMe'] == 'Yes') {
  24.         $_SESSION['remember_me'] = "1";
  25.     }
  26.     $sql = "SELECT * FROM `user` WHERE usr_email = :usr_email AND usr_password = :usr_password";
  27.     $stmt = $pdo->prepare($sql);
  28.     $stmt->execute(array(
  29.         'usr_email' => $username,
  30.         'usr_password' => $password
  31.     ));
  32.     $res = $stmt->fetchAll(PDO::FETCH_ASSOC)[0];
  33.     $first_name = $res['usr_first_name'];
  34.     $last_name = $res['usr_last_name'];
  35.     $user = $res['usr_email'];
  36.     $pass = $res['usr_password'];
  37.     $role = $res['usr_role'];
  38.     $avatar = $res['usr_photo_url'];
  39.     $user_id = $res['usr_id'];
  40.     $user_is_active = $res['usr_is_active'];
  41.  
  42.     if ($user == $username && $pass = $password) {
  43.         if ($role == "1" || $role == "2") {
  44.             $_SESSION['usr_email'] = $user;
  45.             $_SESSION['usr_first_name'] = $first_name;
  46.             $_SESSION['usr_last_name'] = $last_name;
  47.             $_SESSION['usr_role'] = $role;
  48.             $_SESSION['usr_photo_url'] = $avatar;
  49.             $_SESSION['usr_id'] = $user_id;
  50.             echo "<script>window.location.assign('admin_hr/index.php')</script>";
  51.         } elseif ($role == "3" && $user_is_active == "1") {
  52.             $_SESSION['usr_email'] = $user;
  53.             $_SESSION['usr_first_name'] = $first_name;
  54.             $_SESSION['usr_last_name'] = $last_name;
  55.             $_SESSION['usr_role'] = $role;
  56.             $_SESSION['usr_photo_url'] = $avatar;
  57.             $_SESSION['usr_id'] = $user_id;
  58.             echo "<script>window.location.assign('user/index.php')</script>";
  59.         } elseif ($role == "3" && $user_is_active == "0") {
  60.             echo "<script>window.location.assign('/login.php?userInactive=true')</script>";
  61.         }
  62.     } else {
  63.         echo "<script>window.location.assign('/login.php?loginIncorrect=true')</script>";
  64.     }
  65. }
  66.  
  67. if (isset($_GET['restoreLoginIncorrect'])) {
  68.     ?>
  69.     <div class="alert alert-danger alert-dismissible" role="alert" style="position:absolute;">
  70.         <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">Ч</span><span
  71.                 class="sr-only">Close</span></button>
  72.         <strong>Error!</strong> This email is not found.
  73.     </div>
  74.     <?
  75. }
  76. if (isset($_GET['resetPassword'])) {
  77.     ?>
  78.     <div class="alert alert-success alert-dismissible" style="position: absolute;" role="alert">
  79.         <button type="button" class="close" data-dismiss="alert"><span aria-hidden="false">Ч</span><span
  80.                 class="sr-only">Close</span></button>
  81.         <strong>Done!</strong> New password has been sent on your email
  82.     </div>
  83.     <?
  84. }
  85. if (isset($_GET['loginIncorrect'])) {
  86.     ?>
  87.     <div class="alert alert-danger alert-dismissible" role="alert" style="position:absolute;">
  88.         <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">Ч</span><span
  89.                 class="sr-only">Close</span></button>
  90.         <strong>Warning!</strong> This username or password are incorrect.
  91.     </div>
  92.     <?
  93. }
  94. if (isset($_GET['userInactive'])) {
  95.     ?>
  96.     <div class="alert alert-danger alert-dismissible" role="alert" style="position:absolute;">
  97.         <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">Ч</span><span
  98.                 class="sr-only">Close</span></button>
  99.         <strong>Warning!</strong> Your account is inactive.
  100.     </div>
  101.     <?
  102. }
  103. ?>
  104.  
  105. <!DOCTYPE html>
  106. <html lang="en">
  107. <head>
  108.     <meta charset="utf-8">
  109.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  110.     <meta name="viewport" content="width=device-width, initial-scale=1">
  111.     <title>Learning management system</title>
  112.  
  113.     <!-- Bootstrap -->
  114.     <link href="css/bootstrap.min.css" rel="stylesheet">
  115.     <link href="css/signin.css" rel="stylesheet">
  116.  
  117.     <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
  118.     <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
  119.     <!--[if lt IE 9]>
  120.     <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  121.     <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
  122.     <![endif]-->
  123. </head>
  124. <body>
  125. <div class="my-container">
  126.     <form class="form-signin" role="form" method="post" action="">
  127.         <h2 class="form-signin-heading">Please sign in</h2>
  128.         <input type="email" class="form-control margin" id="username" name="username" placeholder="Email address"
  129.                required autofocus>
  130.         <input type="password" class="form-control margin" id="password" name="password" placeholder="Password"
  131.                required>
  132.         <label class="checkbox margin">
  133.             <input type="checkbox" name="rememberMe" value="Yes"> Remember me
  134.         </label>
  135.         <button class="btn btn-lg btn-primary btn-block" name="login" type="submit">Sign in</button>
  136.         <button type="button" class="btn btn-lg btn-block" data-toggle="modal" data-target="#myModal">Reset password
  137.         </button>
  138.     </form>
  139.     <div id="myModal" class="modal fade" role="dialog">
  140.         <div class="modal-dialog">
  141.  
  142.             <!-- Modal content-->
  143.             <div class="modal-content row">
  144.                 <div class="modal-header">
  145.                     <button type="button" class="close" data-dismiss="modal">&times;</button>
  146.                     <h4 class="modal-title">Reset password</h4>
  147.                 </div>
  148.                 <form role="form" action="send_mail.php" method="post">
  149.                     <div class="modal-body">
  150.                         <p>After pressing "Reset" button the new generated password will be sent to your email</p>
  151.                         <input type="email" name="email" class="form-control margin" placeholder="Email address"
  152.                                required autofocus>
  153.                         <!--<button type="submit" class="btn btn-primary pull-right" data-dismiss="modal">Отправить</button>-->
  154.                         <button type="submit" class="btn btn-primary pull-right">Reset</button>
  155.                     </div>
  156.                 </form>
  157.             </div>
  158.  
  159.         </div>
  160.     </div>
  161.     <footer class="footer">
  162.         <p class="text-muted text-center">&copy; All rights reserved</p>
  163.     </footer>
  164. </div> <!-- /container -->
  165.  
  166. <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
  167. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  168. <!-- Include all compiled plugins (below), or include individual files as needed -->
  169. <script src="js/bootstrap.js"></script>
  170. </body>
  171.  
  172. </html>
  173.  

(Добавление)
Попробовал для теста объявить сессию в тестовом файле
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
  3. echo "Вы обновили эту страницу ".$_SESSION['counter']++." раз. <br>";
  4. echo "<br><a href=".$_SERVER['PHP_SELF'].">обновить";
  5.  

Сессия отрабатывает, но только эта. При последующем вызове session_start(); в другом месте программы и дампе $_SESSION у меня показывается только $_SESSION['counter'].
Я так понимаю, у меня создаются две разные сессии, только не понимаю, как, и как от этого избавиться.
2. alexchromets - 25 Мая, 2016 - 12:12:29 - перейти к сообщению
Проблема решена. Виновник - хостинг.

 

Powered by ExBB FM 1.0 RC1