Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Problem z funkcją
Forum PHP.pl > Forum > Przedszkole
Wiesław
Witka!

Mam problem z funkcją zapamiętywania logowania użytkownika. Bogiem w php nie jestem, ale za pomocą manuala udało mi się sklecic system. Teraz do rzeczy. Mam funkcję, która wysyła ciacho jeśli user zaznaczył opcję:
  1. <?php
  2. function auto_login_cookie (){
  3. if (isset($_POST['staylogged']) && $_POST['staylogged'] == 1)
  4. $userid = $_SESSION['userid']; 
  5. $query = mysql_query("SELECT uniqid, username FROM users WHERE userid = '$userid' limit 1") or die ('Error');
  6. $r = mysql_fetch_assoc($query);
  7.  
  8. setcookie("bbuniqueidhash", $r['uniqid'], strtotime("+1 week"));
  9. setcookie("bbusernamehash", md5($r['username']), strtotime("+1 week"));
  10. }
  11. ?>

To działa.


Mam rónież funkcję, która sprawdza to ciacho:
  1. <?php
  2. function auto_login (){
  3. $userid = $_SESSION['userid']; 
  4. $query = mysql_query("SELECT uniqid, username FROM users WHERE userid = '$userid' limit 1") or die ('Error');
  5. $r = mysql_fetch_assoc($query);
  6. if (isset($_COOKIE['bbuniqueidhash']) && $_COOKIE['bbuniqueidhash'] == $r['uniqid'] AND $_COOKIE['bbusernamehash'] && $_COOKIE['bbusernamehash'] == md5($r['username'])){
  7. return is_authed();
  8. } else {
  9. return false;
  10. }
  11. }
  12. ?>


A więc w czym problem, zapytacie? A mianowicie w tym, że za cholere nie wiem jak tę drugą funkcję zastosować. Może dlatego, że rano jest, a ja do 4 kodowałem, ale nie mam pomysłu. Wiem, błacha sprawa, no ale cóżsmile.gif

Tak wygląda funkcja autoryzacji:
  1. <?php
  2. function is_authed()
  3. {
  4.  if (isset($_SESSION['username']) && (md5($_SESSION['username']) == $_SESSION['encrypted_name']))
  5.  {
  6. return true;
  7.  }
  8.  else
  9.  {
  10. return false;
  11.  }
  12. }
  13. ?>


A tak Jej sprawdzanie:
  1. <?php
  2. if (!is_authed())
  3. {
  4.  die ('You are not permitted to view this page, <a href="login.php">click here</a> to login.');
  5. }
  6. ?>


Próbowałem różnych kombinacji. Chyba generalnie powinno być coś takiego:
jeśli są ciacha = funkcja is_authed została spełniona
jeśli ciach nie ma = funkcja is_authed nie została spełniona

Jakieś sugestie? Jestem prawie pewien, że błąd tkwi w tym, że nie potrafię jej zastosować:)

BTW Szukałem na forum, naprawdę:) W ogóle, na większość pytań odpowiedź znalazłem właśnie w wyszukiwarce.

Pozdrawiam
Wiesiu
Gość
Z góry przepraszam za pisanie posta pod postem, ale zauważyłem jeszcze jeden błąd. Mianowicie, ciasteczko jest usuwane po zamknięciu przeglądarki:(

Ma ktoś jakiś pomysł?
sniezny_wilk
  1. <?php
  2. if (isset($_COOKIE['bbuniqueidhash']) && $_COOKIE['bbuniqueidhash'] == $r['uniqid'] AND $_COOKIE['bbusernamehash'] && $_COOKIE['bbusernamehash'] == md5($r['username'])){
  3. return is_authed();
  4. ?>


zgubiłeś jedno isset ? Przy: $_COOKIE['bbusernamehash']
Gość
@sniezny_wilk: Poprawiłem, ale dalej nic nie daje:) To znaczy, sprawdzam sobie w innym pliku te ciacha poprzez:
  1. <?php
  2. if (auto_login()){
  3. echo 'Logowanie działa';
  4. } else {
  5. echo 'Logowaninie nie działa';
  6. }
  7. ?>


I działa dobrze.
Gość
Teraz to w ogóle dziwne. Wszystko testowałem na localu, po wrzuceniu na serwer w ogóle ciacha nie wysyła:/
Gość
Wstawienie
  1. <?php
  2. ?>

też nie powoduje wysłanie ciacha:(
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.