Loading:


Jak zrobić logowanie na stronie z wykorzystaniem PHP, MySQL oraz Ajax

Skrypt przedstawia w jaki sposób można zrobić bardzo wydajne logowanie dzięki wykorzystaniu Ajax.

W poprzednim skrypcie pokazałem w jaki sposób można zrobić formularz rejestracyjny [ zobacz artykuł ]

Treraz napiszemy do niego formulaż umożliwiający zalogowanie się.

Pliki skryptu:

prototype.js dostępny tutaj do pobrania [ Pobierz ]

logowanie.js - zawiera funkcje obsługi ajax oraz walidacji formularza

logowanie.php - zawiera formularz logowania

log_ajax.php - odpowiada za wykonania zapytania do bazy i odpowiedź.

Dalsza czê¶æ: 1 2 3 4 5

Napisz Artyku³

Listing







Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
Witam ! A co należy zmienić bądź dopisać żeby jeszcze była opcja WYLOGUJ ?
autor: Mariusz | 162 | 2009-04-15 15:38:22


zrób plik logout.php, zrób link do niego, a w jego treści:
autor: Igor | 165 | 2009-04-16 12:51:14


hmm... jak dla mnie ten skrypt jest wadliwy... dodałem skrypt rejestracji który był podany w innym artykule potem dodałem ten skrypt ale chciałem zobaczyć czy działa i w login i hasło zmyśliłem dane i odziwo zalogowało chociaż w bazie takiego użytkownika nie było...
autor: Matiuseq | 232 | 2009-05-29 23:05:29


Skrypt jest ok jeśli macie poprawną instalacje, możliwe ze podczas złego wykonania SQL linia kodu którą padam poniżej może zalogować, ale to nie wina kodu a wasza podczas instalowania. Poniżej daje kod który będzie odporny na wadliwe zapytanie:
  • Zobacz kod dodany do tego wpisu
    • //To obecna linia

      if(!isset($ile_znalezionych)){
      echo '1';
      }else{
      $_SESSION['zalogowany'] = $login;
      echo $_SESSION['zalogowany'];
      }


      //zmieńcie na:
      if($ile_znalezionych==1){
      $_SESSION['zalogowany'] = $login;
      echo $_SESSION['zalogowany'];
      }else{
      echo '1';
      }
autor: Igor | 234 | 2009-05-30 12:03:57


teraz to w ogóle nie chce logować mimo tego że podczas rejestracji dodaje użytkownika do bazy danych ale coś nie może go pobrać danych... nie wiem czemu też się nad tym zastanawiałem... robiłem wszystko według kroków i raczej błędu żadnego nie zrobiłem...
autor: Matiuseq | 236 | 2009-05-31 00:29:07


Dobra działa :) Dzisiaj sprawdziłem jeszcze raz... po pierwsze przy stworzonym koncie złe hasło dawałem (inne niż przy rejestracji) a po drugie po dodaniu tego do log_ajax.php nie odświeżyło pliku i ładowało jeszcze stare zapisy.. teraz jest ok. Dizęki
autor: Matiuseq | 237 | 2009-05-31 11:59:42


komunikat błędu: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\usr\krasnal\www\Nowe\rejestracja\logowanie.php:7) in C:\usr\krasnal\www\Nowe\rejestracja\logowanie.php on line 16 Logowanie bez podmiany czesci kodu udane na kazde dowolne haslo, zas po zmianie kodu komunikat ze uzytkownik nie istnieje w bazie.
autor: oun | 293 | 2009-06-28 01:24:48


zobacz czy w sql masz tego użytkownika możliwe ze podczas rejestracji nie został utworzony.
autor: Igor | 294 | 2009-06-28 15:25:30


Skrypt rejestracji działa prawidłowo choć nie zawsze maile aktywacyjne wychodzą ale mniejsza o to. Użytkownicy dodani prawa aktywacji (act) dodane (z linku albo bezpośrednio w bazie), a mimo to szopki jak powyżej opisałem. Przeszukałem internet odnośnie błędu "Cannot send session cookie" i nie znalazłem skutecznego rozwiązania.
autor: oun | 296 | 2009-06-28 17:14:28


Sesja musisz odpalić przez wysłaniem jakiegokolwiek nagłówka tzn. ze odpalasz go jako pierwsza rzecz nic przed nim nie mozesz odpalić bo wywali ci taki błąd.
autor: Igor | 298 | 2009-06-28 19:06:45


Tyle że mam "goły" kod który napisałeś i nic więcej, skąd więc ten błąd?
autor: oun | 299 | 2009-06-28 19:13:09


Skrypt po wielu dociekaniach działa. Będę wdrażał go w kolejnych etapach stojej stronki. Mam jeszcze dwa pytania, a bardziej prośbę. Po zalogowaniu do systemu widnieje sformułowanie: "Zostałeś zalogowany jako: DJMinner. Dziękujemy". Dwie sprawy: 1. Nie dałoby rady dopisać tam opcji wyloguj? Za bardzo nie wiem jak to zrobić 2. W jaki sposób auto-przekierować stronę, z domyślnej pod wskazaną w taki sposób ażeby podzielić serwis na dwie części - dla zalogowanych i nie zalogowanych. Dziękuję za ewentualną pomoc.
autor: Kundzio | 307 | 2009-07-02 21:58:04


skrypt wylogowania masz w komentarzach powyżej. a aby sprawdzić czy user jest zalogowany robisz tak:
  • Zobacz kod dodany do tego wpisu
    • <?php
      if($_SESSION['zalogowany']){
      //totaj dajesz to co ma widzieć zalogowana osoba
      echo 'Witaj to twój panel';
                  }else{
                  //tutaj to co ma mieć niezalogowana
      echo 'Jesteś nie zalogowany';
      }
      //zapisuje to np jako twoj_panel.php
      ?>
                   
       
autor: igor | 309 | 2009-07-02 23:17:55


1. Dlaczego przsy podaniu złych danych do panelu logowania również mnie loguje i wywala taki bład Zosta?e? zalogowany jako: Parse error: syntax error, unexpected $end in /home/teststrony/public_html/log_ajax.php on line 26 . Dzi?kujemy 2. Jak wpisze ten skrypt który sprawdza czy uźytkownik jest zalogowany to zawsze pisze mi że jestes nie zalogowany
autor: Kolo | 340 | 2009-07-13 19:46:42


Witam jak dodać aby na stronie głównej wyświetlał się nick zalogowanej osoby ??
autor: Edward | 350 | 2009-07-15 17:23:29


Tak:
autor: Igor | 352 | 2009-07-15 19:07:43


Jeszcze 1 pytanie, dało by się do tego dodać opcje zmiany i przypomnienie hasła ??
autor: Edward | 353 | 2009-07-16 07:57:54


Kod przypomnienia hasła jest podany w artykule rejestracja w komentarzach.
autor: Igor | 358 | 2009-07-16 14:37:55


Mi również loguje sie pod każdym loginem i hasłem, z tymże wówczas pisze, że zalogowany jestem jako 1. Gdy podam jakies istniejace konto to wszystko gra. Tak więc dobrze zwraca echo '1' w log_ajax, i doszedłem do wniosku, że chyba cośnie tak jest w tym fragmencie: if(text.responseText=='1'). Nie dałoby się go czymś zamienić?
autor: asd | 427 | 2009-08-21 22:36:12


Igor pomóż, zrobiłem wszystko jak należy, ale przy logowaniu wyskakiwało mi Zostałes zalogowany jako: 1 Na polecenie kolegi wstawiłem kawałek kodu w ten twój i taka różnica że nie pojawia sie już 1...: Zostałes zalogowany jako: aaa i loguje sie obojętnie co wpisze :/
  • Zobacz kod dodany do tego wpisu
    • $zapytanie = "select login from uzytkownicy WHERE login='$login' and haslo=sha1('$haslo') and act='1'";

      //odtąd

      $log="";
      foreach(query($zapytanie) as $a => $b){
      $log.=$a.'=>'.$b.'<br>';
      }
      die($log);

      // dotąd

      $wynik = $db->query($zapytanie);
autor: Roslina | 438 | 2009-08-26 19:43:28


To ze pojawia ci się 1 to dobrze bo to odp dla ajax ze zalogowanie nie powiodło się ten skrypt kolegi to po prostu rozwala i loguje na cokolwiek.
  • Zobacz kod dodany do tego wpisu
    •    if(!isset($ile_znalezionych)){
              echo '1';
              }else if($ile_znalezionych=='1'){
              $_SESSION['zalogowany'] = $login;
              echo $_SESSION['zalogowany'];
              }else{
                echo '1';
              }

       
autor: igor | 440 | 2009-08-26 20:03:28


No i ok, wyświetla mi sie "Zostałes zalogowany jako: 1" ale chyba powinno wyświetlić mój nick nie?
autor: Roslina | 442 | 2009-08-26 22:12:44


hmm, skoro logowanie sie nie powiodło to co jest nie tak? jak to naprawić ;>
autor: Roslina | 443 | 2009-08-26 22:19:29


zobacz ten kod poniżej
  • Zobacz kod dodany do tego wpisu
    • <?php
      session_start();
      function lacz_bd()
      {  
        $db = new mysqli('localhost', 'uzytkownik', 'haslo', 'nazwa_bazy');    
          if (! $db)
            return false;
         $db->autocommit(TRUE);
         return $db;
      }

      if(!empty($_POST['login'])){
      $login = addslashes($_POST['login']);
      $haslo = addslashes($_POST['haslo']);
      $db = lacz_bd();
      $zapytanie = "select login from uzytkownicy WHERE login='$login' and haslo=sha1('$haslo') and act='1'";
      $wynik = $db->query($zapytanie);
      $ile_znalezionych = $wynik->num_rows;
              if($ile_znalezionych=='1'){
              $_SESSION['zalogowany'] = $login;
              echo $_SESSION['zalogowany'];
                      exit();
                      }elseif(!$ile_znalezionych){
              echo '1';
                      exit();
                      }else{
                      echo '1';
                      exit();
                      }
      }

      ?>
       
autor: igor | 444 | 2009-08-26 23:13:46


Dalej to samo :( Zostalem zalogowany jako 1 no i obojetnie co wpisze to jest tak samo :/
autor: Roslina | 445 | 2009-08-27 01:04:38


Błąd musisz mieć w obsłudzie JavaScript zainstaluj fierbug i zobacz co się tam dzieje
autor: igor | 446 | 2009-08-27 13:10:32


A gdzie podaj adres na który ma mnie przenieść po zalogowaniu?
autor: Sebek | 458 | 2009-08-30 11:16:01


Roslina sprawdź sobie ten fragment: haslo=sha1('$haslo') jeśli w bazie nie masz tego pola jako hasło to źle Ci porówna i możesz mieć błąd przez to...
autor: elektrycznydiabel | 5251 | 2010-02-22 21:46:02


wszystko dziala
autor: devils | 12272 | 2011-02-04 15:47:54


czy moze ktos podac przyklad skryptu do edycji np emaila lub loginu?
autor: wushu | 13033 | 2014-11-06 10:13:49


    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors