Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy problem leży po stronie PHP ?
attimo
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 6
Dołączył: 23.01.2010

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Matimor
post
Post #2





Grupa: Zarejestrowani
Postów: 287
Pomógł: 10
Dołączył: 22.08.2009

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


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? (IMG:style_emoticons/default/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' />
Go to the top of the page
+Quote Post
attimo
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 6
Dołączył: 23.01.2010

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


Niestety problem nadal istnieje. 0 reakcji podczas kliknięcia w przycisk przy włączonej obsłudze javascriptu.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.
Go to the top of the page
+Quote Post
attimo
post
Post #5





Grupa: Zarejestrowani
Postów: 115
Pomógł: 6
Dołączył: 23.01.2010

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.12.2025 - 00:42