Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php imysql] autoryzacja "sesje"
Forum PHP.pl > Forum > Przedszkole
wojtekwro
witam mam taki zgrzyt w swoim pomyśle, jako, że logowanie z sesjami mi za kij nie wychodzi postanowiłem zrobić coś takiego:
prosty panel logowania który sprawdza login i hasło, a gdy poprawny robi wpis w tabeli w polach data i aktywny, tylko tutaj pojawił się problem:

wszystko byłoby ok gdyby użytkownicy się wylogowywali, klikamy wyloguj i wpis w bazie w polu aktywny zmienia się na 0. Czy jest jakiś sposób aby w tabeli w polu aktywny po zamknięciu przeglądarki wpisywało się 0 questionmark.gif

pyatnko

  1. <?php
  2. // odbieranie danych z formularza
  3. $login = $_POST['login'];
  4. $haslo = $_POST['haslo'];
  5. // polaczenie z BD
  6. $connection = @mysql_connect('localhost', 'root', '')
  7. or die('Nie można nawiązac połączenia z bazą danych');
  8. // wybór bazy
  9. // wykonuje skrypt logowania
  10.  
  11.  
  12. //wykonujemy zapytanie ;)
  13. $sql = "SELECT * FROM userzy WHERE login = '$_POST[login]' AND haslo = '$_POST[haslo]'";
  14. $wyn = @mysql_query($sql) or die(mysql_error());
  15. $row = @mysql_fetch_array($wyn); 
  16. if ($row["login"] == $_POST['login'] && $row["haslo"] == $_POST['haslo']) 
  17. {$_SESSION['LOGGED'] = TRUE;
  18. header('Location: index.html');
  19. }else
  20. {
  21. echo('Podales bledne dane!');
  22. } 
  23. ?>


jak zabezpieczyć strony przed userami bez dostępu questionmark.gif

skrypcik chodzi i logowanko działa ale chciałbym zabezpieczyć wywoływanie stron z paska adresu przeglądarki.
KCG
  1. <?php
  2. (...)
  3. $sql = "SELECT * FROM userzy WHERE login = '".$_POST['login']."' AND haslo = '".$_POST['haslo']."'";
  4. $wyn = @mysql_query($sql) or die(mysql_error());
  5. if (mysql_num_rows == 1) {
  6.  $_SESSION['LOGGED'] = TRUE;
  7.  header('Location: index.html');
  8. } else {
  9.  echo 'Podales bledne dane!';
  10. }
  11. ?>

Nie lepiej tak?
I na każdej stronie, której chcesz dodajesz:
  1. <?php
  2. if ($_SESSION['LOGGED'] != TRUE) {
  3.  header("Location: login.php");
  4.  exit;
  5. }
  6. ?>
wojtekwro
po małych poprawkach wszystko działa zamieszcze skrypcik z bazą danych dla tych którzy będą kiedyś szukać biggrin.gif

login.php

  1. <?php
  2. // odbieranie danych z formularza
  3. $login = $_POST['login'];
  4. $haslo = $_POST['haslo'];
  5. // polaczenie z BD
  6. $connection = @mysql_connect('127.0.0.1', 'root', '')
  7. or die('Nie można nawiązac połączenia z bazą danych');
  8. // wybór bazy
  9. mysql_select_db ("test");
  10. //wykonujemy zapytanie ;)
  11. $sql = "SELECT * FROM userzy WHERE login = '".$_POST['login']."' AND haslo = '".$_POST['haslo']."'";
  12. $wyn = @mysql_query($sql) or die(mysql_error());
  13. if (mysql_num_rows($wyn) == 1) 
  14. {$_SESSION['LOGGED'] = "TRUE";
  15. header('Location: index.php');
  16. }else
  17. {
  18. echo('Podales bledne dane!' );
  19. } 
  20. ?>


index.php

  1. <?php
  2. if ($_SESSION['LOGGED'] != TRUE) {
  3.  header("Location: login.php");
  4.  exit;
  5. }
  6. echo "działa";
  7. ?>


index.html

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <head>
  3. <title> New Document </title>
  4. <meta name="Generator" content="EditPlus">
  5. <meta name="Author" content="">
  6. <meta name="Keywords" content="">
  7. <meta name="Description" content="">
  8. </head>
  9.  
  10. <body>
  11. <form method="post" action="login.php">
  12. <table align="center" border="0">
  13. <tr>
  14. <td align="right" class="uni_01">Login:</td>
  15. <td><input type="text" name="login" size="30"></td>
  16. </tr>
  17. <tr>
  18. <td align="right" class="uni_01">hasło:</td>
  19. <td><input type="password" name="haslo" size="30"></td>
  20. </tr>
  21. <tr>
  22. <td align="right" class="uni_01"> </td>
  23. <td>
  24. <p align="center"><input style="font-weight: bold;" type="submit" name="submit" value="loguj">
  25. </td></tr>
  26.  
  27. <div align="center">
  28. <? if(isset($message)){
  29. echo $message;
  30. }
  31. ?>
  32. </div>
  33. </table>
  34. </form>
  35. </body>
  36. </html>


baza danych test tabela userzy

  1. Pole Typ NULL Domyślnie
  2. id int(11) Nie
  3. login varchar(20) Nie
  4. haslo varchar(40) Nie
  5. Primary_ket id


w formularzu który zrobiłem, a jest dostępny tylko dl azalogowanych chciałbym zrobic coś takiego :

  1. <right>
  2. <!-- Wyświetli kto sporządził -->
  3. <p><strong>Autor</strong>: <input type="text" name="dodal" value="
  4. <?php
  5.  
  6. // polaczenie z BD
  7. $connection = @mysql_connect('127.0.0.1', 'root', '')
  8. or die('Nie można nawiązac połączenia z bazą danych');
  9. // wybór bazy
  10. mysql_select_db ("test");
  11. $zapytanie = "SELECT * FROM userzy WHERE user='$user'";
  12. $wykonaj = mysql_query ($zapytanie);
  13. while($login=mysql_fetch_array ($wykonaj))
  14. {
  15. echo $zmienna=$login["user"];
  16. }
  17. ?>


ma to na celu wyświetlenie wartości z tabeli dla której jest spełnione coś takiego :

jeżeli istnieje sesja i wyświetl dla login wartośc pola z tabela userzy user.

Podpowiedzcie jak to zrobic tym sposobem wyżej nei dizała ;/
KCG
Chcesz zrobić tak jakby edycje profilu? W formularzu? Może napisz jakoś wyraźniej, bo nie rozumiem, co chcesz osiągnąć tongue.gif Chociaż może jeszcze ociężały jestem o tej porze biggrin.gif Wieczorem możesz walić na gg: 9242594, jak mogę to pomogę smile.gif
wojtekwro
zawartość login.php

  1. <?php
  2. // odbieranie danych z formularza
  3. $login = $_POST['login'];
  4. $haslo = $_POST['haslo'];
  5. $user = $_POST['user'];
  6. // polaczenie z BD
  7. $connection = @mysql_connect('127.0.0.1', 'root', '')
  8. or die('Nie można nawiązac połączenia z bazą danych');
  9. /// wybór bazy
  10. mysql_select_db ("test");
  11. //wykonujemy zapytanie ;)
  12. $sql = "SELECT * FROM userzy WHERE login = '".$_POST['login']."' AND haslo = '".$_POST['haslo']."'";
  13. $wyn = @mysql_query($sql) or die(mysql_error());
  14. if (mysql_num_rows($wyn) == 1) 
  15. {
  16. $_SESSION['LOGGED'] = "TRUE";
  17. $dane=mysql_fetch_row ($wyn);
  18. $_SESSION['login']=$dane['login'];
  19. $_SESSION['imie']=$dane['user'];
  20. header('Location: index.php');
  21. }else
  22. {
  23. echo('Podales bledne dane!<br> <a href="index.html">Spróbuj ponownie</a>');
  24. } 
  25. ?>


chce żeby wczytał mi do sesji $_SESSION['imie'] oraz ale to w dalszym etapie rozwoju ;] $_SESSION['id_strony'] jeżeli = 1 {pokaże pusty formularz do zapisu} else przekieruje na stronę do przeglądania.

problem mam z wyświetleniem czegoś takiego
  1. <?php
  2. if ($_SESSION['LOGGED'] != TRUE) {
  3.  header("Location: login.php");
  4.  exit;
  5. }
  6. ?>
  7. <html>
  8. (...)
  9. <p><strong>Autor</strong>: <input type="text" name="dodal" value="
  10. <?php
  11. print $_SESSION['imie'];
  12.  
  13. ?>
  14. "background-color: cornsilk; font-style: italic; color: gray "></p>
  15. (...)
  16. </html>

pole kto sporządził ma być zablokowane ale to zrobię jak zacznie to działąć

wydaje mi się że jaśniej się nie da. (z php walcze od paru dni także proszę o wyrozumiałość).
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.