Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Logowanie a sesja
Forum PHP.pl > Forum > Przedszkole
!*!
Formularz, przekierowuje mnie do:

  1. <?php
  2. require_once("connect.php");
  3. require_once("functions.php");
  4.  
  5.  
  6. if(!logon()) {
  7. header('Location: <a href=\"http://localhost/');&#092;" target=\"_blank\">http://localhost/');</a>
  8. exit();
  9. }
  10.  
  11. $userid = $_SESSION['id'];
  12.  
  13. //i tu dalej odczyt właściwa strona itp.
  14. ?>


functions.php wygląda tak:

  1. <?php
  2. function logon() {
  3.  
  4. //czas sesji w sekundach
  5. $intTimeoutSeconds = 300;
  6.  
  7. if(isset($_SESSION['intLastRefreshTime'])){if(($_SESSION['intLastRefreshTime']+$intTimeoutSeconds)<time()){session_destroy(); header('location: <a href=\"http://localhost/');}}&#092;" target=\"_blank\">http://localhost/');}}</a>
  8. $_SESSION['intLastRefreshTime'] = time();
  9.  
  10.  
  11. if(isset($_POST['user']) && isset($_POST['pass'])) {
  12. $login = htmlspecialchars($_POST['user']);
  13. $haslo = md5(htmlspecialchars($_POST['pass']));
  14.  
  15.  
  16. $sprawdzlogin = mysql_query("SELECT id, login, haslo FROM userdata WHERE haslo = '$haslo' AND login = '$login' LIMIT 1");
  17. $wyniksprawdz = mysql_num_rows($sprawdzlogin);
  18.  
  19. if($wyniksprawdz == 0) {
  20. $error=1; 
  21. echo 'Niepoprawne Login lub Hasło'; 
  22.  
  23. }
  24. }
  25.  
  26.  
  27.  if(!isset($_SESSION['logon']) || !isset($_SESSION['login']) || !isset($_SESSION['password']) || !isset($_SESSION['ip'])) {
  28. $error=1; 
  29. }
  30.  
  31. $login = $_SESSION['login'];
  32. $password = $_SESSION['password'];
  33. $ip = $_SESSION['ip'];
  34. if($_SERVER['REMOTE_ADDR'] != $ip) {
  35.  
  36. }
  37.  
  38. if ($error==0) { 
  39. $userid=mysql_fetch_assoc($sprawdzlogin);
  40. $_SESSION['id']=$userid['id'];
  41. $_SESSION['logon'] = 1;
  42. $_SESSION['login'] = $_POST['user'];
  43. $_SESSION['password'] = $_POST['pass'];
  44. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  45.  
  46. }
  47.  
  48.  if($_SESSION['logon'] == "1") {
  49. return 1;
  50. } 
  51. else {
  52. $error=1; 
  53. }
  54.  
  55. }
  56. ?>


Jednak przy logowaniu skrypt wykonuje się bardzo długo, tak jakby się zapętlał... I zabardzo nie wiem dlaczego. W ogóle taki sposób na logowanie jest dobry?
carbolymer
Wyprofiluj kod za pomocą microtime(true) (chodzi mi o porównanie timestampów z odpowiednich fragmentów kodu aby zobaczyć co najbardziej obciąza). Sposób logowania nie jest zły, ja bym obstawiał że najdłużej zajmuje połączenie z bazą. Wyprofiluj go i zobacz co tyle czasu zajmuje.
!*!
A i jeszcze jedno pytanie, można przyspieszyć logowanie, tak jak wyszukiwanie za pomocą indeksowania?
Lejto
Cytat(!*! @ 5.07.2008, 11:28:30 ) *
A i jeszcze jedno pytanie, można przyspieszyć logowanie, tak jak wyszukiwanie za pomocą indeksowania?

ehh, no chyba nie, jak nie masz nabazgrane w kodzie to wszystko ładnie idzie, a u ciebie nie widzę niepotrzebnych linijek
!*!
Ok, za bardzo nie wiem co miał na myśli carbolymer pisząc o wyprofilowaniu danych, wiem jak obliczyć czas wczytywania strony itp. ale wydaje mi się iż też jest to spowodowane łączeniem się z bazą... hmm to może samą bazę mam źle zbudowaną? Obecnie jest tak:

tabela userdata:

Kod
id, login, hasło,mail,telefon,adres


a może lepiej oddzielić i zrobić:

tabela userdata:

Kod
id,login,hasło


oraz tabele reszta:

Kod
mail,telefon,adres


czy to przyniesie lepszy efekt? Tylko skoro jest:

Kod
SELECT id, login, haslo


To nic poza tym nie powinno być przeszukiwane.

EDIT:

heh, zbudowanie bazy tak jak opsiałem jeszcze bardziej spowolania wykonywanie skryptu... Jak można to inaczej zbudować żeby nie było długiego wczytywania przy logowaniu?
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.