Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ponownie $_COOKIE
Forum PHP.pl > Forum > Przedszkole
Neeke
witam.

dzis postanowlem dowartosciowac u ulatwic zycie przyszlym uzytkownikom mojej strony "AUTO LOGOWANIE"
opiera sie ono na sesji i cookie. gdy przeslane dane z formulaza logowania zgadaja sie z danymi w bazie to wtedy powstaje ciasteczko wazne 14 dni. w ciasteczku wszystko jest zapisywane poprawnie tak mi sie wydaje , bo od dzis dopiero zaczolem prace z ciasteczkami.
problem polega w tym gdy uzytkownik wejdzie na strone i w ciastko posiada wpis auto_ == yes wtedy system automatycznie wykonuje dalsze czynnosci lgowaniasamodzielnie. ale problem jest w tym ze przy odczytaniu superglobalnej $_COOKIE['auto_'] system niewidzi tego ciasteczka i pokazuje formulaz logowania . zamieszcze fragment funkcji logowania moze robie blad jezeli tak prosze o pomoc.

  1. <?php
  2. function user_login(){
  3. global $PHP_SELF;
  4.  
  5.  if($_COOKIE['auto_'] == 'yes'){
  6. $pass_ = $_COOKIE['safe'];
  7. $name = $_COOKIE['name'];
  8.  }else{
  9. $pass_ = md5($_POST['k_haslo']);
  10. $name = $_POST['k_login'];
  11.  }
  12.  
  13.  $who = "SELECT id, login, prawa, data_aktywnosci, session_id 
  14.  FROM ".TABLE_ACCOUNT.
  15.  WHERE login='".$name."' 
  16.  AND haslo='".$pass_."' 
  17.  AND autoryzacja='t' LIMIT 1"; 
  18.  $who = mysql_query($who);
  19.  $who2 = mysql_num_rows($who);
  20.  echo $who2.'&nbsp;'. $_COOKIE['safe'].'&nbsp;'.$_COOKIE['name'];
  21.  if($who2==1) {
  22.  
  23. $re = mysql_fetch_array($who);
  24.  // $up_ses = !$re['session_id'] ? '' : ', session_id = '.$session_id().'';
  25. $a = mysql_result(mysql_query("SELECT count(id) as li 
  26. FROM ".TABLE_MESS.
  27. WHERE odbiorca='".$re['id']."' 
  28. AND czytana='n'"),0);
  29. $group = mysql_query("SELECT name FROM ".TABLE_GROUPS." WHERE id='".$re['prawa']."'");
  30. $groups = mysql_fetch_array($group);
  31.  
  32. $_SESSION['user'] = $re['id'];
  33. $_SESSION['name'] = $name;
  34. $_SESSION['prawa'] = $groups['name'];
  35. $_SESSION['last_login'] = $re['data_aktywnosci'];
  36.  
  37. if($_POST['auto']==1){
  38.  
  39.  //$login=md5($re['login']);
  40.  $login=$re['login'];
  41.  setcookie('auto_','yes', time() +(60*60*336),"/","/",0);
  42.  setcookie('name',$login, time() +(60*60*336),"/","/",0);
  43.  setcookie('safe',$pass_, time() +(60*60*336),"/","/",0);
  44. }
  45. $date = MakeDate(time());
  46. $sql = "UPDATE ".TABLE_ACCOUNT." SET data_aktywnosci=now() ".$up_ses." WHERE id='".$re[id]."'";
  47.  or die('BŁĄD -> '.mysql_error());
  48. if($a[li]>=1){
  49.  
  50.  $ax = 'poczta';
  51.  
  52. }else{
  53.  
  54.  $ax = 'profil';
  55.  
  56. }
  57.  
  58.  header("Location: index.php?ord=$ax");
  59.  
  60.  } else {
  61.  
  62. $message="Logowanie nie powiodło się. Prawdopodobnie podałeś(aś) błędne dane. Spróbój ponownie.";
  63. return $message;
  64.  
  65.  }
  66.  
  67. }
  68. ?>


prosze o wyrozumialosc bo to jest pierwsze co z ciasteczkami zaczolem robic .
ps. czytalem manuala i forum tutaj , znalazlem o cookie ale to niewyjasnialo mi w czym zrobilem blad.
Daimos
dobra ale gdzie to wyswietlanie formularza masz?
sprawdz czy faktycznie nie widzi ciasteczka
  1. <?php
  2. print_r($_COOKIE);
  3. ?>
czachor
//@my salsa, lepiej było tego nie pisać :] //dobrze, że tamto usunąłeś winksmiley.jpg

@Neeke - ja bym obstawiał, że coś z domenami w setcookie() masz nie tak. Podaj tylko nazwę, wartość i czas, reszty nie podawaj. I na przyszłość: nie $PHP_SELF, tylko $_SERVER['PHP_SELF'] (odpadają od razu cuda w stylu globa $PHP_SELF).
Daimos
hehe no nie sadzilem ze ktos zdazyl zobaczyc tamte glupoty tongue.gif
ale tutaj kolega Neeke nie zamiescil miejsca gdzie wyswietla sie formularz
tutaj jest tylko instrukcja sprawdzajaca
  1. <?php
  2. if($_COOKIE['auto_'] == 'yes'){
  3. $pass_ = $_COOKIE['safe'];
  4. $name = $_COOKIE['name'];
  5.  }else{
  6. $pass_ = md5($_POST['k_haslo']);
  7. $name = $_POST['k_login'];
  8.  }
  9. ?>

i co by nie bylo, kod wykonuje sie dalej, ale wyswietlania formularza nie widac
Neeke
Ok zrobilem tak jak muwicie. po zostawieniu samych pustych pul wywalilo mi blad Notice: Undefined index: auto_ in D:\VertrigoServ\www\nfoota\config.inc.php on line 55 gdzie linnia 55 to
line55 |if($_COOKIE["auto_"]=='yes'){
line56 | user_login();
line57 |}

a po sprawdzeniu print_r wyskoczylo mi jeszcze cos takiego: Array ( [PHPSESSID] => a9446972fad8fbc20d14b3983718de1d )
zabardzo sie nie orietuj ale domyslam sie ze jednak widzi te cookie
czachor
Ten błąd mówi, że indeks "auto_" nie istnieje w tablicy $_COOKIE. Czyli inaczej mówiąc - ciasteczka nie ma.

Ustawiasz cookie w ten sposób?
  1. <?php
  2. setcookie('auto_','yes', time() +(60*60*336));
  3. ?>


I jeszcze głupie pytanie, ale żeby wszystko wykluczyć... Wiesz, że po ustawieniu cookie jest ono widoczne dopiero po przeładowaniu strony?
Neeke
ustawiam dokladnie w tej chwili mam tak:
setcookie('auto_','yes', time() +(60*60*336),'','','');
setcookie('name',$login, time() +(60*60*336),'','','');
setcookie('safe',$pass_, time() +(60*60*336),'','','');

czachor teraz juz wiem niewiedzialem o tym przeladowaniu
czachor
To sprawdź teraz jeszcze tak jak Ci napisałem, bez tych parametrów.
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.