Je to luknja?
 
blackmamba 12. jan 2012 20:54:14 Pridružen od:
4. mar 2008
559 objav
392 25 11
#1

Živjo mojstri!

Napisal sem primer, za katerega me zanima ali je luknjast oz. ali lahko kak zlobnež pokliče kakšno neželjeno funkcijo. Jaz mislim da je ok.



Hvala za vaša mnenja :)



Primeri klicev:

http://localhost/test.php

http://localhost/test.php?action=test

http://localhost/test.php?action=blaaaa


<?php

class Mama
{
protected $action;

protected function indexAction(){
return 'index akcija';
}

public function handle()
{
if(empty($this->action))
{
return $this->indexAction();
}
if(preg_match('/^[a-z_0-9]+$/i', $this->action))
{
return $this->{"{$this->action}Action"}();
}
}

public function __call($name, $args)
{
return 'Akcija <b>'.htmlspecialchars($name).'</b> ne obstaja.';
}
}

class Test extends Mama
{
public function __construct()
{
if(isset($_GET['action']))
{
$this->action = $_GET['action'];
}
}

protected function testAction(){
return 'test';
}
}

$test = new Test();
print($test->handle());

?>
všeč(0) ni všeč(0) spam(0)
 
krho 14. jan 2012 07:46:07 Pridružen od:
7. jul 2011
58 objav
26 4 1
#2

Po hitrem pregledu, razen neenakomernega code styla :P, jaz ne vidim problemov.

Offtopic: A Symfony2 components stuff je bil preveč? Ker avtor sedaj piše bloge s navodili kako ji uporabiti..


všeč(0) ni všeč(0) spam(0)
www.pagein.si | www.nadzornaplošča.si - Kvalitetno, zanesljivo in cenovno ugodno gostovanje elektronskih poštnih predalov.
 
SlimDeluxe 14. jan 2012 08:18:08 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#3

Kje pa vidiš, da uporablja oz. želi uporabljati Symfony2 ?



blackmamba: Jaz osebno, bi raje uporabil method_exists funkcijo.


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
blackmamba 14. jan 2012 09:26:37 Pridružen od:
4. mar 2008
559 objav
392 25 11
#4

@krho: Hehe, s code stylom sem se res 10 min zafrkaval, da sem vse text indente s presledki naredil itd, ekstra sem se še potrudil z { in \n{ ,ampak tebi nič ne uide :)



Nazadnje, ko si mi predlagaly Symfony2 si mi dal ogromno zanimivega branja in danes tudi, thx! Nekaj komponent sem tudi uporabil.

Routing komponente ne morem uporabiti, ker moj sistem generira url-je na drugačen način in do klica kontrolerjev je druga pot(podobna, ampak drugače :)).

Zgornji primer sem si izmislil samo za IM, da sem lahko približno razumljivo vprašal kaj me zanima.



@Slim: Pomojem je posumil na Symfony2 zaradi indexAction() :)

Se strinjam, __call() ni primarno namenjen za ugotavljanje ali funkcija obstaja. Tukaj pokličem default funkcije, kar sem v primeru zbrisal.


všeč(0) ni všeč(0) spam(0)
 
krho 15. jan 2012 15:41:43 Pridružen od:
7. jul 2011
58 objav
26 4 1
#5

@SlimDeluxe: šlo je za komponente iz sf2 in ne za celoten framework. Zadnjič sem mu dal predlog za to.



@blackmamba: naredi razred, kateri implementira RouterInterface :), pa bi moralo iti tudi s Routing komponento.


všeč(0) ni všeč(0) spam(0)
www.pagein.si | www.nadzornaplošča.si - Kvalitetno, zanesljivo in cenovno ugodno gostovanje elektronskih poštnih predalov.
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se