Sesje nie działają

0

Witam,
mam taki kod:

<?php
   session_start();
   include("connect.php");

   if(isset($_COOKIE['ea_remember_login_id'])){
      $remember_login_rows = mysqli_fetch_assoc(mysqli_query($connect, "SELECT * FROM `cookies` WHERE `id`='".$_COOKIE['ea_remember_login_id']."' "));
      if($remember_login_rows['id'] == $_COOKIE['ea_remember_login_id']){
         $_SESSION['id'] = $remember_login_rows['user_id'];
         $_SESSION['login'] = $remember_login_rows['user_login'];
         header("Location: home/index.php");
      }
   }
?>

oraz kod z home/index.php

<?php
   session_start();
   session_regenerate_id(true);
   if(!isset($_SESSION['id']) && !isset($_SESSION['login'])){
      echo "Nie wykryto";
      /* header("Location: ../index.php"); */
   }
?>

I kiedy po wykryciu cookie następuje przekierowanie do tego home/index.php wyświetla się Nie wykryto mimo, że zmienna sesyjna została ustawiona. Ma ktoś pomysł jak to rozwiązać?

0

Pokaż rezultat var_dump($remember_login_rows);.

0

A czy jesteś pewien, że problem leży po stronie sesji a nie mysqli_fetch_assoc? Bo być może kłopot leży w innym miejscu niż go szukasz. Sprawdź, czy łączy się z SQL i pobiera poprawne wartości.

0

@Patryk27: var_dump pokazuje

array(3) { ["id"]=> string(13) "5fcd477343ff0" ["user_id"]=> string(1) "4" ["user_login"]=> string(6) "Wiktor" }

@cerrato fetch_assoc pobiera dobre wartości, sprawdzałem.

0

mimo, że zmienna sesyjna została ustawiona

Chwila, chwila - a session_regenerate_id() to po co uruchamiasz?

0

@Patryk27: gdzieś czytałem, że to podnosi bezpieczeństwo, ale nie za bardzo zrozumiałem jak to używać, ale profilaktycznie postanowiłem użyć

2

profilaktycznie postanowiłem użyć

Nigdy nie kopiuj losowych fragmentów kodu z internetu bez zrozumienia co one robią; czy profilaktycznie bierzesz też antybiotyki? :-P

W tym wypadku cały problem wynika właśnie z tego, że wkleiłeś do swojego kodu session_regenerate_id(), które niszczy obecną sesję i tworzy nową, pustą.

0

@Patryk27: Po usunięciu każdego wystąpienia session_regenerate_id() dalej problem się pojawia.

0

Pokaż zaktualizowany kod.

0

@Patryk27:

<?php
   session_start();
   include("connect.php");

   if(isset($_COOKIE['ea_remember_login_id'])){
      $remember_login_rows = mysqli_fetch_assoc(mysqli_query($connect, "SELECT * FROM `cookies` WHERE `id`='".$_COOKIE['ea_remember_login_id']."' "));
      if($remember_login_rows['id'] == $_COOKIE['ea_remember_login_id']){
         $_SESSION['id'] = $remember_login_rows['user_id'];
         $_SESSION['login'] = $remember_login_rows['user_login'];
         header("Location: home/index.php");
      }
   }
?>

home/index.php

<?php
   session_start();
   if(!isset($_SESSION['id']) && !isset($_SESSION['login'])){
      header("Location: ../index.php");
   }
?>
2

@Patryk27: Błąd znaleziony. Okazało się, że ten skrypt ustawiający sesje był wykonywany na początku dokumentu, a w jego połowie było session_destroy(). Byłem pewien, że skoro pierwszy skrypt php jest po za <html> na początku dokumentu skrypt na dole się nie załaduje, a okazało się, że jednak tak. Dziękuję za poświęcony czas.

1 użytkowników online, w tym zalogowanych: 0, gości: 1