Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesje - logowanie
Forum PHP.pl > Forum > PHP
froth
jka zrobic logwanie uzywajac sesji,zeby bylo kilku uzytkownikow i aby to wszytsko bylo w miare latwe.
borec
1. nie to forum
2. szukaj, bylo duuuzo razy
froth
tylko ze ja chce od poczatku do konca winksmiley.jpg)
borec
SZUKAJ bylo :!:
froth
szuaklem juz od przewijania forum mnei glowa boli ;((
borec
dobra, to ma byc na plikach czy moze MySQL?
froth
nie mam serva z mysqlem sad.gif(
borec
hasla.dat:
Kod
login||haslo

login2||haslo2


log.php:
[php:1:daa6f81143]<?php

function login_form ()
{
?>
<p>Logowanie:</p>
<form action="log.php?login=1" method="post">
Login: <input type="text" name="login"><br>
Hasło: <input type="password" name="passwd"><br>
<input type="submit" value="Zaloguj się">
</form>
<?php
}

session_start();

if ($_GET['login'])
{
$data = file("hasla.dat");

for ($i = 0, $c = count($data); $i < $c; $c++)
{
$ekhem = explode("||", $data[$i]);

if (($_POST['login'] == trim($ekhem[0])) && ($_POST['passwd'] == trim($ekhem[1])))
{
$session_time = 15; // czas trwania sesji w minutach
$_SESSION['user'] = $_POST['login'];
$_SESSION['expire'] = time() + 60 * $session_time;
echo 'Autoryzacja przeprowadzona pomyślnie.<br>
<a href="log.php?logout=1">Wyloguj się</a><br>
Chronione strony: <a href="dane1.php">Dane 1</a>, <a href="dane2.php">dane 2</a>.';
break;
}
}
}
elseif ($_GET['logout'])
{
session_destroy();
echo 'Zastałeś wylogowany';
}
else
{
login_form();
}

?>[/php:1:daa6f81143]

check_login.php:
[php:1:daa6f81143]<?php

session_start();

if (!$_SESSION)
{
echo 'Aby oglądać tą stronę musisz się <a href="log.php">zalogować</a>.';
exit;
}
elseif ($_SESSION['expire'] <= time())
{
echo 'Sesja wygasła. <a href="log.php">Zaloguj się</a> ponownie';
exit;
}

?>[/php:1:daa6f81143]

w pliku (plikach) ktory ma byc chroniony na poczatku wstawiasz
[php:1:daa6f81143]<?php
require_once "check_login.php";
?>[/php:1:daa6f81143]

nie sprawdzalem tego, moze nie dzialac
froth
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/kw/public_html/index.php:2) in /home/kw/public_html/check_login.php on line 3

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/kw/public_html/index.php:2) in /home/kw/public_html/check_login.php on line 3
Tak wyskakuje na stronie chronionej haslem.
Bora
wytnij wszystkie znaki przed <?php
froth
dalej wyskakuje
Bora
przejrzałek kod i plik check_login.php jest includowany przez log.php czyli w pliki check_login.php jest zbędne session_start(); podobnie sprawdz początek przed <?php

UPDATE :
sorry nie czytałem uwaznie , session_start(); jest potrzebne.
Sprawdż co masz przed require_once "check_login.php";
froth
<?php
require_once "check_login.php";
?> to mam na samym ;pocztaku strony(nad naglowkami) ktora ma byc chroniona
MaKARON
Cytat
wytnij wszystkie znaki przed <?php
Użytkownik jest baaaardzo początkujący.. niech raczejużyje ob_start() na początku smile.gif a przy okazji doczyta o buforze wyjściowym smile.gif
Bora
albo zrobić to na beszczela dać w linijce 3 check_login.php die(":end"); i to co będzie przed end będzie powodowało błąd albo jak mówisz pobawić sie z ob_start(), ob_get_contents() i ob_end_flush() żeby wychwycić błąd.
jaszczur
Probowalem przerobic skrypt borec(a) do MySqela ale cos mi chyba niewychodzi.
Co robie nie tak ?


Kod
<?php

function login_form ()

{

  ?>



<p>Logowanie:</p>

<form action="log.php?login=1" method="post">

Login: <input type="text" name="login"><br>

Haslo: <input type="password" name="passwd"><br>

<input type="submit" value="Zaloguj sie">

</form>





<?php

}

session_start();

if ($_GET['login'])

                {

{

$username=$_POST['login'];

$password=$_POST['passwd'];



                $baza = mysql_connect ("localhost", "root", "haslo")

                or die ("Nie mozna nawiazac polaczenai z baza");

                $mysql = mysql_select_db("autoryzacja", $baza);

                $zapytanie = "SELECT * FROM users WHERE username='$username'";

                $wynik = mysql_query( $zapytanie );

        while ($ekhem = mysql_fetch_array($wynik))



if (($_POST['login'] == trim($ekhem[2])) && ($_POST['passwd'] == trim($ekhem[3])))

{

    $session_time = 15; // czas trwania sesji w minutach

    $_SESSION['user'] = $_POST['login'];

    $_SESSION['expire'] = time() + 60 * $session_time;



    echo 'Autoryzacja przeprowadzona pomylnie.<br>

    <a href="log.php?logout=1">Wyloguj sie</a><br>

    Chronione strony: <a href="dane1.php">Dane 1</a>,

    <a href="dane2.php">dane 2</a>.';



  break;

    }

    }

  }

              elseif ($_GET['logout'])

  {

        session_destroy();

  echo 'Zastas wylogowany';

                          }

                  else

                          {

            login_form();

                    }

   ?>


?>[/php]
swamp
a ja mam pytanko: ten skrypt co borec napisal dzila mi dobrze z tym ze jest jedno niedociogniecie:jesli w hasla.dat niema danago loginu i hasla to wyskakuje:
Fatal error: Maximum execution time of 30 seconds exceeded in D:log.php on line 25

skrypt szuka na upartego hasla i loginu przez 30 secund...

jak zrobic by sie pokazalo np:Brak wstepu lub Zle haslo itp?questionmark.gif



zrobilem sobie do tego skrypta rejetracje ,no ale to i tak bezsensu.....
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.