ugrás a tartalomhoz

Archívum - Okt 28, 2011

Ajax & Post biztosítás

vtsoftware · 2011. Okt. 28. (P), 21.45
Üdv mindenkinek.

Egy olyan elméleti problémán akadtam meg, hogy hogyan tudnám megvédeni az Ajax lekérések fájljait és a Post-olt adatokat feldolgozó fájlokat attól hogy bárki, bármikor megnyithassa a "feldolgozó" fájlokat.

Adott egy oldal - urlap.php - amin van egy űrlap, ami adatokat küld post metódussal a feldolgoz.php-nek.
Hogy tudom a legbiztosabban leellenőrizni hogy a feldolgoz.php mindenképp az urlap.php-től kapott adatot?

Vagy a másik eset, mikor az oldal - nyito.php - időzítve elindít egy ajax lekérést a mikor.php-felé.
Semmit nem küld, csak megjeleníti a mikor.php tartalmát.
De ezt csak akkor kellene tennie ha ajax-al, a nyito.php-ről és annak a domainjéről lett megnyitva.

A Referer kilőve, űrlapnál az isset és a formátumellenőrzés az alap, ajax-nál a X-Requested-With header nem mondható 100%-os biztosnak, a defined-et nem mondanám elegánsnak - bár nem tudom.

Elgondolkodtam hogy esetleg Session-al valahogy meg lehetne ezt oldani...
Betöltéskor megnézem hogy létezik-e az adott session.
Ha nincs, létrehozom és eltárolom benne az akkori dátumot/időt.
Ha van, megnézem hogy a tárolt adat régebbi-e mint pl. 3 perc.
Ha nem régebbi, akkor minden rendben.
Ha viszont régebbi, akkor nem küldhetek 404-et vagy hibaoldalt/hibaüzenetet mert lehet hogy egy űrlapon eltölt a felhasználó 3 percnél többet... sőt.
Tehát szerintem ez az ötletem sem a legjobb.

Lehet egyáltalán ilyen "csak úgy" lekéréstől valahogy védekezni?

Előre is köszönöm
 

OOP class para

Leki · 2011. Okt. 28. (P), 18.48
Adott ez a két osztály

class NewsClass extends MainClass{
	function __construct() {
		parent::_construct();
		$db=$this->db();
	}
	function test(){
		$result=$db->query("SELECT * FROM information_schema.TABLES");
		return $result->numRows();
	}
	function accessFilter(){
		parent::accessFilter();
		
	}
	function getIdByurl(){
	}


}
A másik:

class MainClass{
	function __construct(){
		$db=$this->db();
		$this->accessFilter();
	}
	function accessFilter(){
		
	}
	function db() {
		require_once(ROOT."/libs/pear/MDB2.php");
		$db=&MDB2::connect("mysql://".DBUSER.":".DBPASS."##kukac##".DBHOST."/".DBNAME);
		if (PEAR::isError($db)) die($db->getMessage());
		$db->setFetchMode("2");
		$db->setCharset("utf8");
		return $db;
	}
	function smarty() {
		require_once(ROOT."/libs/smarty/Smarty.class.php");
		$view=new Smarty();
		$smarty->force_compile=true;
		$smarty->caching=false;
		$view->template_dir=ROOT."/themes/templates/";
		$view->compile_dir=ROOT."/themes/templates_c/";
		$view->cache_dir=ROOT."/themes/cache/";
		$view->config_dir=ROOT."/themes/configs/";
		return $view;
	}
	function xml() {
		$parser=new myParser();
		$parser->setInputFile(_ROOT.'/lang/'._PAGE_LANGUAGE.'.xml');
		$parser->parse();
	}
}
Ha meghívom a teszt függvényt, akkor :

"Fatal error: Call to a member function query() on a non-object"...

Ezzel szemben ha a teszt() a gyermek osztályban így néz ki

class NewsClass extends MainClass{
	function __construct() {
		parent::__construct();
	}
	function test(){
                $db=$this->db();
		$result=$db->query("SELECT * FROM information_schema.TABLES");
		return $result->numRows();
	}
	function accessFilter(){
		parent::accessFilter();
		
	}
	function getIdByurl(){
	}


}
Így működik, miért így van ez?

WebSpell CMS kérdés

Laurens · 2011. Okt. 28. (P), 12.04
Sziasztok!

Először is nem tudom jó helyre írom-e, remélem igen!
Egy WebSpell CMS alapú weboldalt készítek és eddig sikeresen veszem az akadályokat, ám most elakadtam valamiben, és nem tudom merre induljak el a probléma megoldásához! A gond a következő:

Minden oldalon bal oldalt egy kis dobozka kilistázza a legutóbb hozzáadott videókat.



Ez így is van egészen addig amíg bele nem megyek egy kategóriába illetve ha egy videót szeretnék megnézni.

OFF: Levlista

lolka_bolka · 2011. Okt. 28. (P), 10.40
Sziasztok!

Nagyon off, csak egy gyors kérdés, mert úgy látom, ahova feltettem a kérdésem, ott nem igazán nagy az aktivitás.

http://weblabor.hu/forumok/temak/110328

Illetve fel lehet iratkozni téma értesítőre?

Sorry az OFF-ért, de nagyon kéne a lista.