Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]logowanie
Forum PHP.pl > Forum > Przedszkole
mattii
mam taki kod do logowania

  1. <?php
  2. require_once 'dbconnect.php';
  3.  
  4.  
  5.  
  6.  
  7. if (isset($_SESSION['userSession'])!="") {
  8. header("Location: home.php");
  9. }
  10.  
  11. if (isset($_POST['btn-login'])) {
  12.  
  13. $email = strip_tags($_POST['email']);
  14. $password = strip_tags($_POST['haslo']);
  15.  
  16. $email = $DBcon->real_escape_string($email);
  17. $password = $DBcon->real_escape_string($password);
  18.  
  19. $query = $DBcon->query("SELECT idUser, email, haslo FROM User WHERE email='$email'");
  20.  
  21.  
  22.  
  23. $row=$query->fetch_array();
  24.  
  25. $count = $query->num_rows; // if email/password are correct returns must be 1 row
  26.  
  27. if (password_verify($password, $row['haslo']) && $count==1) { -------- tutaj jest warunek if'a, ktory sprawdzam ponizej poprzez echo $row['haslo'], "a", $password, "b", $count,"c"; i się zgadza wszystko kazda zmienna wynosi 1
  28. $_SESSION['userSession'] = $row['idUser'];
  29. header("Location: home.php");
  30. } else {
  31.  
  32. // echo $row['haslo'], "a", $password, "b", $count,"c";
  33.  
  34. $msg = "<div class='alert alert-danger'> &nbsp; Zły user lub pass !
  35.  
  36.  
  37.  
  38. </div>";
  39. }
  40. $DBcon->close();
  41. }
  42. ?>



-------- powyższy warunek if'a, ktory sprawdzam ponizej poprzez echo $row['haslo'], "a", $password, "b", $count,"c"; i się zgadza wszystko kazda zmienna wynosi 1

ale od razu przerzuca do elsa i dostaje informacje Zły user lub pass ! - całe popołudnie na to patrzę i już nie widzę błędu..ale dalej coś nie działa.
viking
  1. isset($_SESSION['userSession'])!=""

true/false!="" - co to za warunek?

Sprawdź var_dump($count); co zwraca. A jeśli $row['haslo'] == 1 to słabo.
mattii
var_dump($count) zwraca:


int(1) - jesli poprawne dane logowania

int(0) - jesli niepoprawne

po małej przeróbce


  1. $pasuje= password_verify ($password, $row['haslo']);
  2.  
  3. if ($pasuje && $count==1) ...


var_dump($pasuje)-- zawsze zwraca false..?
viking
Skoro się hasła nie zgadzają to chyba wiesz gdzie szukać problemu?
mattii
problemem było, że ta funkcja współpracuje z hashed_password, a ja na dodatek w bazie mialem stirnga 45 znaków tylko wiec moglem szukac i szukac w kodzie...


ale cos jest nie tak, bo teraz juz loguje, ale po wykonaniu warunku ifa powinien:

  1. {
  2. $_SESSION['userSession'] = $row['idUser'];
  3. header("Location:home.php");
  4. }


przeniesc na strone home.php


a tu firefox wyrzuca blad:

Nieprawidłowe przekierowanie

Firefox wykrył, że serwer przekierowuje żądanie tego zasobu w sposób uniemożliwiający jego ukończenie.

Problem ten może się pojawić w wyniku zablokowania lub odrzucenia ciasteczek.

i nawet nie moge wrocic z powrotem na index.php... musze wyczyscic pamiec podreczna i ciasteczka i wtedy dopiero index.php dziala



viking
Poprawiłeś tego ifa? Jakie masz przekierowania w home?
mattii
nie nie poprawiałem ifa.

w homie taeraz sa przekierwoania (bo dodałem uzytkownika z uprawnieniami admina jeszcze):

  1. if ((isset($_SESSION['userSession'])) && ($_SESSION['userSession']==true))
  2. {
  3. if ($_SESSION['admin'] == 1)
  4. {
  5. header('Location: admin.php');
  6. exit();
  7. }
  8.  
  9. }


problem , że nie kierował mnie już rozwiązałem,


miałem:

  1.  
  2. {
  3. $_SESSION['userSession'] = $row['idUser'];
  4. header("Location:home.php");
  5. }
  6.  


na końcu dodałem

  1. exit();



i teraz działa jak trzeba.

przyznam szczerze, że nie wiem czy słusznie i dla czego bez tego exita nie działało..
viking
header nie kończy wykonywania skryptu. Ustawia tylko nagłówek.
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.