Autor Zpráva
rkomoras
Profil
Zdravím, mám problém s platností session při vkládání článků. Když píšu článek, a potvrdím formulář, občas se stane, že vyprší session, já se ocitnu na přihlašovací stránce a všechen text je ztracen. Napadlo mě zrušit ověřování session v souboru se SQL příkazy, session se stejně ověřuje na každé stránce:
session_start();
if(!isset($_SESSION["admin"]) || $_SESSION["admin"]==0) header("Location: index.php");

Je to bezpečné?
WertriK
Profil
rkomoras:
Nebo místo použití session si vytvoř cookie a kontroluj zda existuje, při odhlášení ji jen zničíš.
rkomoras
Profil
Já to mám přes session, protože jsou prý nejbezpenější.
EDIT: teď jsem si všiml, že se ten článek přidal...
GeneralDv
Profil
rkomoras:
Já to mám přes session, protože jsou prý nejbezpenější.
Já to mám taky přes sessions i přes cookie, ale kontroluje se to podle údajů v DB.
AM_
Profil
je hloupost dělat nějaké koniny jako rušit session na některých stránkách. Raději to vyřeš centrálně, a to následovně:
- pokud se odešlou nějaká POST data a vyprší session, tak je přihlašovací stránka "nezahodí", ale znovu je pomocí skrytých inputů předá dál; přičemž po opětovném přihlášení to uživatele vrátí tam, kde byl předtím, nevyhodí ho to na úvod.
rkomoras
Profil
Asi to tak udělám...pořád jsem si myslel že tohle:
session_start();
require_once("../includes/connection.php");
if(!isset($_SESSION["admin"]) || $_SESSION["admin"]==0) header("Location: index.php");

$nazev = $_POST["nazev"];
$kategorie = $_POST["kategorie"];
$content1 = $_POST["content1"];
$content2 = $_POST["content2"];
$datumacas = date("j.n.Y G:i");

$sql = "INSERT INTO clanky (titulek, datum, uvod, obsah, kategorie)
        VALUES ('$nazev', '$datumacas', '$content1', '$content2', $kategorie);";

$query = mysql_query($sql) or die ("Někde se stala chyba: " . mysql_error());

header("Location: clanky.php?added");

mě přesune na index.php a neuloží výsledky do databáze....
AM_
Profil
tak tohle je zabezpečení na nic, to ti na tom webu udělám cokoliv, aniž bych znal heslo :) stačí jen vědět ,jaká data na kterou stránku zaslat.
Správně je:
if(!isset($_SESSION["admin"]) || $_SESSION["admin"]==0) { header("Location: index.php"); die(); }
rkomoras
Profil
Jenže pak bych musel vytvářet hidden inputy pro každé pole v administraci v index.php, ne? Nebo to mám dát do GET?
Alphard
Profil
[#8]
$_POST je normální pole, hidden pole můžete vytvořit ve foreach(). Nebo si je někam uložte a přenášejte jenom identifikátor. Třetí možnost bych viděl v tom, že zápis do databáze musí být stejně zabezpečený, takže to můžete hodit rovnou do tabulky a jen k tomu přidat příznak, že to není chválené. Pak by to ale chtělo nějakého správce, který jednou za čas smaže smetí.
rkomoras
Profil
[#9] Alphard
Teď jsem to nepochopil...radši si zkusím prodloužit session.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: