Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie bez przeładowywania strony
Forum PHP.pl > Forum > XML, AJAX > AJAX
grzesi00
Witam,

jestem świeżak, od razu ostrzegam sadsmiley02.gif

Chciałbym stworzyć logowanie z wykorzystaniem advAJAX, które nie przeładowywało by strony.

Mój plik HTML:
  1. <page contentType="text/html" page pageEncoding="UTF-8">
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5.  
  6. <title>Strona Główna</title>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  8. <link rel="stylesheet" href="style.css" type="text/css" />
  9. <script src="./skrypty/advajax.js" type="text/javascript"></script>
  10. <script src="./skrypty/logowanie.js" type="text/javascript"></script>
  11. </head>
  12.  
  13. <body onLoad="zaloguj">
  14. <div id="ramka">
  15. ...
  16.  
  17. <h3 class="loginForm">Panel Logowania:</h3>
  18.  
  19. <br />
  20.  
  21. <form id="loginForm" method="post" action="login.php">
  22.  
  23. <div class="loginForm" id="inputLogin">
  24. <label for="username">Login: </label>
  25. <input id="username" type="text" size="10" />
  26. </div>
  27.  
  28. <div class="loginForm" id="inputHaslo">
  29. <label for="password">Hasło: </label>
  30. <input id="password" type="password" size="10" />
  31. <img src="./grafika/help.ico" onMouseOver="document.getElementById('password').type='text'" onMouseOut="document.getElementById('password').type='password'">
  32. </div><!--inputHaslo-->
  33.  
  34. <div id="buttonZaloguj" align="right">
  35. <input id="eee" type="submit" value="Zaloguj" class="przyciski"/>
  36. </div><!--buttonZaloguj-->
  37. </form>
  38.  
  39. ...
  40. </div><!--ramka-->
  41. </body>
  42. </html>


logowanie.js :
Kod
    function zaloguj(){

        advAJAX.assign(document.getElementById("loginForm"), {
            onInitialization : function(obj) {
            
                obj.parameters["password"] = (obj.parameters["password"]);
                document.getElementById("eee").value = "Prosze czekac...";
                document.getElementById("log").innerHTML = "username: " + obj.parameters["username"] +
                  "<br />password: " + obj.parameters["password"];
            },
            onComplete : function() {
            
                document.getElementById("eee").value = "OK";
            },
            onSuccess : function(obj) {
        alert(obj.responseText);
            
                if (obj.responseText == "1")
                  document.getElementById("log").innerHTML = "ZALOGOWANY";
                else {
                      alert("Nieprawidlowa nazwa uzytkownika lub haslo.");
                      document.getElementById("password").value = "";
                      window.setTimeout("document.getElementById('password').focus();", 100);
                }
            },
            onError : function(obj) {
            
                alert("Nie mozna nawiazac polaczenia z serwerem, spróbuj pózniej.");
            }
        });
    }


  1. <?php
  2. $login = $_POST['username'];
  3. $haslo = $_POST['password'];
  4. if(($login == "poprawny")){ 
  5. echo '1';
  6. }
  7. else{ 
  8. echo '0';
  9. } 
  10. ?>

Na razie chciałem sprawdzać chociaż login czy wpisano: poprawny
Za każdą krytykę na temat jestem oczywiście otwarty winksmiley.jpg

/btw podziękowania do kossy za już naniesione poprawki Rkingsmiley.png
slammer
ja zrobiłęm to w taki sposób, że podaję login i haslo któe wysyłąm zapytaniem do bazy danych. Hasło przy wysyłąniu jest od razu hashowane przez JS. Odpowiedź z serwera jest ciągiem w postaci hasła i loginu, które po odebraniu są porónywane z wcześniej wysłanym zapytaniem do serwera winksmiley.jpg jeśli są identyczne to uzytkownik jest logowany winksmiley.jpg

http://slammer.yum.pl/nudy/

login: demo
hasło: demo

btw. nie podpowiem Ci co do kodu, gdyz nie znam sie na AdvAjax tylko "czystym" ajax winksmiley.jpg\
macza
napisz jak zrobiles to w czystym ajaxiue
revyag
macza, to se podejrzyj źródło js i zobacz.
k0b3
  1. function sojusz() {
  2.      header_img('sojusz');
  3.      doAjax('tresc.php', 'm=sojusz', 'pokaz_tresc', 'get', '0');
  4. }
  5. function news() {
  6.      header_img('news');
  7.      doAjax('tresc.php', 'm=news', 'pokaz_tresc', 'get', '0');
  8. }



Możesz udostępnić kod źródłowy pliku tresc.php questionmark.gif

co się w nim znajduje. Zrzuciełem sobie do siebie ten skrypt i w ogole nie rusza.
  1. function doAjax(url, query, callback, reqtype, getxml) {
  2. ...


wg tej funkcji można obojętnie jaki url zastosować, a jednak jakaś instukcja musi być spełniona w wspomnianym tresc.php smile.gif
Prosze o pomoc...
Pozdrawiam
slammer
tresc.php
  1. <? 
  2. include('cookie.php');
  3. switch ($_GET['m']){
  4. case konto:
  5. include('konto.php');
  6. break;
  7. case db:
  8. include('db.php');
  9. break;
  10. case news:
  11. include('news.php');
  12. break;
  13. case sojusz:
  14. include('sojusz.php');
  15. break;
  16. default:
  17. include('news.php');
  18. break;
  19. }
  20.  
  21. ?>


sojusz.php
  1. <?
  2. print 'sojusz';
  3. ?>


tu nie ma nic skomplikowanego biggrin.gif
print 'sojusz'; czyli zwraca w responsetext ciąg "sojusz"
k0b3
No i właśnie brakowało mi tej instrukcji Case! Wielkie dzięki!
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.