Matimor
13.09.2009, 11:27:03
Witajcie
Mam taki problem, zrobiłem system logowania na stronie lecz, gdy zaloguję się np. na stronie głównej i przejdę do innej zakładki to już jestem wylogowany i tak w kółko. Jak mogę zrobić to na podstawie ciasteczek? Tak aby zapisywało mi sesję itd. Wszystko jest zrobione pod sesion_start itp.
Aha dodam jeszcze, że w każdej zakładce login.php jest pod include.
wookieb
13.09.2009, 11:27:53
Nie podałeś kodu więc jak mamy ci pomóc. Modlitwą?
Poza tym czytaj manual w dziale z sesjami.
drake88
13.09.2009, 11:30:34
zastosuj PHPSESSID, która jest unikalnym ciągiem znaków, wysyłanym do przeglądarki użytkownika i zapisywana na dysku jako ciasteczko (cookie).
Matimor
13.09.2009, 11:30:52
Sry zapomniałem kodu.
<?php
$mode = $_GET['m'];
if(!$x)
{
or
die('Nieudane połączenie z bazą danych.'); or
die('Nie udało się wybrać bazy danych.'); $x = true;
}
if($mode == 'logout' && $_SESSION['zalogowany'])
{
echo '<meta http-equiv="refresh" content="0; url=http://www.adres-forum.pl">'; }
if(isset($_POST['submit_reg'])) {
$login = $_POST['login'];
$password = $_POST['password'];
$password = md5($password); $sql = "INSERT INTO users (username, password) VALUES('$login','$password')";
{
echo '<meta http-equiv="refresh" content="0; url=./zakonczenie.php">'; }
else
{
echo 'bład przesylu danych!'; }
}
else if(isset($_POST['submit_log'])) {
$login = $_POST['login'];
$password = $_POST['password'];
$password = md5($password); $sql = "SELECT * FROM users WHERE username = '$login' AND password = '$password'";
{
if($row['password'] == $password)
{
$_SESSION['zalogowany'] = true;
$_SESSION['username'] = $row['username'];
}
else
{
echo '<meta http-equiv="Refresh" content="0; URL=login.php"; />'; }
}
else
{
echo 'Brak danych dla tego logina'; }
}
?>
wookieb
13.09.2009, 11:33:04
A na każdej stronie masz session_start na początku?
I nie komentuje kompletnego braku zabezpieczenia przed sql injection...
Matimor
13.09.2009, 11:36:24
Tak mam.
Jak mam to zabezpieczyć?
drake88
13.09.2009, 11:38:54
chcesz zabezpieczyć sesje?
$session_timeout = 60 * 1200; // czas po którym sesja ma wygasnąć w sekundach
$session_fingerprint = @md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']);
if (
(isset($_SESSION['last_active']) && $_SESSION['last_active']<(time()-$session_timeout))
|| (isset($_SESSION['fingerprint']) && $_SESSION['fingerprint']!=$session_fingerprint))
{
}
$_SESSION['last_active'] = time();
$_SESSION['fingerprint'] = $session_fingerprint;
Matimor
13.09.2009, 11:40:37
Nie wiem czy właśnie o to chodziło ale też się przyda, chodzi dokładniej o sql injection.
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.