|
|
|
| Привет) Помогите записать RewriteRule, что бы были такие url www.site.ru/test/tester/y/1/u/7
где, test - имя вызываемого класса,
tester - имя метода класса,
все, что после tester/ - переменные - GET - y=1, u=7 и т.д. | |
|
|
|
|
|
|
|
для: inner
(10.09.2009 в 14:51)
| | а если потом получится
$c = new BigCMSS();
$c->DeleteAllFiles(0);
, а делалосб всё для совсем других методов
? | |
|
|
|
|
|
|
|
для: heed
(10.09.2009 в 16:25)
| | проверки делать буду | |
|
|
|
|
|
|
|
для: inner
(11.09.2009 в 13:46)
| | код будет наверное наполовину (если не больше) состоять из таких проверок
, вообще не понял зачем может понадобиться напрямую передавать в запросе имена и методы классов
, тем-более с заранее неизвестными именами и значениями параметров
получается что в htaccess должна быть такая строка,
RewriteRule ^([a-z]{2,8})/([a-z]{2,8})/([a-z])/([0-9]+)/([a-z])/([0-9]+)/?$ test_MR.php?cname=$1&method=$2&$3=$4&$5=$6
а в этом test_MR.php, примерно такое солличество проверок, только с одним классом
<pre><?php
print_r($_GET);
?>
-----------
<?
if (!isset($_GET['cname'], $_GET['method'],
$_GET['y'], $_GET['u'])
|| ($cnanme = $_GET['cname']) != 'test'
|| ($method = $_GET['method']) != 'tester'
|| $_GET['y'] < 0 || $_GET['y'] > 1000
|| $_GET['u'] < 0 || $_GET['u'] > 1000
)
exit("unacceptable params\n\n");
class test {
private $y;
private $u;
function __construct($x, $z) {
$this->y = $x;
$this->u = $z;
}
function tester() {
echo "<h1>\n" . $this->y . "</h1>\n";
echo "<h2>\n" . $this->u . "</h2>\n";
}
}
$obj = new $cnanme($_GET['y'], $_GET['u']);
$obj->$method();
?>
|
должна быть какая-то логика что должен делать скрипт, и чего не должен
, если классов всего 3 , то в два бита умещается информация, выбрали-ли какой-то из них , или не выбрали никакой
, поэтому никогда-бы не стал передавать имя классов, методов, функций, если только это не было-бы поиском их описания , где-нибудь в мануале
// UPD
столько много проверок ещё и потому что будет возможность обратиться к файлу напрямую | |
|
|
|
|
|
|
|
для: inner
(10.09.2009 в 14:51)
| | test и tester - это тоже будут значения переменных
>>все, что после tester/ - переменные - GET - y=1, u=7 и т.д.
то есть, таких переменных будет сколько угодно? | |
|
|
|
|
|
|
|
для: ride
(11.09.2009 в 14:55)
| | да, я решил эту проблему так...
$url = trim($_SERVER['REQUEST_URI'], '/');
$exp = explode('/', $url);
$controller = $exp[0];
unset($exp[0]);
if(!empty($exp[1])){
$action = $exp[1];
unset($exp[1]);
}
for($i=0, $cnt=count($exp); $i<$cnt; $i++)
{
if($i%2)
{
$params[$exp[$i+1]] = $exp[$i+2];
}
}
|
Примерно как-то так | |
|
|
|
|
|
|
|
для: inner
(10.09.2009 в 14:51)
| | Стоит получать не имя класса, а имя модуля и действие, которое нужно выполнить... | |
|
|
|