Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie PHP/Ajax/Jquery
Forum PHP.pl > Forum > PHP
dawix1496
Witam, chciałem zmienić logowanie z typowo php/mysql na php/jquery aby było bardziej dynamiczne, jestem początkujący w jquery i ajaxie więc chciałem przerobić gotowy skrypt z internetu i problem pojawia się przy próbie sprawdzenia czy hasło jest bazie danych. Jeżeli nie sprawdzam hasła to skrypt działa dalej i przenosi mnie na podaną stronę, ale jak tylko chce sprawdzić hasło to po wpisaniu w formularz złego hasła pokazuje że hasło zostało źle wpisane ale jak wpisze dobre to skrypt przestaje działać po prostu nic nie robi.
Odrazu piszę czemu tak namieszane w kodzie: jak chciałem pobrać dane z tablicy $data to skrypt wogóle nie działał.
Kod php:
  1. <?php
  2.  
  3.  
  4. $textMessages = [
  5. 0 => 'Uzupełnij wszystkie pola formularza',
  6. 1 => 'Wpisz poprawny adres E-mail.',
  7. 2 => 'Wpisz poprawne dane.',
  8. 3 => 'Za chwilę zostaniesz przekierowany.',
  9. 4 => 'Nie wysłano formularza.',
  10. 5 => 'Złe hasło'
  11. ];
  12.  
  13.  
  14. $data = array_map('trim', $_POST);
  15. $data = array_map('strip_tags', $_POST);
  16. $data['password'] = hash('sha256', $data['password']);
  17. dbcon("xxx","xxx","xxx","xxx");
  18. $zapmail = "SELECT email FROM users WHERE email = '".mysql_real_escape_string($_POST['email'])."'";
  19. $querymail = mysql_query($zapmail) or die(mysql_error());
  20. $haslo = $_POST['haslo'];
  21. $hash = hash('sha256', $haslo);
  22. $zaphash = "SELECT id FROM users WHERE haslo = '".mysql_real_escape_string($hash)."'and email='".mysql_real_escape_string($_POST['email'])."'";
  23. $queryhash = mysql_query($zaphash) or die(mysql_error());
  24. if(isset($_POST) && $data['action'] == 'login')
  25. {
  26. if (empty($data['email']) || empty($data['password'])) {
  27. $array = [false, $textMessages[0]];
  28. }
  29. elseif (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
  30. $array = [false, $textMessages[1]];
  31. }
  32. elseif (mysql_num_rows($querymail) === 0){
  33. $array = [false, $textMessages[1]];
  34. }
  35. elseif (mysql_num_rows($queryhash) === 0){
  36. $array = [false, $textMessages[5]];
  37. }
  38. else {
  39. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  40. $_SESSION['email'] = $data['email'];
  41. $_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
  42.  
  43. $array = [true, $textMessages[3]];
  44. }
  45. } else {
  46. $array = [false, $textMessages[4]];
  47. }
  48.  
  49. echo json_encode($array);
  50. ?>

Plik JS
  1. // JavaScript Document
  2. function redirect(to, delay) {
  3. window.setTimeout(function () {
  4. window.location.href = to;
  5. }, delay);
  6. }
  7.  
  8. $('.form').before('<div id="info"></div>');
  9.  
  10. $('.form').on('submit', function (e) {
  11.  
  12. var email = $("#email").val()
  13. ,password = $("#password").val()
  14. ,string = '&email=' + email + '&password=' + password + '&action=login';
  15.  
  16. var request = $.ajax(
  17. {
  18. url: "checker.php",
  19. type: "POST",
  20. datatype: "json",
  21. data: string
  22. });
  23.  
  24. request.done(function (html) {
  25. var array = $.parseJSON(html);
  26.  
  27. if (array[0] == true) {
  28. $('#info').addClass('alert alert-success').text(array[1]);
  29. redirect('my_page.php', 1000);
  30. }
  31. else if (array[0] == false) {
  32. $('#info').addClass('alert alert-error').text(array[1])
  33. }
  34. });
  35.  
  36. e.preventDefault();
  37. });
CuteOne
Przesyłasz 'password', a w zapytaniu sprawdzasz 'haslo'
dawix1496
tak, gdyż jak napisałem jak chciałem pobrać dane z tablicy $data['password'] skrypt wogóle mi nie działał, dlatego nadałem name="haslo" i pobieram dane do sprawdzenia poprzez $_POST['haslo'] jak chciałem pobrać przez $_POST['password'] pokazywało mi błąd 401, nie mam pojęcia dlaczego closedeyes.gif
@Edit:
Teraz poprawiłem dla pewności tak jak napisałeś, teraz już nie pokazuje tego błędu ale i tak skrypt nie działa :/
@Edit2:
Zmieniłem już wszystko na pobieranie wartości z $data, być może wtedy mi skrypt nie działał bo pomyliłem jakąś scieżke, ale dalej jak haslo jest poprawne to nie wykonuje skryptu
Kod php:
  1.  
  2. $data = array_map('trim', $_POST);
  3. $data = array_map('strip_tags', $_POST);
  4. $data['password'] = hash('sha256', $data['password']);
  5. dbcon("xxx,"xxx","xxx","xxx");
  6. $zapmail = "SELECT email FROM users WHERE email = '".mysql_real_escape_string($data['email'])."'";
  7. $querymail = mysql_query($zapmail) or die(mysql_error());
  8. $zaphash = "SELECT id FROM users WHERE haslo = '".mysql_real_escape_string($data['password'])."'and email='".$data['email']."'";
  9. $queryhash = mysql_query($zaphash) or die(mysql_error());
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.