Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Logowanie...
Forum PHP.pl > Forum > Przedszkole
MateuszS
Mam taki skrypt logowania jak poniżej, niestety cokolwiek nie wpisze w formularzu logowania przeniesie mnie na stronę zastrzeżoną tylko dla userów zalogowanych (panel.php - puki co pusta) Formularz:
  1. Sesje <h1 class="h1">Logowanie</h1> Nazwa Użytkownika:
  2.  
  3. Hasło:
  4.  
  5.  
  6.  
  7. Wpisz nazwę użytkownika oraz hasło aby się zalogować.
Login.php
  1.  
  2. To forum zwariowało.... lol nie da sie nawet zmodyfikować postu.... bo sie caly topic wali...
  3.  
  4. Mam taki skrypt logowania jak poniżej, niestety cokolwiek nie wpisze w formularzu logowania przeniesie mnie na stronę zastrzeżoną tylko dla userów zalogowanych (panel.php - puki co pusta)
  5.  
  6. Formularz:
    1. <html></div></li><li class="li2"><div class="de2"><head></div></li><li class="li1"><div class="de1"> <title>Sesje</title></div></li><li class="li2"><div class="de2"> <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /></div></li><li class="li1"><div class="de1"> <link rel="stylesheet" type="text/css" href="style/style.css" /></div></li><li class="li2"><div class="de2"></head></div></li><li class="li1"><div class="de1"> </div></li><li class="li2"><div class="de2"><body></div></li><li class="li1"><div class="de1"><form action="login.php" method="POST"></div></li><li class="li2"><div class="de2"> </div></li><li class="li1"><div class="de1"><h1 class="h1">Logowanie</h1></div></li><li class="li2"><div class="de2"> </div></li><li class="li1"><div class="de1"><div class="panel"></div></li><li class="li2"><div class="de2"><p class="p1"> Nazwa Użytkownika: </p></div></li><li class="li1"><div class="de1"> <input type="text" size="20" name="login" class="text" maxlength="12" /></div></li><li class="li2"><div class="de2"><p class="p1"> Hasło: </p></div></li><li class="li1"><div class="de1"> <input type="password" size="20" name="haslo" class="text2" maxlength="12" /><br /><br /></div></li><li class="li2"><div class="de2"> <input type="submit" value="Zaloguj" class="submit" /></div></li><li class="li1"><div class="de1"></div></div></li><li class="li2"><div class="de2"> </div></li><li class="li1"><div class="de1"><div class="panel2"></div></li><li class="li2"><div class="de2"><p class="p2"></div></li><li class="li1"><div class="de1">Wpisz nazwę użytkownika oraz hasło aby się zalogować.</div></li><li class="li2"><div class="de2"></p></div></li><li class="li1"><div class="de1"></div></div></li><li class="li2"><div class="de2"> </div></li><li class="li1"><div class="de1"> </div></li><li class="li2"><div class="de2"></form> </div></li><li class="li1"><div class="de1"></body></div></li><li class="li2"><div class="de2"></html>
  7.  
  8. Login.php
  9. [php]
  10. <?php
  11.  
  12. include("baza.php");
  13.  
  14. $_SESSION['login'] = $_POST['login'] = $login;
  15. $_SESSION['haslo'] = $_POST['haslo'] = $haslo;
  16.  
  17. $_SESSION['user'] = 1;
  18.  
  19. echo '<link rel="stylesheet" type="text/css" href="style/style.css" />';
  20. echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />';
  21.  
  22.    $zapytanie = mysql_query("SELECT login,haslo
  23.                              FROM `tabela5`
  24.                              WHERE 'login'=('$login') AND
  25.                                    'haslo'=('$haslo')") or (mysql_error('Blad'));
  26.  
  27. if(isset($_SESSION['login']) or isset($_SESSION['haslo']))
  28. {
  29.    echo '<center><font size="4" face="arial">';
  30.    echo 'Błąd podczas logowania spróbuj ponownie<br />';
  31.    echo '<a href="index.php">Wróć</a>';
  32. }
  33. elseif($zapytanie)
  34. {
  35.    header("Location: panel.php");
  36. }
  37.  
  38. ob_end_flush();    
  39.                                    
  40. ?>


Napisalem ten skrypt bo chcę się nauczyć posługiwać sesjami, których za bardzo jeszcze nie rozumiem. Gdy $zapytanie = mysql_query.... dam pod elseif wtedy pokazuje mi sie pusty ekran. Jezeli taki topic byl to sory ale nie znalazlem.
Grzyw
  1. <?php
  2. $_SESSION['login'] = $_POST['login'] = $login;
  3. $_SESSION['haslo'] = $_POST['haslo'] = $haslo;
  4. ?>


Hmmm... Wg mnie tutaj przypisujesz do tablicy sesyjnej wartości zmiennych z tablicy $_POST, do której przypisujesz puste zmienne $login i $hasło.
Wykonywanie przypisania idzie z prawej strony, czyli u Ciebie:
1) Najpierw zmiennej $_POST['login'] przypisujesz pustą $login,
2) Do zmiennej sesyjnej przypisujesz pustą (patrz punkt 1.) wartość zmiennej $_POST['login']
MateuszS
Zrobiłem tak i teraz co nie wpisze to blad podczas logowania:

  1. <?php
  2. $_SESSION['login'] = $_POST['login'];
  3. $_SESSION['haslo'] = $_POST['haslo'];
  4. $login = $_POST['login'];
  5. $haslo = $_POST['haslo'];
  6. ?>
Grzyw
  1. <?php
  2. if(isset($_SESSION['login']) or isset($_SESSION['haslo']))
  3. ?>


Ale ta linijka mówi "Jeżeli została zainicjowana zmienna login w tablicy sesji lub została zainicjowana zmienna haslo w tablicy sesji to...."
Więc warunek ten jest spełniony i wywala Ci tekst o błędzie logowania.
MateuszS
Dałem tak ale dalej nie dziala:

  1. <?php
  2.  
  3. include("baza.php");
  4.  
  5. $_SESSION['login'] = $_POST['login'];
  6. $_SESSION['haslo'] = $_POST['haslo'];
  7. $login = $_POST['login'];
  8. $haslo = $_POST['haslo'];
  9.  
  10. $_SESSION['user'] = 1;
  11.  
  12. echo '<link rel="stylesheet" type="text/css" href="style/style.css" />';
  13. echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />';
  14.  
  15. if(empty($login) or empty($haslo))
  16. {
  17.    echo '<center><font size="4" face="arial">';
  18.    echo 'Błąd podczas logowania spróbuj ponownie<br />';
  19.    echo '<a href="index.php">Wróć</a>';
  20. }
  21. elseif(!$zapytanie)
  22. {
  23.    echo '<center><font size="4" face="arial">';
  24.    echo 'Błąd podczas logowania spróbuj ponownie<br />';
  25.    echo '<a href="index.php">Wróć</a>';    
  26. }
  27. else
  28. {
  29.    $zapytanie = mysql_query("SELECT login,haslo
  30.                              FROM `tabela5`
  31.                              WHERE 'login'=('$login') AND
  32.                                    'haslo'=('$haslo')") or (mysql_error('Blad'));
  33.    
  34.    header("Location: panel.php");
  35.                                    
  36. }    
  37.  
  38. ob_end_flush();    
  39.                                    
  40. ?>
Grzyw
W linijce 25. sprawdza, czy $zapytanie jest puste. No ale ta zmienna jest pusta, bo przecież definiujesz ją niżej dopiero.
MateuszS
Zawsze mi sie wydawalo ze !$zmienna oznacza cos przeciwnego do $zmienna, jakas niezgodnosc, a nie pustość. No ale spróbowałem jeszcze inaczej:

  1. <?php
  2.  
  3. include("baza.php");
  4.  
  5. $_SESSION['login'] = $_POST['login'];
  6. $_SESSION['haslo'] = $_POST['haslo'];
  7. $login = $_POST['login'];
  8. $haslo = $_POST['haslo'];
  9.  
  10. $_SESSION['user'] = 1;
  11.  
  12. echo '<link rel="stylesheet" type="text/css" href="style/style.css" />';
  13. echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />';
  14.  
  15. if($zapytanie = mysql_query("SELECT login,haslo
  16.                             FROM `tabela5`
  17.                             WHERE 'login'=('$login') AND
  18.                                    'haslo'=('$haslo')")
  19.                                     or (mysql_error('Blad')))
  20. {
  21.    header("Location: panel.php");
  22. }
  23.  
  24. else
  25. {
  26.    echo '<center><font size="4" face="arial">';
  27.    echo 'Błąd podczas logowania spróbuj ponownie<br />';
  28.    echo '<a href="index.php">Wróć</a>';    
  29. }
  30.  
  31. ob_end_flush();    
  32.                                    
  33. ?>


Jednak co nie wpisze przejde znowu do zastrzezonej strefy

a gdy mam

  1. <?php
  2. if($zapytanie)
  3. {
  4.    $zapytanie = mysql_query("SELECT login,haslo
  5.                             FROM `tabela5`
  6.                             WHERE 'login'=('$login') AND
  7.                                    'haslo'=('$haslo')")
  8.                                     or (mysql_error('Blad'));
  9.    header("Location: panel.php");
  10. }
  11. ?>


wywala mi blad podczas logowania zawsze. Moglby ktos zmodyfikowac kod? Ta metoda prob i bledow nie pomaga jednak. Zasob moich pomyslow sie wyczerpal
Grzyw
  1. <?php
  2.  
  3. include("baza.php");
  4.  
  5. $_SESSION['login'] = $_POST['login'];
  6. $_SESSION['haslo'] = $_POST['haslo'];
  7. $login = $_POST['login'];
  8. $haslo = $_POST['haslo'];
  9.  
  10. $_SESSION['user'] = 1;
  11.  
  12. $sql = "SELECT login,haslo
  13.                            FROM `tabela5`
  14.                            WHERE 'login'=('$login') AND
  15.                                   'haslo'=('$haslo')";
  16. $wynik= mysql_query($sql)or (mysql_error('Blad')))
  17. if (mysql_num_rows($wynik)==1)
  18. {
  19.   header("Location: panel.php");
  20. }
  21.  
  22. else
  23. {
  24.   echo '<link rel="stylesheet" type="text/css" href="style/style.css" />';
  25.   echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />';
  26.   echo '<center><font size="4" face="arial">';
  27.   echo 'Błąd podczas logowania spróbuj ponownie<br />';
  28.   echo '<a href="index.php">Wróć</a>';    
  29. }
  30.  
  31. ?>


Powodzenia, ja wychodzę z domu:)
MateuszS
Nie żebym był nie wdzięczny ale to nie działa sad.gif Nadal pokazuje cały czas błąd podczas logowania...

A jak to jest zrobione np na forach, że gdy bierzesz wstecz to Cie nie wylogowuje, zeby zobaczyc panel logowania musisz sie wylogowac.
ikssde
Nie wiem co miałeś osiągnąć tym kodem, według mnie ten będzie poprawny :

Kod
<?php
session_start();
session_register('user');
ob_start();

include("baza.php");

if(!empty($_SESSION['user']))
{
     header("Location: panel.php");
}
else if(!empty($_POST['login']) and !empty($_POST['haslo']))
{
     $login = trim(addslashes($_POST['login']));        // filtrujemy
     $haslo = trim(addslashes($_POST['haslo']));        // filtrujemy
    
     $zapytanie = "SELECT * FROM `user` WHERE login = '$login' and haslo = '$haslo';";    // jesli istnieje w bazie zwroci 1
    
     if(mysql_query($zapytanie))    
     {
         $_SESSION['login'] = $login;
         $_SESSION['haslo'] = $haslo;
         $_SESSION['user'] = 1;
        
         header("Location: panel.php");
     }
}
else
{
   echo '<link rel="stylesheet" type="text/css" href="style/style.css" />';
   echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />';
   echo '<center><font size="4" face="arial">';
   echo 'Błąd podczas logowania spróbuj ponownie
';
   echo '<a href="index.php">Wróć</a>';    
}

ob_end_flush();
?>


Żeby się wylogować musisz $_SESSION['user'] przypisać 0.
MateuszS
Trochę się pomęczyłem i zrobiłem tak:

  1. <?php
  2.  
  3. include("baza.php");
  4.  
  5. $_SESSION['login'] = $_POST['login'];
  6. $_SESSION['haslo'] = $_POST['haslo'];
  7. $login = $_POST['login'];
  8. $haslo = $_POST['haslo'];
  9.  
  10. $_SESSION['user'] = 1;
  11.  
  12. $sql = "SELECT login,haslo
  13.        FROM `tabela5`
  14.        WHERE (login='$login') AND
  15.              (haslo='$haslo')";
  16. $wynik = mysql_query($sql)or (mysql_error('Blad'));
  17.  
  18. if (mysql_num_rows($wynik)==1)
  19. {
  20.  header("Location: panel.php");
  21. }
  22.  
  23. else
  24. {
  25.  echo '<link rel="stylesheet" type="text/css" href="style/style.css" />';
  26.  echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />';
  27.  echo '<center><font size="4" face="arial">';
  28.  echo 'Błąd podczas logowania spróbuj ponownie<br />';
  29.  echo '<a href="index.php">Wróć</a>';    
  30. }
  31.  
  32. ?>


i wylogowanie
  1. <?php
  2.  
  3. echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
  4.      <link rel="stylesheet" type="text/css" href="style/style.css" />';
  5.  
  6.  
  7. header("Location: index.php");
  8.  
  9. ?>


Dzieki Wam za pomoc smile.gif
Grzyw
O, fajnie, że Ci się udało.
Sorry za niedokładność tego mojego kodu, pisałem go na szybko wychodząc z chałupy.
Powodzenia.
MateuszS
Dzięki za pomoc ;] Potem podam link do wyników mojej pracy ;]
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.