Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Panel logowania
Forum PHP.pl > Forum > Przedszkole
wojtekwro
witam
jestem tutaj nowy więc dzień dobry wszystkim.

potrzebuje napisać dla siebie formularz reklamacji sam formularz jak i baza po paru godzinach udał się ;]
Jednak problem mój polega na tym, że chciałbym aby był on dostępny po zalogowaniu ( to wiem jak zrobić za pomocą bazy.txt i 2 inne sposoby tez wpadły mi w ręce ale nie to jest ważne). Chodzi dokłądnie o to, user loguje się, i ma dostęp do formularza a także podstron z nim powiązanych większość "logowań" jaki znalazłem w necie odnosiła się do pojedynczego pliku .php .html Ja chciałbym aby dotyczyło to całej zawartości "folderu ze stroną, aby nikt ręcznie niczego nie wklepał i zobaczył w przeglądarce. Sprawa nr.2 po zalogowaniu gdy użytkownik wypełni formularz potrzebuje zrobić coś takiego, ze automatycznie jest przypisywany autor danego "formularza" (ten który się zalogował i to sporządził). Zapis całej zawartości strony w bazie mysql. Nie oczekuje gotowego skryptu bo eni o to tutaj chodzi, a jedynie podpowiedzi z czego skorzystać, albo co z czym ugryść. Logowanie stworzone byłoby od podstaw fajnei by było gdyby była możłiwośc nadawania uprawnien userom na daną część "serwisu".

Pozdrawiam
Darti
To stwórz sobie tabelę w bazie odpowiedzialną za usera z wpisanym poziomem dostępu i tabelę odpowiedzialną za sesje i w tej wpisz nr sesji oraz czy sesja jest uwierzytelniona i na jakim poziomie (poziom pobierasz z tabeli usera, który się loguje, np 0 - niezalogowany, 1 - zalogowany jako zwykly user, 2 - jako admin itp). Warto dodać jeszcze czas wygaśnięcia sesji, żeby nie "wisiały" w bazie przez wieczność.
wojtekwro
przebrnołem przez logowanie ;] znalazłem coś co mnie interesuje ale mam problem z sesjami

========>>>>> plik z panelem wygląda tak log.php


  1. <?php
  2. session_register("Autoryzacja");
  3. session_name("logowanie");
  4. ?>
  5. <html><body>
  6. <form action="log2.php" method="post"> <input type="text" name="login"><br />
  7. <input type="password" name="password"> <input type="submit" name="zmienna"
  8. value="OK"> </form>
  9. </body></html>
  10. <?php
  11. if ($_POST['zmienna']=='OK') {
  12. if ($_POST['login']=="" && $_POST['password']=="") { echo 'Brak
  13.  loginu i hasła'; }
  14. elseif ($_POST['login']!="" && $_POST['password']=="") { echo
  15. 'brak hasla'; }
  16. elseif ($_POST['login']=="" && $_POST['password']!="") { echo
  17. 'brak loginu'; }
  18.  
  19. if ($_POST['login']!="" && $_POST['password']!="") { $Test=1; }
  20.  
  21. if ($Test==1) {
  22.  $polaczenie=mysql_connect('localhost', 'login', 'login1')
  23.  or die('MySQL error!!');
  24.  mysql_select_db('proba', $polaczenie)
  25. or die('MySQL error!!');
  26.  
  27.  $zapytanie="SELECT * FROM users WHERE Login='$_POST[login]'";
  28.  $wynik=mysql_fetch_array(mysql_query($zapytanie));
  29.  $ilosc=mysql_num_rows(mysql_query($zapytanie));
  30.  
  31.  if($ilosc==0) { echo 'Zly
  32. login'; }
  33.  
  34. if (($ilosc<0) || ($ilosc>1)){ echo 'Error w bazie danych'; }
  35.  
  36.  if ($ilosc == 1) {
  37.  
  38.  if ($_POST['password']==$wynik['Password']) {
  39.  
  40.  if (!$_SESSION["Login"]) {
  41. $_SESSION["Login"]=$wynik['Login']; }
  42.  
  43. if
  44. (!$_SESSION["Autoryzacja"]) { $_SESSION["Autoryzacja"]=1; }
  45. echo '<meta http-equiv="refresh" content="0; url=./cos.php" />';
  46.  
  47. }
  48.  
  49.  else { echo 'Zle haslo'; }
  50.  
  51. }
  52.  
  53.  }
  54.  
  55. }
  56.  
  57.  ?>


==============>>> zawartość pliku cos.php

  1. <?php
  2. $aktualna_s=session_name();
  3. if($_SESSION["Autoryzacja"]==&& $aktualna_s=='logowanie') {
  4. echo 'Gratulacje zalogowales sie i sesje dzialaja';
  5. }
  6. else{ echo 'Zalogowales sie ale sesje nie dzialaja'; }
  7. ?>



==========>> baza danych


  1. id Login Password Last_log widoczny_jako
  2. 1 rower 005348866c0a6c41 2007-05-01 11:37:02
  3. 2 hmm hmm 0000-00-00 00:00:00 tester


wywala komunikat że się zalogowałem ale sesje nie działają.

Chciałbym z tego wyciągnąć jeszcze coś takiego:

do każdej podstrony sprawdzanie czy użytkownik ma prawa dostępu jeśli tak i sesja aktywna może wypełnic formularz i zatwierdzić. Przy zatwierdzaniu warunki jak wyżej automatycznie podpisuje ( w bazie pole widoczny_jako) i wstawia datę.

Jak to pociągnąć dalej jeżeli jesteś zalogowany i sesja działa wysyła na strone index.php
Jak się domyślam:

zastąpić

  1. <?php
  2. echo 'Gratulacje zalogowales sie i sesje dzialaja';
  3. }
  4. else{ echo 'Zalogowales sie ale sesje nie dzialaja'; }
  5. ?>



na coś w tym stylu questionmark.gif:


  1. <?php
  2. else if (($_SERVER['PHP_AUTH_USER'] == 'jan' ) && ($_SERVER['PHP_AUTH_PW'] == 'kos')) {
  3. include('index.html');
  4. ?>
Darti
1) uporządkuj swojego posta (wrzuć kod w tagi [ php ] i [ /php ])
2) pomieszałeś autoryzacje poprzez sesje (session_register("Login")) z autoryzacja http przez php ($_SERVER['PHP_AUTH_USER']). Jeżeli chcesz zrobić dla każdej strony inne prawa dostępu to na każdej z nich sprawdzaj prawa usera do odpowiednich czynności (oglądanie, modyfikacja, usuwanie). W tym celu każda strona powinna mieć opisany (zdefiniowany) poziom praw dostępu. Baw się dalej smile.gif
wojtekwro
pomieszałem to fakt ;]
ale nie w tym rzecz gdyby mógł to ktoś przejrzeć i powiedzieć gdzie popełniłem błąd przy zapisie sesji questionmark.gif

Co do uprawnień to może to wyglądać tak, że tworze sobei tablice podstrony w niej zamieszczam id, podstrona id_uprawenienia. jakimi zmiennymi powinny być podstrona (text??) id_uprawnienia??. Jak mi się wydaje powinno to wyglądać tak, że w tabeli umieszczam podstronę i użytkowniaka z jego uprawenieniami questionmark.gif
Darti
Może
  1. <?php
  2. 45 if
  3. 46 (session_is_registered("Autoryzacja") && $_SESSION["Autoryzacja"] != 1) { $_SESSION["Autoryzacja"]=1; }
  4. ?>
wojtekwro
zrobiłem tak jak mówisz ale nie działa ;/

znalazłem w sieci też informacje aby zmienić kodowanie z utf na windows-1250 i niby powinno chodzi ale nei działa.

Zmieniłem też wpisy w pliku php.ini
output_buffering = off

na

<span style="font-weight: bold;"><a href="http://pl.php.net/output_buffering = on

lub określić max rozmiar

output_buffering = 4096" title="Zobacz w manualu PHP" target="_manual">output_buffering = on

lub określić max rozmiar

output_buffering = 4096</a></span>

powoli zaczynam się poddawać ;/


biggrin.gif zrobiłem coś co zaczeło działać:

zmieniłem zawartośc cos.php

  1. <?php
  2. if($_SESSION['login'] == 'ok')
  3. {
  4. echo "działa";
  5. }
  6. else
  7. {echo "nie działają sesje";
  8.  
  9. $_SESSION['login'] = 'ok';
  10. }
  11. ?>


i zaczeło to działać; tzn wywala mi komunikat działa ale w bazie nie mam wpisu w tabeli user w polu Last_log kiedy się kto logował ;/

prosiłbym o jakieś podpowiedzi co do nadania tych uprawnień czy mają one dotyczyć podstron czy użytkowników może jak taka tabela powinna wyglądać oraz jak rozwiązać logowanie do każdej z podstron chodzi o to żeby pamiętał login i hasło po przesciuprzez logowanie.

mam prośbę mógłby to ktoś sprawdzić będę naprawdę wdzięczny;]

zawratoś log2.php (pomińmy html winksmiley.jpg)

  1. <?php 
  2. session_register("Autoryzacja");
  3. session_name("logowanie");
  4. ?>
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; windows-1250" />
  8. <meta http-equiv="Content-Language" content="pl" />
  9. <META NAME="Description" CONTENT="skuteczne zarządzanie dokumentami w firmie">
  10. <META NAME="Author" CONTENT="Wojciech Lenda">
  11.  
  12. </head>
  13. <title>System zarządzania dokumentami</title>
  14. <body>
  15.  
  16. <center>
  17. <!-- początek -->
  18. <p>Dalsze przeglądanie strony wymaga zalogowania.</p>
  19. <hr>
  20. <br>
  21. <table cellpadding="0" cellspacing="0">
  22. <tr>
  23.  
  24. <!--lewy górny róg -->
  25. <td style="line-height: 1px"><img src="lg.gif" alt="" /></td>
  26.  
  27. <!-- dolna linia -->
  28. <td bgcolor="#426B9C" style="line-height: 1px"><img src="0.gif" alt="" /></td>
  29.  
  30. <!-- prawa góra -->
  31. <td style="line-height: 1px"><img src="pg.gif" alt="" /></td></tr>
  32. <tr><td bgcolor="#426B9C"><img src="0.gif" alt="" /></td><td bgcolor="#426B9C">
  33.  
  34. <!-- zdefiniowany kolor czcionki -->
  35.  <font color="#C0FFFF"><b>
  36.  
  37. <!-- formularz -->
  38.  
  39.  
  40. <form action="log2.php" method="post"> <input type="text" name="login"><br />
  41. <input type="password" name="password"> <input type="submit" name="zmienna"
  42. value="OK"> </form>
  43.  
  44. <?php
  45. if ($_POST['zmienna']=='OK') {
  46. if ($_POST['login']=="" && $_POST['password']=="") { echo 'Brak
  47.  loginu i hasła'; }
  48. elseif ($_POST['login']!="" && $_POST['password']=="") { echo
  49. 'brak hasla'; }
  50. elseif ($_POST['login']=="" && $_POST['password']!="") { echo
  51. 'brak loginu'; }
  52.  
  53. if ($_POST['login']!="" && $_POST['password']!="") { $Test=1; }
  54.  
  55. if ($Test==1) {
  56.  $polaczenie=mysql_connect('localhost', 'root', '')
  57.  or die('MySQL error!!');
  58.  mysql_select_db('proba', $polaczenie)
  59. or die('MySQL error!!');
  60.  
  61.  $zapytanie="SELECT * FROM users WHERE Login='$_POST[login]'"; 
  62.  $wynik=mysql_fetch_array(mysql_query($zapytanie));
  63.  $ilosc=mysql_num_rows(mysql_query($zapytanie));
  64.  
  65.  if($ilosc==0) { echo 'Zly
  66. login'; }
  67.  
  68. if (($ilosc<0) || ($ilosc>1)){ echo 'Error w bazie danych'; }
  69.  
  70.  if ($ilosc == 1) {
  71.  
  72.  if ($_POST['password']==$wynik['Password']) {
  73.  
  74.  if (!$_SESSION["Login"]) {
  75. $_SESSION["Login"]=$wynik['Login']; }
  76.  
  77.  if
  78.  
  79. (!$_SESSION["Autoryzacja"]) { $_SESSION["Autoryzacja"]=1; }
  80. echo '<meta http-equiv="refresh" content="0; url=./cos.php" />';
  81.  
  82. }
  83.  
  84.  else { echo 'Zle haslo'; }
  85.  
  86. }
  87.  
  88.  }
  89.  
  90. }
  91.  
  92.  ?> 
  93. </td>
  94.  
  95. <!-- gorna linia -->
  96. <td bgcolor="#426B9C"><img src="0.gif" alt="" /></td></tr>
  97.  
  98. <!-- lewy dolny -->
  99. <tr><td style="line-height: 1px"><img src="ld.gif" alt="" /></td>
  100. <td bgcolor="#426B9C" style="line-height: 1px"><img src="0.gif" alt="" />
  101.  
  102. <!-- prawy dolny -->
  103. </td><td style="line-height: 1px"><img src="pd.gif" alt="" /></td></tr>
  104.  
  105. <!-- koniec -->
  106. </table>
  107. </div>
  108. </body>
  109.  
  110. </html>
  111. </body>


plik cos.php
  1. <?php
  2. if($_SESSION['login'] == 'ok')
  3. {
  4.  
  5. header("Location: index.php");
  6. }
  7. else
  8. {echo "nie działają sesje";
  9.  
  10. $_SESSION['login'] = 'ok';
  11. }
  12.  
  13.  
  14. ?>


plik index.php
  1. <?php
  2. if($_SESSION['login'] == 'ok')
  3. {
  4. echo "1";
  5. }
  6. else
  7. {
  8. if($_SESSION['login'] = 'ok')
  9. echo "Musisz być zalogowany, aby obejrzeć zawartość storny.";
  10. }
  11. ?>



no i baza danych do tego

  1. id Login Password Last_log widoczny_jako active
  2. 2 hmm hmm 0000-00-00 00:00:00 tester 0
  3. 1 rower 005348866c0a6c41 2007-05-01 11:37:02 0


Last_log ma tu być zapisane kiedy ostatnio zalogowany
widoczny jako musze wyświetlić w niektórych miejscach kto zalogowany
active czy sesja otwarta jeśli nie będzie wartość 0

Jak toi później wykorzystac na podstronach, prosiłbym o kod jeżeli któryś z kolegów / koleżanek móglby pomóc
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.