Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nie zapisuje ciasteczek
Forum PHP.pl > Forum > PHP
MOniToR
Witam
Już dwie godziny męczę się z tym aby mi skrypt stworzył ciasteczko. Próbowałem "chyba wszystkiego" i nie rozumiem czemu nie tworzy mi mojego ciasteczka. Dziwi mnie to, że w przeszłości bawiłem się ciasteczkami i obeszło mi się bez problemów. Mam funkcję, która jest odpowiedzialna za logowanie się użytkowników, jeżeli został wysłany formularz z zmiennymi POST wtedy zapisuje dane użytkownika do sesji, jeżeli dane użytkownika są w sesji i się zgadzają z danymi w bazie wtedy sprawdza uprawnienia użytkownika.

  1. <?php
  2. function check_user_login($permission) {
  3.    global $txt_wrong_login;
  4.    if(isset($_GET["out"])) {
  5.                  $_SESSION['sec_user_name']='';
  6.                $_SESSION['sec_user_level']='';
  7.                $_SESSION['sec_user_key']='';    
  8.                $_SESSION['sec_user_userid']='';        
  9.               session_destroy();
  10.                echo'<script>window.location="index.php"</script>';
  11.                return False;
  12.    }  
  13.    if(isset($_SESSION['sec_user_name']) && isset($_SESSION['sec_user_level']) && isset($_SESSION['sec_user_key']))
  14.    {
  15.              $query = "SELECT * FROM ".CONF_DB_TABLE_USERS." WHERE name='".$_SESSION["sec_user_name"]."' AND sec_key='".$_SESSION["sec_user_key"]."' AND level='".$_SESSION["sec_user_level"]."'";
  16.           $result = mysql_query($query);
  17.              $count = mysql_num_rows($result);    
  18.              $row = mysql_fetch_array($result);    
  19.              echo mysql_error();    
  20.              if($count>0 && $row["level"]>=$permission && $row["level"]>='0000') {    
  21.              return True;                
  22.              } else {            
  23.            return False;          
  24.              }    
  25.    } else if(isset($_POST['username']) && isset($_POST['password'])) {
  26.              $query = "SELECT * FROM ".CONF_DB_TABLE_USERS." WHERE name='".$_POST["username"]."' AND pw='".$_POST["password"]."'";
  27.           $result = mysql_query($query);
  28.              $count = mysql_num_rows($result);    
  29.              $row = mysql_fetch_array($result);    
  30.              echo mysql_error();    
  31.              if($count>0) {
  32.     /////////////////////////////    W TYM MIEJSCU CHCIAŁBYM UTWORZYĆ COOKIE      
  33.           setcookie("testcookie", "cos");
  34.        ///////////////////////////// W TYM MIEJSCU CHCIAŁBYM UTWORZYĆ COOKIE    
  35.              $_SESSION['sec_user_name']=$_POST['username'];
  36.              $_SESSION['sec_user_level']=$row['level'];
  37.              $_SESSION['sec_user_userid']=$row['id'];    
  38.              $_SESSION['sec_user_key']=$row['sec_key'];                
  39.              $date = date("Y-m-d H:i:s");      
  40.              $query2="UPDATE ".CONF_DB_TABLE_USERS." SET last_login='".$date."' WHERE id='".$row["id"]."'";    
  41.              $result2 = mysql_query($query2);    
  42.              return True;    
  43.              echo'<script>window.location="index.php"</script>';        
  44.              } else {
  45.              echo'<script>alert("'.$txt_wrong_login.'")</script>';    
  46.              return False;
  47.              }            
  48.    } else {
  49.    return False;
  50.    }
  51.    }
  52. ?>


Próbowałem używać setcookie() z wszystkimi parametrami jak i tez tylko z tym, które są wymagane.
Wtyczka Web Developer w Firefoxie pokazuje mi tylko, że tworzy standardowe ciasteczko z ID SESJI.
Problem mam zarówno w FF jak i IE. Mam Vistę i hosting na home.pl.

Co robię źlę lub czego mi brakuje? :/
Z góry dzięki za pomoc.
Weirdo
Upewnij się, że nic nie wychodzi przed setcookie.
Ciasteczka są wysyłane w nagłówkach, więc nie może przed setcookie nic pójść do przeglądatki (żadne echo,print,print_r,var_dump,...).
TrevorGryffits
Wrzuć na początek error_reporting na E_ALL. Może masz problem z headerami jak pisze Weirdo. Sprawdź przy okazji, czy skrypt w ogóle wpada do pętli z tworzeniem setcookie
ndx
Czy napewno dobrze ustawias czas ważności ciasteczka ? To znaczy time()+ czas ważności.

Powiedz co widzisz jak zrobisz:
  1. <?php
  2. setcookie("TestCookie", 'test', time()+3600);
  3. var_dump($_COOKIE);
  4. ?>
MOniToR
Dzięki Panowie za pomoc, problem polegał na tym, że tą funkcję zastosowałem do załadowania bloku w menu gdzie miał się wyświetlać panel logowania czyli tak jak napisaliście przed tym blokiem już trochę kodu html sie załadowało smile.gif
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.