Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: To cholerne Logowanie...
Forum PHP.pl > Forum > Przedszkole
marecki33
Tak więc kombinuje z systemem logowanie i znalazłem kurs na webmade.org/system-logowania.php.
Wklepałem, założyłem bazę, rejestracja działa, logowanie też, ale.....

Sprawdźcie plik CHECK.PHP, bo u mnie :
1 . warunek if ustawiony na odwrót działa poprawnie, czyli gdy zalogowany=0 wtedy otwiera się następna podstrona, a gdy zalogowany=1 wtedy żąda zalogowania.

dla jasności powklejam pliki z kursu ale już w mojej wersji,
plik index.php
Kod
   <?php
   session_start();
   session_register("zalogowany");
  
   if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  
   mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą");
   mysql_select_db("user1")or die("Wystąpił błąd podczas wybierania bazy danych");
  
   function ShowLogin($komunikat=""){
       echo "$komunikat
   ";
       echo "<form action='index.php' method=post>";
       echo "Login: <input type=text name=login>
   ";
       echo "Hasło: <input type=text name=haslo>
   ";
       echo "<input type=submit value='Zaloguj!'>";
       echo "</form>";
       echo "Jeśli nie jesteś zarejestrowany, <a href='rej.php'>tu znajdziesz formularz</a>";
   }
  
   ?>
   <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
   <head>
       <title>Strona główna</title>
   </head>
   <body>
   <?php
   if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
   if($_SESSION["zalogowany"]!=1){
       if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
           if(mysql_num_rows(mysql_query("select * from user2 where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
               echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
               $_SESSION["zalogowany"]=1;
               }
           else echo ShowLogin("Podano złe dane!!!");
           }
       else ShowLogin();
   }
   else{
   ?>
   Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron, np. do <a href="stronaf.php">tej</a>
  
   <a href='index.php?wyloguj=tak'>wyloguj się</a>
   <?php
   }
   ?>
  
   </body>
   </html>
   <?php mysql_close(); ?>


plik rejestracji rej.php
Kod
   <?php
   mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
   mysql_select_db("user1")or die("Wystąpił błąd podczas wybierania bazy danych");
  
   function ShowForm($komunikat=""){    //funkcja wyświetlająca formularz rejestracyjny
       echo "$komunikat
   ";
       echo "<form action='rej.php' method=post>";
       echo "Login: <input type=text name=login>
   ";
       echo "Hasło: <input type=text name=haslo>
   ";
       echo "<input type=hidden value='1' name=send>";
       echo "<input type=submit value='Zarejestruj mnie'>";
       echo "</form>";
   }
   ?>
   <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
   <head>
       <title>Formularz rejestracyjny</title>
   </head>
   <body>
   <?php
   if($_POST["send"]==1){    //sprawdzanie czy formularz został wysłany
       if(!empty($_POST["login"]) && !empty($_POST["haslo"])){    //oraz czy uzupełniono wszystkie dane
           if(mysql_num_rows(mysql_query("select * from user2 where user_login='".htmlspecialchars($_POST["login"]."'"))))ShowForm("Użytkownik o podanym loginie już istnieje!!!"); // sprawdzanie czy użytkownik o podanej nazwie już istnieje
           else{
               mysql_query("insert into user2 values(NULL, '".htmlspecialchars($_POST["login"])."', '".htmlspecialchars($_POST["haslo"])."')"); // zapisywanie rekordu do bazy
               echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='index.php'>strony głównej</a> i się zalogować.";
               }
       }
       else ShowForm("Nie uzupełniono wszystkich pól!!!");
   }
   else ShowForm();
   mysql_close(); //zamykanie połączenia z bazą
   ?>
   </body>
   </html>


plik check.php

I TU jest różnica w porównaniu z kursem, bo w kursie na samej górze jest jeszcze :
<?php session_start(); ?> Ja musiałem to usunąć bo po każdym uruchimieniu tego pliku zgłaszał bląd :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at G:\WebServ\httpd\log3\stronaf.php:6) in G:\WebServ\httpd\log3\check.php on line 2

Kod
  
  
   <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
   <head>
       <title>podstrona</title>
   </head>
   <body>
   <?php
   if($_SESSION["zalogowany"]==0){echo "nie masz dostępu do tej części witryny. <a href='index.php'>Zaloguj się</a></body></html>;"; exit();}
   ?>



no i plik MOJA_PODSTRONA.PHP

Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Dokument bez nazwy</title>
</head>

<?php require("check.php"); ?>
to treść strony do której mają dostęp tylko zalogowani użytkownicy, między innymi ty:P

<a href='index.php?wyloguj=tak'>wyloguj się</a>
</body>
</html>


<body>
</body>
</html>



Wydaje mi się że usunięcie z pliku check.php lini
<?php session_start(); ?>

powoduje ten problem, tylko że gdy go nie usunę zgłasza ww błąd.


Jeszcze inna sytuacja. Po usunięciu z check.php <?php session_start(); ?> i zamianie warunku (czyli gdy zalogowany=)
wtedy jestem zalogowany, otwiera się moja podstrona, na niej klikam wyloguj się , pokazuje że wylogowuję się
ale w przeglądarce klikam strzałke w tył, czyli poprzednia strona, i ona cholera otwiera mi się znowu ://////
Właśnie tego staram się uniknąć. Że gdy się wyloguje powrót na stronę zastrzeżoną był już niemożliwy
H E L P
erix
Ten cholerny tag...
nospor
Cytat
Ten cholerny tag...
I ten cholerny tytuł... I te cholerne bbcode

@marecki33 jakbys sie jeszcze nie domyslil to musisz na PW przeslac moderatorowi poprawki odnosnie tytułu i tagu a po otwarciu tematu poprawic bbcode. smile.gif
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.