Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Prblem z wylogowaniem i zalogowaniem
Forum PHP.pl > Forum > Przedszkole
Tommy14
Witam, mam problem ze stroną. Coś chyba poplątałem. Gdy loguje się na stonę nie zawsze działa mi skrypt który Zamienia przyciski Loguj na wyloguj lub Panel Admina. Coś jest nie tak chyba z obsługą sesji urzytkownika. Problem pojawia się gdy loguje się na nowym komputerz, logowanie nie działa ale gdy wpiszę odrecznie skrypt logout to później wszystko dział.

config.php
  1.  
  2.  
  3. define('DBHOST', 'lt');
  4. define('DBUSER', 'rt');
  5. define('DBPASS', '');
  6. define('DBNAME', 'my');
  7.  
  8. function db_connect() {
  9. // połączenie z mysql
  10. mysql_connect(DBHOST, DBUSER, DBPASS) or die('<h2>ERROR</h2> MySQL Server is not responding');
  11.  
  12. // wybór bazy danych
  13. mysql_select_db(DBNAME) or die('<h2>ERROR</h2> Cannot connect to specified database');
  14. }
  15.  
  16. function db_close() {
  17. }
  18.  
  19. function clear($text) {
  20. // jeśli serwer automatycznie dodaje slashe to je usuwamy
  21. $text = stripslashes($text);
  22. }
  23. $text = trim($text); // usuwamy białe znaki na początku i na końcu
  24. $text = mysql_real_escape_string($text); // filtrujemy tekst aby zabezpieczyć się przed sql injection
  25. $text = htmlspecialchars($text); // dezaktywujemy kod html
  26. return $text;
  27. }
  28.  
  29. function codepass($password) {
  30. // kodujemy hasło (losowe znaki można zmienić lub całkowicie usunąć
  31. return sha1(md5($password).'#!%Rgd64');
  32. }
  33.  
  34. // funkcja na sprawdzanie czy user jest zalogowany, jeśli nie to wyświetlamy komunikat
  35. function check_login() {
  36. if(!$_SESSION['logged']) {
  37. die('<p>To jest strefa tylko dla użytkowników.</p>
  38. <p>[<a href="login.php">Logowanie</a>] [<a href="register.php">Zarejestruj się</a>]</p>');
  39. }
  40. }
  41.  
  42. // funkcja na pobranie danych usera
  43. function get_user_data($user_id = -1) {
  44. // jeśli nie podamy id usera to podstawiamy id aktualnie zalogowanego
  45. if($user_id == -1) {
  46. $user_id = $_SESSION['user_id'];
  47. }
  48. $result = mysql_query("SELECT * FROM `logowanie` WHERE `LOG_LOGIN` = '{$user_id}' LIMIT 1");
  49. if(mysql_num_rows($result) == 0) {
  50. return false;
  51. }
  52. return mysql_fetch_assoc($result);
  53. }
  54.  
  55.  
  56. // jeśli nie ma jeszcze sesji "logged" i "user_id" to wypełniamy je domyślnymi danymi
  57. if(!isset($_SESSION['logged'])) {
  58. $_SESSION['logged'] = false;
  59. $_SESSION['user_id'] = -1;
  60.  
  61. }
  62. if(!isset($_SESSION['admin'])) {
  63. $_SESSION['admin'] = false;
  64. $_SESSION['user_id'] = -1;
  65.  
  66. }
  67. ?>


login.php
  1. <?php
  2. require_once('config.php');
  3. db_connect();
  4.  
  5. // sprawdzamy czy user nie jest przypadkiem zalogowany
  6. if(!$_SESSION['logged']) {
  7.  
  8. $_SESSION['logged'] = false;
  9. $_SESSION['user_id'] = -1;
  10. $_SESSION['admin'] = false;
  11. // jeśli zostanie naciśnięty przycisk "Zaloguj"
  12. if(isset($_POST['name'])) {
  13. // filtrujemy dane...
  14. $_POST['name'] = clear($_POST['name']);
  15. $_POST['password'] = clear($_POST['password']);
  16.  
  17.  
  18. // i kodujemy hasło
  19. $_POST['password'] = codepass($_POST['password']);
  20.  
  21. // sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
  22. $result = mysql_query("SELECT `LOG_ID` FROM `logowanie` WHERE `LOG_LOGIN` = '{$_POST['name']}' AND `LOG_HASLO` = '{$_POST['password']}' LIMIT 1");
  23.  
  24.  
  25. if(mysql_num_rows($result) > 0) {
  26. // jeśli tak to ustawiamy sesje "logged" na true oraz do sesji "user_id" wstawiamy id usera
  27. $row = mysql_fetch_assoc($result);
  28. $_SESSION['logged'] = true;
  29. $_SESSION['LOG_ID'] = $row['LOG_ID'];
  30. $result1 = mysql_query("SELECT `LOG_STATUS`,`LOG_LOGIN` FROM `logowanie` WHERE `LOG_LOGIN` = '{$_POST['name']}' AND `LOG_STATUS` = '1' LIMIT 1 ");
  31.  
  32. if(mysql_num_rows($result1) > 0) {
  33. $_SESSION['admin']=true;
  34.  
  35. header('location: admin.php');
  36. }
  37.  
  38. echo '<p class="text1">Zostałeś poprawnie zalogowany! Możesz teraz przejść na <a href="index.php">stronę główną</a>.</p>';
  39. }
  40. else {
  41. echo '<p class="text1">Podany login i/lub hasło jest nieprawidłowe.</p>';
  42. }
  43. }
  44.  
  45. // wyświetlamy komunikat na zalogowanie się
  46. echo '<form method="post" ><br>
  47. <table class="tabela2" action="projzesp.bl.ee/admin.php">
  48. <tr >
  49. <td > Login: <td/> <td><input type="text" value=" " name="name"> </td>
  50. </tr>
  51. <tr>
  52. <td > Hasło: <td/> <td><input type="password" value="" name="password"> </td>
  53. </tr>
  54. </table>
  55. <table width="160%" class="tabela3">
  56. <tr>
  57. <td ><input type="submit" class="zaloguj" value="" /></td>
  58. <td align="right" ><img src="img/powrot.jpg" alt="wstecz" onclick="history.back()"; class="zarejestruj" /><td>
  59. <tr>
  60. </table>
  61. </form>';
  62. } else {
  63. echo '<p class="text1">Jesteś już zalogowany, więc nie możesz się zalogować ponownie. <a href="index.php">Powrót</a></p><br>';
  64.  
  65. }
  66. db_close();
  67. ?>


logout.php
  1. <?php
  2. $_SESSION['logged'] = false;
  3. $_SESSION['user_id'] = -1;
  4. $_SESSION['admin'] = false;
  5. header('Location: index.php');
  6. ?>
  7.  

index.php
  1. [html]
  2.  
  3. !doctype html>
  4. <meta charset="utf-8">
  5. <title>KKBus - Firma transportowa</title>
  6. <link rel="Shortcut icon" href="/img/favicon.ico" />
  7.  
  8. <link href="css/style2.css" rel="stylesheet" type="text/css">
  9. </head>
  10.  
  11. <body class="site" style="">
  12.  
  13.  
  14.  
  15.  
  16. <div class="container_nav_outer">
  17. <div class="container">
  18. <div class="row">
  19. <div id="hor_nav">
  20. <ul class="nav menu " id="hor_nav">
  21. <li class="item-101 current active"><a href="index.php">Home</a></li>
  22. <li class="item-105 deeper parent"><a href="o.php">O firmie</a></li>
  23. <li class="item-106 deeper parent"><a href="c.php">Cennik</a></li>
  24. <li class="item-108"><a href="pl.php">Obsługa klienta</a></li>
  25. <li class="item-109"><a href="kontakt.php">Kontakt</a></li>
  26. <?php
  27. require_once('config.php');
  28.  
  29. if( $_SESSION['logged']==false){
  30.  
  31. echo' <li class="item-109"><a href="logowanie.php">Logowanie</a></li>';
  32. echo' <li class="item-109"><a href="rejestracja.php">Rejestracja</a></li>';
  33. }
  34. else{
  35. echo' <li class="item-109"><a href="logout.php">Wyloguj</a></li>';
  36. if( $_SESSION['admin']==true){
  37. echo' <li class="item-109"><a href="admin.php">Administrator</a></li>';
  38. }
  39. }
  40. ?>
  41. </ul>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46.  
  47.  
  48.  
  49. </body>
  50. </html>
  51.  
  52.  
  53.  
  54.  

[/html]
adeptofvoltron
zamień 6 i 7 linijkę w login.php

bo narazie najpierw uzywasz zmiennej w tablicy Sesji. a dopiero później wczytujesz sesje.


ponadto używasz do komunikacji z bazą danych mysql, może nie stwarsza Ci to teraz problemów ale PHP.NET mówi:
New users are advised to use MySQL Improved mysqli_ functions rather than the older [replaced] mysql_ functions where applicable and subject the appropriate latest stable versions of Apache, php and MySQL, etc.

Mam nadzieję, że byłem pomocny. jak coś pytaj dalej wink.gif
Tommy14
Pomyliłem się i wrzuciłem plik po drobnej edycji. Pirwotnie było tak że, session_start() jest w pliku config.php. Już edytowałem. Nie wydaje mi się że, to przez funkcje mysql, w inny poleceniach, dodawania lub usuwania czegoś z bazy, wszystko działa. Tylko jak loguję się to pisze że, zalogowałem się poprawnie i mogę przejść na stronę główną. Przechodzę na stronę główną i wtedy powienien zadziałać skryp ten do listy u samej góry, powienien on zmienić odnośniki REJESTRACJA i LOGOWANIE na WYLOGUJ lub Wyloguj i panel damina w przypadku admina. Jednak nic się nie dzieje i jest tak jakbym wogóle się nie logował. Sytuacja zmienia się jak wpiszę odręcznie localhost/logout.php, wtedy już za każdym razem wszystko dziła poprawnie.
Ktoś ma jeszcze jakieś pomysły??
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.