Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] Sprawdzanie poprawności skryptu
Piotrwusek
post
Post #1





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

Ostrzeżenie: (20%)
X----


mam takie coś i mi wyrzuca że nie moge sie zalogować

laguj.php
  1. <?
  2. include("config.php");
  3.  
  4.  mysql_connect(HOST, ROOT, PASS) or die ("Nie masz uprawnien");
  5.  
  6. $name=$_POST['name'];
  7. $haslo=$_POST['haslo'];
  8.  
  9.  
  10.  
  11. if ($_POST['name'] == '') {
  12. echo "<font color=#ff0000>Podaj nick</font>";
  13. }
  14.  
  15.  
  16. if ($_POST['haslo'] == '') {
  17. echo "<font c
  18. olor=#ff0000>Podaj hasło</font>";
  19. }
  20.  
  21.  
  22. $n = mysql_query ("SELECT name FROM zsp3a_uzytkownik WHERE id=1");
  23. while($row1 = mysql_fetch_assoc($n))
  24.  
  25.  
  26.  
  27. $nn = mysql_query ("SELECT haslo FROM zsp3a_uzytkownik WHERE id=1");
  28. while($row2 = mysql_fetch_assoc($nn))
  29.  
  30.  
  31.  
  32. if ($row1 == $name&&$row2 == $haslo)
  33.  
  34.  {
  35. $_SESSION['name'] = $_POST['name'];
  36. $_SESSION['haslo'] = $_POST['haslo'];
  37. echo "<font color=#000000>Zostałeś zalogowany...</font>";
  38. }
  39.  else
  40.  {
  41. echo 'Nie zostałeś zalogowany!';
  42.  }
  43.  
  44.  
  45.  
  46. ?>


formularz.php
  1. <form name="" action="loguj.php" method="post">
  2. Name: <input type="text" name="name" value="" />
  3. Hasło: <input type="password" name="haslo" value="" />
  4. <input type="submit" value="Zaloguj" />


w config.php znajduje sie definicja sałych dotyczących łaczności z bazą

Ten post edytował Piotrwusek 13.07.2007, 21:08:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
maziak
post
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


No coz, wiele nie zrobie, ale powtórze Ci to co napisał UDAT w nieco innej formie, bo wylapal chyba wszystkie bledy. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zmienna $submit na początku, zdaje sie w ogóle nie mieć wartosci.

Nazwa zmiennej w tablicy $_POST jest okreslana przez atrybut name="" formularza. Ty pole formularza odpowiadajacym za haslo (linia 45) nazwales "haslo", a w linii 14 wprawdzasz, czy ustalona jest zmienna "password"(a nie jest, bo jak by miala byc? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ).

Zapytanie do bazy, mogles zalatwic w ten sposob
  1. SELECT name,haslo FROM zsp3a_uzytkownik WHERE id=1

name i haslo - po przecinku, wtedy jedna zmienna(tablica) odwolywala by sie i do hasla i do nazwy uzytkownika.

Zwoja droga, straszny system logowania. Zwlaszcza to where id=1 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
A co jak bedziesz mial dwoch uzytkownikow?(IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Lepiej dac takie zapytanie
  1. <?php
  2. $haslo=htmlspecialchars($_POST['haslo'])
  3. $name=htmlspecialchars($_POST['name'])
  4. SELECT * FROM zsp3a_uzytkownik WHERE name='".$name."' AND haslo='".$haslo."' ";
  5. ?>

I sprawdzić czy wynik takiego zapytania istnieje, czy ma wiecej niz 0 linijek. Jezeli ma - kombinacja haslo i ID - poprawne. Jezeli nie - niepoprawne.

htmlspecialchars zabezpiecza w pewnym stopniu od SQLInjection.

Oraz szczerze - męczysz się z tym skryptem juz od paru dni, zadajac duzo pytan na ktore odpowiedzi nie trzeba wcale szukać. Wystarczylo by zebyc przerobil pare kursow PHP/MySQL, lub kupil sobie ksiazke (Polecam - PHP i MySQL Vadamecum profesjonalisty - Luke Welling, Laura Thomson). Przerobienie kursow zajmie Ci góra pol dnia, a po przerobieniu ich taki skrypt, w wydaniu duzo bardziej profesjonalnym, zajmie Ci gora - drugie pol (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 00:07