Şu anda bir şirket için bir MVC Stil çerçevesi üzerinde çalışıyorum ve güvenlik nedenleriyle Query String aracılığıyla iletilen denetleyici/yöntemin RFC için geçerli karakter olduğundan emin olmam gerekir. bulamadığım).Regex ile geçerli sınıf/yöntem adları
class SomEFunk__YClAssName extends Controller
{
}
Ben SomEFunk__YClAssName
doğrulamak ve onu sterilize edecek regex çeşit gerekir:
PHP yorumlayıcısı Örnek için
tarafından izin verilen uygulamalar uyarınca sınıf isimleri sterilize/doğrulamak gerekiyor Gerekirse! Bu aynı zamanda yöntemlerle aynı ilkedir.
birkaç şey gibi
- Sayısallar
- Bazı PHP Özel Karakter izin verilmesi için sadece izin underscores başından
- de dikkate almak yoktur.
Bu veya olası anlatımlarla ilgili her türlü bilgi gerçekten yardımcı olabilir.
private function prepareQueryString()
{
if(strlen($this->query_string) == 0)
{
return;
}
//Remove [ending|starting|multiple] slashes
$this->query_string = preg_replace('/^\/+|\/+$|\/(?=\/)/', '', $this->query_string);
foreach(explode('/',$this->query_string) as $Key => $Value)
{
if($Key == 0)
{
$Controller = $this->AssignController($Value);
}
if($Key == 1)
{
$this->AssignMethod($Value);
}else
{
$this->AssignParam($Value);
}
}
//Build RouterVar stdClass
}
public function AssignController(String $Controller)
{
if(!empty($Controller))
{
//Sanitize
}
}
public function AssignMethod(String $Method)
{
if(!empty($Method))
{
//Sanitize
}
}
public function AssignParam(String $Param)
{
$this->params[] = $Param;
}
Check tabi comment "sterilize" göreceksiniz: Bunu uygulamak gerekir nerede görebilirsiniz
İşte benim Yönlendirici Kanununun bazı olduğunu.
Kod örneği ve belge bağlantısı için teşekkür ederiz. Bunu cevap olarak işaretlerdim. – Xunnamius
** Dikkat **: Başlangıç / bitiş sınırlayıcı verilmediğinden, preg_match'de bir kusur olduğunu düşünüyorum. "$ Input =" Geçerli Bir Geçersiz Sınıf Adı Değil! "Ile kodunuz 1'e dönecektir. Eğer bunu preg_match ('/^[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0- olarak değiştirirseniz 9_ \ x7f- \ xff] * $/', $ giriş); '0 değerini döndürür. –
Başlangıç / bitiş sınırlayıcısında iyi çağrı. – nate