Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][JavaScript][PHP]Przekierowanie strony
jaca121212
post 12.05.2019, 21:24:28
Post #1





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

Ostrzeżenie: (0%)
-----


Witam, borykam się z problemem z logowaniem Jquery/Ajax metodą POST.
Formularz logowania
  1. echo'<div id="wrapper">';
  2.  
  3. echo'<div id="login_form">';
  4. echo'<h1>Logowanie</h1>';
  5.  
  6. echo'<form method="post" action="" onsubmit="return do_login();">';
  7. echo'<input type="text" name="nick" id="nick" placeholder="Nick">';
  8. echo' <br>';
  9. echo'<input type="password" name="haslo" id="pass" placeholder="Hasło">';
  10. echo'<br>';
  11. echo'<input type="submit" name="logowanie" value="Zaloguj się" id="login_button">';
  12. echo'</form>';
  13. echo'<p id="loading_spinner"><img src="zdjecie spinera"></p>';
  14. echo'</div>';
  15.  
  16. echo'<p id="loading_spinner"><img src="Zdjecie spinera"></p>';

Kod Ajax
Kod
<script type="text/javascript">
function do_login()
{
var nick=$("#nick").val();
var pass=$("#pass").val();
if(nick!="" && pass!="")
{
  $("#loading_spinner").css({"display":"block"});
  $.ajax
  ({
  type:'POST',
  url:'http://localhost/nowywyglad/news/app-request/login.php',
  data:{

  nick:nick,
  haslo:pass
  },
  success:function(response) {
  if(response=="success")
  {
    window.location.href="http://localhost/nowywyglad/news/app-layout/main.php";
  
  }
  else
  {
    
    $("#loading_spinner").css({"display":"none"});
    alert("błąd logowania");
    return false;
  }
  }
  });
}

else
{

$("#wrapper").html("Proszę uzupełnić pole");

}


return false;
}
</script>


Do rzeczy!
Po pierwsze gdy pozostawię pola pustę to przeładowuje się strona (a dokładniej to gdy wchodzę w strukturę html i nie widzę nic w sekcji head w body jest tylko div z ID=wrapper).


Po drugie gdy wpiszę poprawne dane do logowania to wyświetla się komunikat z błędem (alert) gdzie normalnie powinno przekierować mnie na stronę http://localhost/nowywyglad/news/app-layout/main.php (gdy nie jestem zalogowany to przekieruje mnie na stronę główną czyli localhost/nowywyglad/news/index.php)

Jak rozwiązać problem.

Ten post edytował jaca121212 13.05.2019, 12:16:44
Go to the top of the page
+Quote Post
trueblue
post 12.05.2019, 22:31:17
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


1. Skoro wstawiasz taki HTML do id="wrapper" przy niewypełnionych polach, to czemu się dziwisz?
2. Sprawdź co zwraca wywołanie login.php, bo obstawiam, że nie string "success".


--------------------
Go to the top of the page
+Quote Post
jaca121212
post 12.05.2019, 22:44:33
Post #3





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

Ostrzeżenie: (0%)
-----


Jeśli chodzi o punkt 1 to pomogło wyciągniecie tego formularza nad diva wrapper.
Jeśli chodzi o punkt 2 to w pliku login php jest sprawdzane czy pole nick oraz pass czy nie są pustę jeśli nie to wtedy zostaje zapytanie wysłane do bazy o sprawdzenie usera czy jest taki w bazie czy poprawne podaje nick oraz hasło jeśli tak to jest sesja przekazywana do pliku success i on dopiero przekierowuje na właściwą stronę.

(jeżeli o to chodziło)
Go to the top of the page
+Quote Post
trueblue
post 13.05.2019, 07:05:05
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Plik login.php ma zwrócić string "success" w przypadku poprawnego zalogowania. Tylko i wyłącznie ten string.


--------------------
Go to the top of the page
+Quote Post
jaca121212
post 13.05.2019, 09:41:47
Post #5





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

Ostrzeżenie: (0%)
-----


Jak to sprawdzić?
Go to the top of the page
+Quote Post
viking
post 13.05.2019, 09:45:11
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Tam gdzie wstawiłeś zdjęcie, klikasz 4 zakładkę odpowiedź. Ale źle się do tego zabierasz trochę. Już pomijam że jakieś stare jquery (success zostało usunięte na rzecz jednolitych promise) to poczytaj https://prophp.pl/advice/show/17/jak_przygo...dan_xhr_json%3F


--------------------
Go to the top of the page
+Quote Post
jaca121212
post 13.05.2019, 10:28:19
Post #7





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

Ostrzeżenie: (0%)
-----


Wygląda to tak
Go to the top of the page
+Quote Post
viking
post 13.05.2019, 10:43:24
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Jak widzisz zwracasz calutką stronę logowania a nie konkretną odpowiedź.


--------------------
Go to the top of the page
+Quote Post
jaca121212
post 13.05.2019, 11:59:36
Post #9





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

Ostrzeżenie: (0%)
-----


Zmieniłem w ten sposób
Kod
  <script>
        $(function() {
            $('#login').on('submit', function(event) {
                event.preventDefault();
          var nick=$("#nick").val();
          var pass=$("#pass").val();
if(nick!="" && pass!="")
{      
                $("#loading_spinner").css({"display":"block"});
                $.ajax({
                    url: "http://localhost/nowywyglad/news/app-request/login.php",
                    method: "POST",
                     data:{
                      nick:nick,
                      haslo:pass
                    }
                  })
                  .done(function(data, textStatus, jqXHR) {
                      window.location.href="http://localhost/nowywyglad/news/app-layout/main.php";
                  })
                  .fail(function(jqXHR, textStatus, errorThrown) {
                      $('#wrapper').text("błąd logowania");
                      $("#loading_spinner").css({"display":"none"});
                      return false;
                  });
}else
{
                $("#wrapper").text("Proszę uzupełnić pole");
                return false;
}                
            });
        });
    </script>

i jest problem bo jeśli wpiszę nie poprawne hasło czy nick to zamiast wyświetlić tekst to przeładowuje stronę oraz gdy jak wpiszę hasło i login poprawne to także przeładowuje stronę i przekierowuje mnie na wskazany adres .done(); ale mam wrażenie że nie jest to wysyłane metodą POST tylko GET

Ktoś pomoże w rozwiązaniu problemu.

Ten post edytował jaca121212 13.05.2019, 12:15:45
Go to the top of the page
+Quote Post
nospor
post 13.05.2019, 12:02:27
Post #10





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Czy naprawde kazdy KOD musisz wkladac w tag MANUAL? Jaki to ma sens? Do kodu masz tag np. CODE albo PHP dla kodu php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jaca121212
post 13.05.2019, 21:17:47
Post #11





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 13.05.2019, 13:02:27 ) *
Czy naprawde kazdy KOD musisz wkladac w tag MANUAL? Jaki to ma sens? Do kodu masz tag np. CODE albo PHP dla kodu php

Już poprawiam

Ostatecznie zrobiłem w ten sposób
  1. <?php
  2. if(isset($_SESSION['succes-user'])){
  3.  
  4. unset ($_SESSION['succes-user']);
  5. }
  6. if(isset($_SESSION['zalogowany']) && isset($_SESSION['zalogowany']) == true)
  7. {
  8.  
  9. header('Location: <a href="http://localhost/nowywyglad/news/app-layout/main.php&#39%3b%29;" target="_blank">http://localhost/nowywyglad/news/app-layout/main.php');</a>
  10. }
  11. else
  12. {
  13.  
  14. }
  15.  
  16. if(isset($_SESSION['error-registr'])){
  17. echo $_SESSION['error-registr'];
  18. unset ($_SESSION['error-registr']);
  19. }
  20. if(isset($_SESSION['error-register-visit'])){
  21. echo $_SESSION['error-register-visit'];
  22. unset ($_SESSION['error-register-visit']);
  23. }
  24. if(isset($_SESSION['wylogowanie'])){
  25. echo $_SESSION['wylogowanie'];
  26. unset ($_SESSION['wylogowanie']);
  27. }
  28. if(isset($_SESSION['error-str-nick'])){
  29. echo $_SESSION['error-str-nick'];
  30. unset ($_SESSION['error-str-nick']);
  31. }
  32. if(isset($_SESSION['error-filter-mail'])){
  33. echo $_SESSION['error-filter-mail'];
  34. unset ($_SESSION['error-filter-mail']);
  35. }
  36. if(isset($_SESSION['error-lenght-nick'])){
  37. echo $_SESSION['error-lenght-nick'];
  38. unset ($_SESSION['error-lenght-nick']);
  39. }
  40. if(isset($_SESSION['error-str-password'])){
  41. echo $_SESSION['error-str-password'];
  42. unset ($_SESSION['error-str-password']);
  43. }
  44. if(isset($_SESSION['error-duble-password'])){
  45. echo $_SESSION['error-duble-password'];
  46. unset ($_SESSION['error-duble-password']);
  47. }
  48. if(isset($_SESSION['error-mail'])){
  49. echo $_SESSION['error-mail'];
  50. unset ($_SESSION['error-mail']);
  51. }
  52. if(isset($_SESSION['error-nick'])){
  53. echo $_SESSION['error-nick'];
  54. unset ($_SESSION['error-nick']);
  55. }
  56. if(isset($_SESSION['error-nick'])){
  57. echo $_SESSION['error-nick'];
  58. unset ($_SESSION['error-nick']);
  59. }
  60. if(isset($_SESSION['error'])){
  61. echo $_SESSION['error'];
  62. unset ($_SESSION['error']);
  63. }
  64. if(isset($_SESSION['succes-add-user'])){
  65. echo $_SESSION['succes-add-user'];
  66. unset ($_SESSION['succes-add-user']);
  67. }
  68. if(isset($_SESSION['blad-wylogowanie'])){
  69. echo $_SESSION['blad-wylogowanie'];
  70. unset ($_SESSION['blad-wylogowanie']);
  71. }
  72. if(isset($_SESSION['blad-usera'])){
  73. echo $_SESSION['blad-usera'];
  74. unset($_SESSION['blad-usera']);
  75. }
  76. if(isset($_SESSION['blad-haslo'])){
  77. echo $_SESSION['blad-haslo'];
  78. unset($_SESSION['blad-haslo']);
  79. }
  80. if(isset($_SESSION['blad-logowania'])){
  81. echo $_SESSION['blad-logowania'];
  82. unset($_SESSION['blad-logowania']);
  83. }
  84. if(isset($_SESSION['blad-nick'])){
  85. echo $_SESSION['blad-nick'];
  86. unset($_SESSION['blad-nick']);
  87. }
  88. ?>

  1. <head>
  2. <meta charset="UTF-8">
  3. <link rel="stylesheet" type="text/css" href="app-css/main.css">
  4. <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
  5. </head>
  6. $(function() {
  7. $('#login_button').on('submit', function(event) {
  8. event.preventDefault();
  9. var nick=$("#nick").val();
  10. var pass=$("#pass").val();
  11. $.ajax({
  12. url: "http://localhost/nowywyglad/news/app-request/login.php",
  13. method: "POST",
  14. data:{
  15. nick:nick,
  16. haslo:pass,
  17. }
  18. })
  19. .done(function() {
  20. window.location.href="http://localhost/nowywyglad/news/app-layout/main.php";
  21. })
  22. .fail(function() {
  23. $("#wrapper").text("Proszę uzupełnić pola.");
  24. })
  25. .always(function() {
  26. $("#loading_spinner").css({"display":"block"});
  27. });
  28. });
  29. });
  30. </script>
  31. <body>
  32. <header>
  33. <nav>
  34. <ul>
  35. <li><a href="http://localhost/nowywyglad/news/app-layout/main.php">Start</a></li>
  36. <li id="login"><a href=""></a>Logowanie</li>
  37. <li id="add-user"><a href=""></a>Rejestracja</li>
  38. <li><a href="">Kontakt</a></li>
  39. </ul>
  40. </nav>
  41. </header>
  42. <section>
  43. <h1>Logowanie</h1>
  44. <form method="post" id="login_button">
  45. <input type="text" name="nick" id="nick" placeholder="Nick">
  46. <input type="password" name="haslo" id="pass" placeholder="Hasło">
  47. <input type="submit" name="logowanie" value="Zaloguj się">
  48. </form>
  49. <p id="loading_spinner"><img src="https://loading.io/spinners/rolling/lg.curve-bars-loading-indicator.gif"></p>
  50. <div id="wrapper"></div>
  51. </section>
  52. <footer>&copy 2017</footer>
  53. </body>
  54. </html>


A tak na marginesie można przechwycić sesssion z komunikatem o błędzie np tak
Kod
<script>
.....
.fail(function() {
$("#wrapper").text("[b]Tutaj umieścić komunikat  przechwycony z session o błędzie[/b]");


})
.....

</script>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 17:15