Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Logowanie
Forum PHP.pl > Forum > Przedszkole
potreb
Witam, zrobiłem proste logowanie:
  1. <?php
  2. function alpha_numeric($str)
  3. {
  4. return ( ! preg_match("/^([-a-z0-9])+$/i", $str)) ? FALSE : TRUE;
  5. }
  6.  
  7. function login(){
  8. if(isset($_POST['user']) && isset($_POST['password'])) {
  9. if (!$_POST['user'] || alpha_numeric($_POST['user'])==FALSE)
  10. {
  11. echo 'Login może zawierać jedynie liczby i litery';
  12. } else {
  13. $user = mysql_real_escape_string(strtolower($_POST['user']));
  14. $password = md5(mysql_real_escape_string(strtolower($_POST['password'])));
  15. $sql = mysql_query("SELECT * FROM users WHERE password = '$password' AND user = '$user' LIMIT 1");
  16. $row = mysql_fetch_row($sql);
  17. $rights = $row[4]; 
  18. if(!mysql_num_rows($sql)) {
  19. echo 'Niepoprawne Login lub Hasło';
  20. return FALSE;
  21. } else {
  22. setcookie("login", $password, time()+24*360);
  23. $_SESSION['rights'] = $rights;
  24. $_SESSION['user_login'] = $user;
  25. $_SESSION['user_pass'] = $password;
  26. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  27. return TRUE;
  28. }
  29. }
  30. }
  31.  
  32. if(isset($_COOKIE['login']) && !isset($_SESSION['rights'])){
  33. $password = $_COOKIE['login'];
  34. $sql = mysql_query("SELECT * FROM users WHERE password = '$password' LIMIT 1");
  35. $row = mysql_fetch_row($sql);
  36. $rights = $row[4];
  37. $user = $row[2];
  38. $password = $row[3]; 
  39. if(mysql_num_rows($sql)) {
  40. $_SESSION['rights'] = $rights;
  41. $_SESSION['user_login'] = $user;
  42. $_SESSION['user_pass'] = $password;
  43. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  44. return TRUE;
  45. }
  46. }
  47. }
  48.  
  49. login();
  50. print_r($_SESSION);
  51.  
  52. function loged (){
  53. if(isset($_SESSION['rights']) && $_SESSION['rights']=="1") {
  54. echo "admin<br/>";
  55. echo "<a href='?adminlogout=ok'>aaa</a>";
  56. return TRUE;
  57. } else if(isset($_SESSION['rights']) && $_SESSION['rights']=="2") {
  58. echo "uzytkownik<br>";
  59. echo "<a href='?adminlogout=ok'>aaa</a>";
  60. return TRUE;
  61. } else {
  62. return FALSE;
  63. }
  64. }
  65.  
  66. ?>
  67.  
  68.  
  69.  
  70. <?php
  71.  
  72. if($_GET['adminlogout']=="ok") {
  73. setcookie("login", '', time()-36);
  74. header('location: logowanie.php');
  75. }
  76.  
  77. if(!loged()){
  78. echo '<form method="POST" action="">
  79. <div>Podaj hasło</div>
  80. <div><input type="text" name="user" /></div>
  81. <div><input type="password" name="password" /></div>
  82. <div><input type="checkbox" name="zapamietaj" /> - Zapamiętaj hasło</div>
  83. <div><input type="submit" name="login" value="Zaloguj"/></div>
  84. </form>';
  85. }
  86.  
  87. ?>


Ogólnie trochę namieszane. Dziś jednak cięzko mi idzie myślenie, więc nie wiem czy to ma sens :/

Proszę o jakieś wskazówki lub uwagi.

Z góry dziękuje
marcio
Oprocz tego ze w sesji masz haslo i ze nie filtrujesz zmiennych w sql o tego ze polowa to sesje a druga polowa do cookie i na dodatek nie sprawdzasz czy dane z cookie sie zgadzaja z baza i sesje tez to jest ok...

P.S oczywiscie moge sie mylic ale ja mam calkiem inaczej to zrobione
Xniver
Po co ci funkcja alpha_numeric? Lepiej skorzystać z http://pl.php.net/manual/en/function.ctype-alnum.php
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.