Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]logowanie, cos z sesja?, po kazdym odswiezeniu trzeba sie logowac
-cythrus-
post 6.04.2006, 07:43:10
Post #1





Goście







witam,
generalnie... po dlugich a ciezkich zmaganiach udało mi się zorganizować coś takiego:

  1. <?php // access.php
  2. /* dodanie "<? include 'access.php'; ?>" do nagłówka pliku zabezpiecza strone */
  3.  
  4. include '../lib/common.php'; //zawiera error()
  5. include '../lib/db.php'; // dbConnect(nazwa_bazy)
  6.  
  7.  
  8.  //sprawdza czy login i haslo są dostępne z formularza lub sesji i tworzy $login i 
    $pass
  9. if(isset($_POST['login'])) {
  10. $login = $_POST['login'];
  11. } elseif (isset($_SESSION['login'])) {
  12. $login = $_SESSION['login'];
  13. }
  14. if(isset($_POST['pass'])) {
  15. $pass = $_POST['pass'];
  16. } elseif (isset($_SESSION['pass'])) {
  17. $pass = $_SESSION['pass'];
  18. }
  19.  
  20.  
  21.  //jesli zmienna $login nie istnieje, wyświetla formularz logowania
  22. if(!isset($login)) {
  23. ?>
  24.  
  25. <HTML> <!-- formularz logowania -->
  26. <HEAD>
  27. <TITLE>Logowanie</TITLE>
  28. <STYLE type="text/css">
  29. <!--
  30. BODY, TABLE, FORM { font-size: 8pt; font-family: Arial, Verdana; text-decoration: none }
  31. SELECT, INPUT { font-size: 8pt; font-family: Arial, Courier; text-decoration: none }
  32. -->
  33. </STYLE>
  34. </HEAD>
  35. <BODY>
  36. <B>Musisz się zalogować</B><BR>
  37. <FORM method="post" action="<?=$_SERVER['PHP_SELF']?>">
  38. <TABLE border="0" cellpadding="0" cellspacing="5">
  39. <TR>
  40. <TD alignn="right">Login:</TD>
  41. <TD>
  42. <INPUT name="login" typen="text" maxlenght="16" size="25">
  43. </TD>
  44. </TR>
  45. <TR>
  46. <TD align="right">Hasło:</TD>
  47. <TD>
  48. <INPUT name="pass" type="password" maxlength="100" size="25">
  49. </TD>
  50. </TR>
  51. <TD align="cener" colspan="2">
  52. <INPUT type="submit" value="Zaloguj">
  53. </TD>
  54. </TR>
  55. </TABLE>
  56. </FORM>
  57. </BODY>
  58. </HTML>
  59.  
  60. <?php // i kończy skrypt
  61. }
  62.  
  63.  // jeśli istnieje, to: łączy się z bazą
  64. dbConnect("sklep");
  65.  
  66.  // sprawdza czy login i hasło są poprawne
  67. $sql = "SELECT * FROM admins WHERE login = '$login' AND pass = PASSWORD('$pass')";
  68. $result = mysql_query($sql);
  69. if(!$result) {
  70. error('Błąd komunikacji z listą administratorów');
  71. }
  72.  
  73.  // jeśli nie są, usuwa $_SESSION['login'] i $_SESSION['pass'] i wyświetla 'Brak dostępu'
  74. if(mysql_num_rows($result)==0) {
  75. unset($_SESSION['login']);
  76. unset($_SESSION['pass']);
  77. ?>
  78.  
  79. <HTML> <!-- Brak dostępu -->
  80. <HEAD> 
  81. <TITLE>Brak dostępu</TITLE>
  82. <STYLE type="text/css">
  83. <!--
  84. BODY { font-size: 8pt; font-family: Arial, Verdana; text-decoration: none }
  85. -->
  86. </STYLE>
  87. </HEAD> 
  88. <BODY> 
  89. <B>Brak dostępu</B>
  90. <P>Sprawdź czy poprawnie wpisałeś Login i Hasło</P> 
  91. <A href="javascript:history.go(-1)">powrót</A>
  92. </BODY> 
  93. </HTML>
  94.  
  95. <?php // następnie kończy skrypt
  96. exit; 
  97. }
  98.  
  99.  // natomiast jeśli są poprawne, pobiera pełną nazwę użytkownika
  100. $kto = mysql_result($result,0,'login');
  101. ?>


i prosta stronka

  1. <? include './access.php'; ?>
  2. <HTML>
  3. <HEAD>
  4. <TITLE>Strona zabezpieczona</TITLE>
  5. </HEAD>
  6. <BODY>
  7. <P>Witaj, <?=$kto?>! Ta informacja jest poufna...</P>
  8. </BODY>
  9. </HTML>


i chce, zeby sie login i haslo zapisaly w sesji i zebym nie musial sie logowac przy kazdym odswiezeniu... nie mam pojecia dlaczego jest zle :/

przeciez po wywolaniu access.php skrypt tworzy $login i $pass i juz potem nic nie zmienia... czy zmienia, tylko ja nie widzę co...? heup :/ męczę się juz kilka tygodni, a to zwykłe logowanie przecież! wstyd sad.gif strach pomyslec co bedzie potem...

Ten post edytował cythrus 27.04.2006, 01:31:51
Go to the top of the page
+Quote Post
gladiror
post 6.04.2006, 10:22:17
Post #2





Grupa: Zarejestrowani
Postów: 398
Pomógł: 0
Dołączył: 13.07.2005
Skąd: Lublin

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


sprobuj moze:

  1. <?php
  2.  
  3. $kto = $_SESSION['login'];
  4.  
  5. ?>


dopisac do tego pierwszego zamiast ostatniej linijki...


--------------------
"Państwo to ja" Ludwik XIV
"Wróg zaatakuje to co kochasz" Ojciec Chrzestny
"Wszystko powinno być proste jak to tylko możliwe, ale nie prostsze..." A. Einstein
"Wyobraźnia jest ważniejsza niż wiedza" Albert Einstein
"Nieprawda powtarzana wielokrotnie staje się prawdą"
Go to the top of the page
+Quote Post
-cythrus-
post 6.04.2006, 15:39:51
Post #3





Goście







kurde :/ wtedy $kto ma wartość "" czyli żadną :/ to by znaczyło, że $_SESSION['login'] nie jest tworzone?

to by było logiczne o tyle, ze jak nie jest tworzone, to za kazdym razem
  1. <?php
  2. if ($_SESSION['login'])
  3. ?>

ma wartosc false :|

a $_SESSION['login'] powinno być dostępne przez cały czas trwania sesji przecież sad.gif

access.php rozpoczyna sesję... muszę dać znowu session_start() na stronie, którą chcę zabezpieczyć tym skryptem? bo jak tak zrobie, nie ważne czy przed czy za include access.php, to pisze ze mam blad w wierszu 21 pliku access.php, czyli tutaj:
  1. <?php
  2. elseif(isset($_SESSION['pass'] {
  3. $pass = $_SESSION['pass']; // wiersz 21
  4. }
  5. ?>


aha, poprawiłem elese na elseif, żeby sprawdzał, czy zmienna sesji została w ogóle utworzona... zaraz editne w poprzednim poście

ciągle proszę o pomoc :/

Ten post edytował cythrus 6.04.2006, 15:41:46
Go to the top of the page
+Quote Post
Balas
post 6.04.2006, 16:04:06
Post #4





Grupa: Zarejestrowani
Postów: 347
Pomógł: 0
Dołączył: 27.08.2005
Skąd: Inowrocław

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


session_start(); musisz dawac na poczatku strony (zawsze) gdy uzywasz sesji winksmiley.jpg

a w wyzej podanym kodzie masz niedomkniety nawias okragly po $_SESSION['pass']


--------------------
Go to the top of the page
+Quote Post
-cythrus-
post 8.04.2006, 03:13:27
Post #5





Goście







...poprawiłem nawiasy i juz nie ma bledu... ale dalej przy kazdym odswiezeniu stronki musze podac login i haslo, w najlepszym wypadku, kiedy nic sie na stronce nie zmienia, to wyskakuje informacja, ze odswiezenie nie jest mozliwe bez ponownego wyslania informacji do stronki i musze potwierdzac, zeby wyslal... ani to wygodne ani estetyczne - jakies pomysly? :| na prawde nie rozumiem dlaczego login i haslo nie zostaja w sesji... a moze zostaja, tylko ja je jakos zle sprawdzam?
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 20:34