Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy problem leży po stronie PHP ?
Forum PHP.pl > Forum > PHP
attimo
Kod wygląda tak:

  1. <?php
  2. if($_POST)
  3. {
  4. $login = $_POST['username'];
  5. $password = $_POST['password'];
  6.  
  7. $polaczenie = mysql_connect('', '', '') or die("brak polaczenia: ".mysql_error());
  8. $baza = mysql_select_db('test',$polaczenie) or exit("nie wybrano bazy, blad". mysql_error());
  9. mysql_query("SET NAMES utf8");
  10. mysql_query("SET CHARACTER_SET utf8_polish_ci");
  11.  
  12. if (mysql_num_rows(mysql_query("SELECT login, password FROM c WHERE login = '".$login."' && password = '".$password."'")) > 0)
  13. {
  14. header("Location: dashboard.php");
  15. }
  16. else
  17. {
  18. $errorMessage = "Złe dane";
  19. }
  20. }
  21. ?>

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  3. <title> Strona gwna </title>
  4.  
  5. <script type='text/javascript' src='jquery-1.3.2.min.js'></script>

[JAVASCRIPT] pobierz, plaintext
  1. <script>
  2. $(document).ready(function() {
  3. $('#errorConsole').hide();
  4. $('form[name=loginForm]').submit(function() {
  5. $.post('ajaxx.php',{username: $('[name=username]').val(),
  6. password: $('[name=password]').val()},
  7. function(data) {
  8. if(data.success)
  9. {
  10. location.href=data.redirect;
  11. }
  12. else
  13. {
  14. $('#errorConsole').html(data.message).fadeIn();
  15. }
  16. }, 'json');
  17. return false;
  18. });
  19. });
  20. </script>
[JAVASCRIPT] pobierz, plaintext


  1. <link rel="stylesheet" href=" style.css " type="text/css">
  2. </head>

  1. <?php echo $errorMessage?>


  1. <div id='errorConsole'></div>
  2. <form method='post' action='/ajax.php' name='loginForm'>
  3. Username:<br />
  4. <input type='text' name='username'/><br />
  5. Password:<br />
  6. <input type='password' name='password'/><br />
  7. <input type='submit' value='login' />
  8. </form>
  9. </body>
  10. </html>


i tutaj kod z ktróym są problemy:
  1. <?php require('lacz.php');?>
  2. <?php
  3. if($_POST)
  4. {
  5. $login = htmlspecialchars($_POST["username"]);
  6. $password = htmlspecialchars($_POST["password"]);
  7.  
  8. if (mysql_num_rows(mysql_query("SELECT login, password FROM c WHERE login = '".$login."' && password = '".$password."'")) > 0)
  9. {
  10. $data['success'] = true;
  11. $data['redirect'] = 'dashboard.php';
  12. }
  13. else
  14. {
  15. $data['success'] = false;
  16. $data['message'] = "zly login lub haslo";
  17. }
  18. echo json_encode($data);
  19. }
  20. ?>



Niestety po kliknięciu w przycisk nic się nie dzieje natomiast gdy dam w warunku np. if(htmlspecialchars($_POST["password"]) == 'test') <= czyli sprawdze jakąś ustaloną wartość to działa poprawnie, ale jak tylko dodam ten drugi to automatycznie przestaje działać. Nie mam pojęcia dlaczego.
Matimor
Osobiście nie polecam funkcji htmlspecialchars (tak na przyszłość) używaj strip_tags() wycina wszystko dokładnie bez żadnych niespodzianek.

Co do tematu submit (input) nie ma przydzielonego name i tak ogólem co to w ogóle jest? if($_POST), od kiedy to się tak robi? tongue.gif

  1. <?php
  2. if(isset($_POST['submit_login']))
  3. {
  4. $login = strip_tags($_POST['username']);
  5. $password = strip_tags($_POST['password']);
  6.  
  7. $polaczenie = mysql_connect('', '', '') or die("brak polaczenia: ".mysql_error());
  8. $baza = mysql_select_db('test',$polaczenie) or exit("nie wybrano bazy, blad". mysql_error());
  9. mysql_query("SET NAMES utf8");
  10. mysql_query("SET CHARACTER_SET utf8_polish_ci");
  11.  
  12. if (mysql_num_rows(mysql_query("SELECT login, password FROM c WHERE login = '".$login."' && password = '".$password."'")) > 0)
  13. {
  14. header("Location: dashboard.php");
  15. }
  16. else
  17. {
  18. $errorMessage = "Złe dane";
  19. }
  20. }
  21. ?>



  1. <input type='submit' name='submit_login' value='Zaloguj' />
attimo
Niestety problem nadal istnieje. 0 reakcji podczas kliknięcia w przycisk przy włączonej obsłudze javascriptu.
thek
Od dawna zajmuje się SQL, ale zapis SELECT ... WHERE coś && coś2 widze pierwszy raz. Zawsze uważałem, że poprawna forma to SELECT ... WHERE coś AND coś2
Dwa to fakt, że powinieneś używać gotowych funkcji przy posyłaniu czegoś od usera do bazy. Tak więc htmlspecialchars, striptags niech sobie i są, ale nie zapominaj, że istnieje coś co pozwoli Ci automatycznie stosować znaki ucieczki -> mysql(i)_real_escape_string, bo tmlspecialchars nie jest w pełni zabezpieczającym bazę. Inna sprawa, że mieszasz wywołania AJAXa ze zwykłymi POST z tego co widzę. AJAX może mieć problem czasem jeśli używasz dla niego POST zamiast przeznaczonego dla niego REQUEST.

Dla kolegi powyżej musze niestety powiedzieć jedną rzecz. AJAX ma taką specyficzną właściwość, że niestety, ale ma tendencje do tego by "nie wiedzieć" jaki guzik go wywołał. Kumpel mi to kiedyś podrzucil jako ciekawostkę gdy pisał panel admina z datatable w jQuery o ile dobrze kojarzę. Porobił tam guziki wewnątrz i... kupa. AJAX nie potrafił połapać się co go wywołało. Jakieś ekwilibrystyki w kodzie pisał, by przechwycić guzik wywołujący go. Gdyby to byl zwykly formularz -> masz rację. Ale to AJAXowy i tu już potrafią być sytuacje dla niektórych nieprzewidziane.
attimo
Trocho to dziwne, bo jak napisałbym takie coś:
if($_POST['username'] == 'test' && $_POST['password'] == 'test')

to wszystko było by dobrze wiec nie rozumiem dlaczego przy waruku z bazą są problemy. Totalnie nielogiczna sprawa. Będe zmuszony odpuścic sobie tego całego ajaxa.
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.