Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Logowanie na sesjach
Forum PHP.pl > Forum > Przedszkole
Mefiuu
Witam. Zrobiłem sobie "na surowo" skrypt logowania oparty na sesjach. Z tą jednak różnicą, że nie ma możliwości rejestracji, tylko sprawdza się dane znajdujące się w instrukcji warunkowej if. "Na surowo" wszystko działało ładnie, ale jak "włożyłem" to do mojej strony to niestety nie działa... Składa się z 4 plików:
login.php
admin.php
przykladowa.php
sprawdz.php

Kod pliku login.php :

Kod
<?php
session_start();
session_register("zalogowany");

if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;

function ShowLogin($komunikat=""){
    echo "$komunikat<br>";
    echo "<form action='index.php' method=post>";
    echo "Login: <input type=text name=login><br>";
    echo "Hasło: <input type=password name=haslo><br>";
    echo "<input type=submit value='Zaloguj!'>";
    echo "</form>";
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
   <head>
     <title>moja strona</title>
          <link rel="stylesheet" href="admin.css" type="text/css" />
            <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
            <meta name ="description" content="Moja strona domowa" />
            <meta http-equiv="content-language" content="pl" />
   </head>
   <body>
        <div id="top">
            <div id="gora">
                <div id="goralewo">
Moja strona domowa
                </div>
            </div>
        </div>
<div id="logo">
    LOGO
</div>
            
            <div id="menu">
             <ul>
                    <li><a href="index.php">Strona Główna</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
             </ul>
            </div>
            
        <div id="glowne">
            
            <div id="tresc">

    <?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 ($_POST['login']=='mefiuu' && $_POST['haslo']=='mefiuu1') {
            $_SESSION["zalogowany"]=1;
            echo "Zalogowano poprawnie.<a href='admin.php'>Przejdź</a> do panelu Administratora.
            <br><a href='login.php?wyloguj=tak'>wyloguj się</a>";

            }

        elseif ($_POST['login']=='Admin' && $_POST['haslo']=='Admin2') {
            $_SESSION["zalogowany"]=2;
            echo "Zalogowano poprawnie.<a href='admin.php'>Przejdź</a> do panelu Super Administratora.
            <br><a href='login.php?wyloguj=tak'>wyloguj się</a>";

            }
        else echo ShowLogin("Podano złe dane!!!");
        }
    else ShowLogin();
}


?>

            </div>

        </div>        
            <div id="stopka">
              &copy; Created by Mati
            </div>
        
   </body>
</html>



No i powinno po wpisaniu login : Admin hasło: Admin2 pokazać mi plik admin.php lub jeśli źle wpiszę to pokazać, że są złe dane. a Tu ni stąd ni z owąd przenosi mnie na index.php. Czy ja tu gdzieś dałem przekierowanie a nie widzę ? Po wpisaniu: www.mojastrona.pl/przykladowa.php pojawia się komunikat o niezalogowaniu, ale jak się zaloguję to i tak to nic nie daje...
gsmphone
przenosi cię na index bo sam mu to napisałeś żeby zrobił:

echo "<form action='index.php' method=post>";

Zmień index.php na inną to będzie przenosić gdzieś indziej
ferrero2
Tak dałeś, wysyłasz dane poprzez przycisk submit, jeżeli naciskasz przycisk wykonuje się to co zapisałeś w FORM ACTION czyli u Ciebie
  1. <?php
  2. echo "<form action='index.php' method=post>";
  3. ?>
Mefiuu
O matko... Rzeczywiście dałem jeszcze na tamtej "surowej". Ale to nie zmienia faktu że nadal mi pokazuje że nie mam dostępu do strony ;/
marek44
Nie używaj session_register(), tylko rób tak
  1. <?php
  2. if(co&#347;tam){
  3. $_SESSION['zalogowany']='ok';
  4. }
  5. ?>
Mefiuu
hmmm.. no nie wiem, bo jak miałem to w "surowej" stronie to wszystko było ok i nie narzekałem. Ktoś ma inną pomoc dla mnie może ?
bemol
a jak sprawdzasz zalogowanie?
nie czasem:
  1. <?php
  2. $_SESSION['zalogowany'] == '1'
  3. ?>
?
bo jeśli tak to zmień na
  1. <?php
  2. $_SESSION['zalogowany'] > 0
  3. ?>


i dodatkowa rada, tak jak kolega wyżej:
NIE używaj session_register()! a przypisuj odrazu wartość do tablicy sesji.

po zalogowaniu adminem:
  1. <?php
  2. if($_SESSION["zalogowany"]!=1){
  3. ?>

to nie ma sensu, bo cały czas będzie ci pokazywało formularz, zmień na:
  1. <?php
  2. if($_SESSION["zalogowany"]<1){
  3. ?>
Mefiuu
Błąd odnalazłem, da się teraz zalogować. Powstał jednak inny problem. Po wejściu do panelu admina, kiedy klikam na "wyloguj" przenosi mnie na str. główną, a kiedy wpiszę www.costamcos.pl/admin.php to dalej jestem zalogowany i tak w kółko;/ zmieniłem powyższy kod, dodając if($_GET["wyloguj"]=="tak"){session_destroy () ;echo "Zostałeś wylogowany z serwisu";} w miejsce if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";} . jednak nie działa w dalszym ciągu;/
kielich
np tak
Kod
if (isset($_GET['logout'])==TRUE){
    session_unset();
    session_destroy();
    }


sprawdzasz czy zaistniała $_GET
Mefiuu
Niestety, nic to nie dało. Znów przenosi mnie na index.php ale po wprowadzeniu www.costam.pl/admin.php pojawia się witaj administratorze;/
kielich
ale zmien tez

<a href='index.php?logout'> Wyloguj się</a><br />
i wtedy
Kod
if (isset($_GET['logout'])==TRUE){
    session_unset();
    session_destroy();
    }
bemol
wyraźny błąd sesji.
wklej aktualny kod wylogowywania i admin.php
Mefiuu
zmieniłem "logout" na "wyloguj"

login.php
Kod
<?php
session_start();
session_register("zalogowany");

if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;

function ShowLogin($komunikat=""){
    echo "$komunikat<br>";
    echo "<form action='index.php' method=post>";
    echo "Login: <input type=text name=login><br>";
    echo "Hasło: <input type=password name=haslo><br>";
    echo "<input type=submit value='Zaloguj!'>";
    echo "</form>";
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
   <head>
     <title>moja strona</title>
          <link rel="stylesheet" href="admin.css" type="text/css" />
            <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
            <meta name ="description" content="Moja strona domowa" />
            <meta http-equiv="content-language" content="pl" />
   </head>
   <body>
        <div id="top">
            <div id="gora">
                <div id="goralewo">
Moja strona domowa
                </div>
            </div>
        </div>
<div id="logo">
    LOGO
</div>
            
            <div id="menu">
             <ul>
                    <li><a href="index.php">Strona Główna</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
             </ul>
            </div>
            
        <div id="glowne">
            
            <div id="tresc">

    <?php

if (isset($_GET['wyloguj'])==TRUE){
    session_unset();
    session_destroy();
    }

if($_SESSION["zalogowany"]!=1){
    if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
        if ($_POST['login']=='mefiuu' && $_POST['haslo']=='mefiuu1') {
            $_SESSION["zalogowany"]=1;
            echo "Zalogowano poprawnie.<a href='admin.php'>Przejdź</a> do panelu Administratora.
            <br><a href='login.php?wyloguj=tak'>wyloguj się</a>";

            }

        elseif ($_POST['login']=='Admin' && $_POST['haslo']=='Admin2') {
            $_SESSION["zalogowany"]=2;
            echo "Zalogowano poprawnie.<a href='admin.php'>Przejdź</a> do panelu Super Administratora.
            <br><a href='login.php?wyloguj=tak'>wyloguj się</a>";

            }
        else echo ShowLogin("Podano złe dane!!!");
        }
    else ShowLogin();
}


?>

            </div>

        </div>        
            <div id="stopka">
              &copy; Created by Mati
            </div>
        
   </body>
</html>


admin.php
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
   <head>
     <title>moja strona</title>
          <link rel="stylesheet" href="admin.css" type="text/css" />
            <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
            <meta name ="description" content="Moja strona domowa" />
            <meta http-equiv="content-language" content="pl" />
   </head>
   <body>
        <div id="top">
            <div id="gora">
                <div id="goralewo">
Moja strona domowa
                </div>
            </div>
        </div>
<div id="logo">
    LOGO
</div>
            
            <div id="menu">
             <ul>
                    <li><a href="index.php">Strona Główna</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
                    <li><a href="cos.php">Coś</a></li>
             </ul>
            </div>
            
        <div id="glowne">
            
            <div id="tresc">

    <?php require("sprawdz.php"); ?>
<?

if($_SESSION["zalogowany"]==1)

{
    echo "Witaj Administratorze!";
    echo "<br><a href='index.php?wyloguj=tak'>wyloguj się</a>";
exit();

}

elseif($_SESSION["zalogowany"]==2)

{
    echo "Witaj Super Administratorze!";
    echo "<br><a href='index.php?wyloguj=tak'>wyloguj się</a>";
exit();

}

?>

            </div>

        </div>        
            <div id="stopka">
              &copy; Created by Mati
            </div>
        
   </body>
</html>
kielich
i dalej nie zminiłeś tak jak mówiłem smile.gif zobacz raz jeszcze

Kod
    echo "<br><a href='index.php?wyloguj=tak'>wyloguj się</a>";

zmin tak jak wczesniej pisałem
Mefiuu
Ależ mam taki kod :
Kod
if (isset($_GET['wyloguj'])==TRUE){
    session_unset();
    session_destroy();
    }


Kod
echo "<br><a href='index.php?wyloguj=tak'>wyloguj się</a>";
kielich
i nom i ma być
echo "<br><a href='index.php?wyloguj'>wyloguj się</a>";

sprawdzasz czy zaistniała zminna GET
Mefiuu
Działa wszystko, wystarczyło zmienić:

echo "<br><a href='index.php?wyloguj'>wyloguj się</a>";
na:
echo "<br><a href='login.php?wyloguj'>wyloguj się</a>";
bo przecież formularz mam w pliku login.php winksmiley.jpg Dziękuję wszystkim smile.gif
kielich
Nom mówiłem Ci zawsze sprawdzaj czy wykonan jest zminna GET a nie jej wartosc
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.