Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z przekazaniem sesji
Forum PHP.pl > Forum > Przedszkole
freemp3
Witam.
Właśnie próbuje napisać skrypt do swojego portalu i opieram się na pewniej książce i skrypcie w nim opisanym. Pisałem skrypt logowania podobnie jak tam. W skrypcie zmienne są przekazywane ok natomiast w moim po zalogowaniu jest ok, ale po przeładowaniu strony ponownie wyskakuje okienko logowania :/
  1. <?php
  2. if($_POST['logowanie'] == 'tak' AND $_SESSION['u_logged'] == ''){
  3.  
  4.     $name = htmlspecialchars($_POST['login']);
  5.     $pass = htmlspecialchars($_POST['haslo']);
  6.    
  7.     $sql = "SELECT * FROM users WHERE name = '$name' AND pass = '$haslo'";
  8.     $baza->query($sql);
  9.     $wyniki = $baza->fetcharray();
  10.     $ilosc = $baza->num_rows();
  11.    
  12.     if($ilosc == '1'){
  13.        
  14.         $auth = 'nie';
  15.        
  16.         for($i=0; 1 > $i; $i++){
  17.        
  18.             if($wyniki[$i]['pass'] == $haslo){
  19.            
  20.             $auth = 'tak';
  21.             $id = $wyniki[$i]['id'];
  22.             $name = $wyniki[$i]['name'];
  23.            
  24.             }
  25.             else{
  26.            
  27.             echo "Hasło jest nieprawidłowe";
  28.            
  29.             }
  30.         }    
  31.         if($auth == 'tak'){
  32.             $_SESSION['u_id'] = $id;
  33.             $_SESSION['u_name'] = $name;
  34.             $_SESSION['u_lang'] = $jezyk;
  35.             $_SESSION['u_admin'] = '';
  36.             $_SESSION['u_logged'] = 'tak';
  37.         }
  38.     }
  39.     else{
  40.         echo "Nie istnieje taki użytkownik";
  41.     }
  42.     header ("Locatio: index.php");
  43. }
  44. elseif(empty($_POST['logwanie']) AND $_SESSION['u_id'] == ''){
  45. ?>
  46. <form method="post" action="index.php">
  47. Logi:<input type="text" name="login" value="<?php echo $_POST['login']; ?>">
  48.  
  49. Hasło:<input type="password" name="haslo" value="<?php echo $_POST['haslo']; ?>">
  50.  
  51. <input type="hidden" name="logowanie" value="tak">
  52.  
  53. <input type="submit" name="zaloguj" value="Zaloguj">
  54.  
  55. </form>
  56. <?php
  57. }
  58. elseif($_SESSION['u_id'] != ''){
  59.  
  60. echo "Wyloguj się";
  61.  
  62. }
  63. ?>
ShadowD
Mam pytania:

1. Masz na górze gdzieś napisane sesionstart() questionmark.gif
2. Jaką wartość ma pole a w zasadzie zmienna $id??

Ps Obstawiam, że błąd jest spowodowany brakiem session_start(); na początku skrypty...
freemp3
No to źle obstawiasz tongue.gif Ten plik jest pobierany do nagłówka strony (header.php) a do niego jest pobierany plik z silnikiem (silnik.php) i w silniku właśnie jest session_start(). Nie zapomniałem też o session_register() dla każdej zmiennej sesyjnej.
Zmienna $id przekazuje numer id użytkownika z bazy danych.
ShadowD
Nie wiem ale jak u siebie dodałem ręcznie sesję to działało więc albo nie masz session_start(); albo nie dochodzi do linii z $_SESSION['u_id']=$id; albo przy np odświeżeniu zastępujesz $_SESSION['u_id'] wartością "" jedno z trojga, nie widzę innej możliwości... ;p

Przy linii $_SESSION['u_id']=$id; daj jakieś echo 'TUTUTUTU'; i sprawdź czy ten kod jest używany z $id o wartości ""...
freemp3
Właśnie w tym sęk, że dochodzi do tej linij :/ Zmienne też są dobrze przekazywane :/ Co najdziwniejsze to to, że po wpisaniu echo $_SESSION['u_id']; Wyświetla dobrze nazwę usera :/ Czyli chyba coś musi czyścić te zmienne tylko nie mam zielonego pojęcia co sad.gif
ShadowD
Ten kawałek który nam pokazałeś jest ok, dodawałem sesję i działało nawet po odświeżeniu strony.

Jestem prawie pewien, że w kodzie którego nie udostępniłeś zmieniasz wartość zmiennej $_SESSION['u_id'] zamieniasz na "" lub w ogóle ją usuwasz.

Poszukaj w kodzie czy nie masz nigdzie:
unset($_SESSION['u_id']);
lub
$_SESSION['u_id']=""
czy czegoś w tym stylu.

Jeśli nie znajdziesz nic to pokarz nam cały kod...
freemp3
Matko ale ja jestem ślepy. Machnąłem się w silniku ;/ Zamiast $_SESSION było $SESSION przy warunku sprawdzającym czy zmienna $_SESSION['u_logged'] ma jakąś wartość :/ Tyle czasu gapiłem się w sobotę na ten kod i nie widziałem :/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.