Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ciastka nie wchodzą do pieca :(
Forum PHP.pl > Forum > PHP
aleksanderlech
Witam wszystkich,
starałem się znaleźć rozwiązanie tu na forum, ale albo nikt nie miał takiego problemu, albo nie doszukałem :(

Wygląda to tak:
Napisałem pewien projekcik w php/MySql u siebie na Windzie 98 SE, przetestowałem na serwerze HomeNetu (czyli jakis linux o ile wiem) i zadowolony z siebie przesłałem wszystko klientowi, który powiedział, że nie działa - u klienta jest RedHat.

Konkretnie, klient loguje się na stronę sklepiku i jeśli login i hasło są prawidłowe, to mu się wkłada do pieca ciasteczko zawierające uid, ważne przez 1 godzinę.

Niestety u klienta ciasteczko albo się nie wkłada w ogóle, albo traci ważność np. po 45 sekundach albo po minucie - nie ma reguły.

Czy ktoś z Was spotkał się z takimi objawami?


Będę wdzięczny za sugestie gdzie szukać błędu.

Pozdrawiam

Olek
wirtus
Uruchom to jeszcze raz u sibei na serwerze (HomeNet czy jakos tak), a nastepnie powiedz klientowi zeby z tego sokrzystal.

Jezeli problem sie powtarza rowniez na Twoim serwerze, tzn, ze sa to prawdopodobnie opcje zabezpieczenw jego przegladarce.

Jezeli nie, to napisz nam o tym ohmy.gif)
scanner
To nie jest temat na php Pro.
wirtus
ten fakt to juz w ogole pominę, ale to niestety nie w Naszej gestii lezy....
aleksanderlech
Przeniose sie z problemem na forum php

pozdrawiam
Olek
Seth
Prosze sie nie przenosic samemu winksmiley.jpg Tworzenie dwoch tych samych topicow to naruszenie regulaminu.

Jezeli uznacie, ze dany topic nie pasuje na jakims forum, dajcie znac przez PW do moderatorow.


P.S. Podrzuc kawalek kodu bo tak to mozna szukac przyczyn w fusach od herbaty winksmiley.jpg
aleksanderlech
Oto kod:
oto fragment pliku login.php
Kod
if($submit)

{

$qLogin=mysql_query("select uid, login, status from gklienci where login='$login' and haslo='$password'");

          $value=mysql_fetch_row($qLogin);



          if($value[2]!='N')

          {

                 if(mysql_num_rows($qLogin))

                 {

                      if($login=='admin')

                      {

                          setcookie ("uid", $value[0],time()+3600,'/gadget_adm');

                          header("location:/gadget_adm/index.php");

                      }

                      else

                      {

                          setcookie ("uid", $value[0],time()+3600);

                          header("location:index.php");

                      }

                 }

                 else

                 {

                      $badlogin=1;

                 }

          }

          else

          {

              $nieaktywny=1;

          }

}

?>


A przy każdym wejsciu na strone jest sprawdzane czy bylo logowanie:
Kod
if(!isset($uid))

{

header("location:login.php");

}


Wylogowanie nastepuje w taki sposob:

Kod
  setcookie ("uid", $value[0],time()-3600);

  header("location:index.php");
Seth
Cytat
A przy każdym wejsciu na strone jest sprawdzane czy bylo logowanie:
Kod
if(!isset($uid))

{

header("location:login.php");

}


Mniemam, ze chodzi o to:
[php:1:559c3e9480]if(!isset($_COOKIE['uid']))
{
header("location:login.php");
}[/php:1:559c3e9480]
:?:
aleksanderlech
Dziekuje Wam za odpowiedzi, póki co nic si€ę nie zmieniło - dalej ciacha sie nie kładą.
W tej chwili jest tak, że można projekt uruchomić na serwerze linuxowym i tam działa, na tomiast nie działa na stacjach roboczych w tej samej sieci lokalnej.
Na razie - na sugestie klienta - zrezygnowalem z cookies na rzecz sesji i zobaczymy co z tego wyjdzie.

Pozdrawiam
Olek
spenalzo
A dodaj sobie przed kodem $uid=$_COOKIE["uid"], może to pomoże.
Cudi
Prosta sprawa, u siebie masz register_globals = on a klient ma registr_globals = off. Musisz dostosować skrypt do nowych standardów (zresztą już nie takich nowych). Rozumiem że zmienne $login i $password pochodzą z formularza, więc powinieneś użyć tablicy $_POST.
aleksanderlech
Witam,
w odpowiedzi do postu Cudiego - klient tez ma register_globals na on
juz to przerabialismy.

Teraz zrobilem to tak:
plik login.php (fragment)
Kod
session_start();

session_register("uid");

if($submit)

{

          $qLogin=mysql_query("select uid, login, status from gklienci where login='$login' and haslo='$password'");

          $value=mysql_fetch_row($qLogin);



          if($value[2]!='N')

          {

                 if(mysql_num_rows($qLogin))

                 {

                      if($login=='admin')

                      {

                         $_SESSION['uid'] = $value[0];

                         header("location:/gadget_adm/index.php");

                      }

                      else

                      {

                         $_SESSION['uid'] = $value[0];

                         header("location:/gadget/index.php");

                      }

                 }

                 else

                 {

                      $badlogin=1;

                 }

          }

          else

          {

              $nieaktywny=1;

          }

}

?>


plik header.php (sprawdzany przy kazdym wywolaniu strony)
(fragment)

Kod
session_start();

if(!isset($_SESSION['uid']))

{

header("location:login.php");

}


wylogowanie - plik wyloguj.php
Kod
  session_start();

  session_destroy();

  session_unregister('uid');



  header("location:index.php");


Teraz mam nastepujace watpliwosci:
1. Czy powinienem przekazywac $uid w URL-u?
2. Czy mimo wszystko jakies cookie jest wysylane do klienta czy tez dane o sesji sa przechowywane tylko na serwerze.
3. Przy testach zauważyłem, że po kilku minutach od zalogowania musiałem zalogować się ponownie - przy cookie mogę ustawić ważność np. na godzinę a w przypadku sesji co mogę zrobić?

Pozdrawiam wszystkich

Olek
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.