вот. а теперь покажи как ты айдишник передаешь. и самое главное - скажи ЗАЧЕМ ты айдишник передаешь как параметр? у тебя ЧПУ или не ЧПУ?
Ну ты же видел уже, как я передаю его=) Да даже без хренова ЧПУ=) Чтобы просто начал принимать id, и еще кстати lang.
я тя понял. ты хочешь ЧПУ вообще без ЧПУ. хочешь фигачить аргументы запроса к несуществующим урлам. это кстати неплохая практика но ты потом поймешь чем. расскажи мне про флаг QSA в рерайтере.
Чтобы можно было передавать данные в строку запроса, или я неправильно его юзаю? я думал, что если он есть, то можно писать id и прочее в рерайте, а он их подменит, не? Т.е. ссылка у меня будет такая: index?id=1, а в рерайте делать подмену этой строки.
у тебя рерайтер раскладывает адрес на какой-то другой адрес и различные параметры. куэса добавляет к этим параметрам изначально переданные.
так вот, параметры то эти никак не могу передать в даже в адресную строку, потому что он не принимает, даже если напрямую писать ссылку: <a href="index?id=1">text</a>
Видимо нет, раз 404. У меня есть шаблон(views/template.php), по которому выглядят все страницы сайта. Т.е. ссылки меню в нем. Там я и пишу это(даже без БД, простым текстом): Код (PHP): [url="index?id=1"]text[/url] И так пробовал тоже: Код (PHP): [url="/index?id=1"]text[/url] - с лидирующим слешем.
ой, 6ля, тебе еще и про отладку надо будет рассказать... ну ты вообще... оставь в index.php (или куда у тебя там рерайтятся запросы) одну сука строку - phpinfo(); exit; и делай запросы разные. убедись что рерайтер корректно переписывает запрос. когда убедишься что у тебя входное состояние в пхп-машине всегда нужное - убери эту строку и добавь несколько строк с различными объявлениями своих там модулей и тому подобной хрени и убедись что у тебя внутреннее состояние программы соответствует твоим ожиданием. потом уже переходи к вызовам своих модулей контроллеров и прочей лапши. пока у тебя же путь мартышки с гранатой. накидал все в одну кучу. нихера не понимаешь что из этого как работает и работает ли. и просто бестолку рвешь жопу на британский флаг потому что убогий результат не соответствует высоким ожиданиям.
Не будет работать этот php_info, потому что в любом случае 404. Это только усложнит задачу, как мне кажется. Где мануал именно по данному дебагу? Я знаю про просмотр исходного кода HTML, про var_dump, теперь еще про дебаг рерайтера, но не про дебаг php_info.
вот ты даун. если у тебя пхп-машина приняла запрос и направила к файлу в котором вписаны эти конструкции - пхп-машина покажет инфо и сдохнет. если у тебя валится статусом 404 то ты где-то нарукожопил на этапе рерайта и соответственно тебе нужно отладить сначала тот этап разрешения запроса. где читать про дебаг? а нигде. вообще нигде. у тебя в голове должно быть представление о том какие переменные на каком этапе должны иметь какие значения. ты можешь выводить эти значения любым удобным тебе образом. тем же вардампом. но в твоем случае все усложняется тем что ты ни малейшего представления не имеешь о том как у тебя работает тобою же написанная программа. ты та самая настоящая матышка с гранатой. тяп-тяп и готово. ну а вдруг повезет. как видишь чо-то не везет. голову включи уже. зы пхпинфо+экзит это просто удобно набивать. видно сразу все переменные в том числе и окружение. хотя тебе-то это слово ни о чем не скажет. и выходит из исполнения. а значит прикрывает весь оставшийся в файле код. как я до этого только мог додуматься? ах ну да, Я-ТО ИМЕЮ ПРЕДСТАВЛЕНИЕ О ДАННЫХ МНЕ ИНСТРУМЕНТАХ И УМЕЮ ИХ СОЧЕТАТЬ ДЛЯ ДОСТИЖЕНИЯ РЕЗУЛЬТАТА. ЭТО И ЕСТЬ ПРОГРАММИРОВАНИЕ.
О, дааааа...ты изначально родился Богом php, блеать, везде голову включал, не тупил, не косячил, не имел мозги другим, ты изначально уже знал все о php, все о нем знал. Знал о всех запросах, о всех переменных в php, знал все функции php. Вообще все знал! Да, спасибо, Боженька ЯП PHP, за молву твоя. Добавлено спустя 1 минуту 35 секунд: да, я его не совсем понял. Единственное, что я понимаю из его сообщений, что он высокомерный Божок, не более пока что. Или работает учителем в каком-нибудь институте.
я не брался за задачи значительно выше уровня своих знаний. я шел от простого к сложному. а ты жопу рвешь при нулевом понимании происходящего. как видишь твоя модель решения задач обосралась по полной.
нет, он просто социопат. Тебе надо взять от любой cms файл .htaccess убрать все параметры, и все запросы рулить на index.php Куда уж проще.
Код (PHP): RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=$1 [L,QSA] AddDefaultCharset utf-8 меня еще не разу не подводило ))
Спасибо за ответ, но проблема несколько в другом=) У меня движок напрочь отказывается передавать id. Хоть из БД, хоть не из БД, хоть обычным кодом. Он не принимает никаких ?id или ?route или ?lang в ссылке, он(движок) редиректит сразу на 404 и все. Он понимает только название моих файлов в представлении без .php, не более.
Огромная просьба, не отвечай больше мне в моих темах. Мне неприятна твоя манера общения. Пусть даже мне в теме никто не ответит, не надо надрываться и отвечать мне сквозь оскаленные зубы. Я понимаю, что у тебя расстройство, но меня это как-то не волнует. Мне трудно потом сидеть с плохим настроением, и разбираться в своих ошибках. Спасибо за понимание! Добавлено спустя 31 секунду: Код (PHP): class Route { static function start() { // контроллер и действие по умолчанию $controller_name = 'index'; $action_name = 'index'; $routes = explode('/', $_SERVER['REQUEST_URI']); // получаем имя контроллера if (!empty($routes[1])) { $controller_name = $routes[1]; } // получаем имя экшена if (!empty($routes[2])) { $action_name = $routes[2]; } // добавляем префиксы $model_name = 'Model_'.$controller_name; $controller_name = 'Controller_'.$controller_name; $action_name = 'action_'.$action_name; // Для шаблонов пользовательских шаблонов. Подцепляем файл с классом модели (файла модели может и не быть) $model_file = strtolower($model_name).'.php'; $model_path = "core/models/".$model_file; if(file_exists($model_path)) { include "core/models/".$model_file; } // подцепляем файл с классом контроллера $controller_file = strtolower($controller_name).'.php'; $controller_path = "core/controllers/".$controller_file; if(file_exists($controller_path)) { include "core/controllers/".$controller_file; } else { /* правильно было бы кинуть здесь исключение, но для упрощения сразу сделаем редирект на страницу 404 */ Route::ErrorPage404(); } // создаем контроллер $controller = new $controller_name; $action = $action_name; if(method_exists($controller, $action)) { // вызываем действие контроллера $controller->$action(); } else { // здесь также разумнее было бы кинуть исключение Route::ErrorPage404(); } } public static function ErrorPage404() { $host = 'http://'.$_SERVER['HTTP_HOST'].'/'; header('HTTP/1.1 404 Not Found'); header("Status: 404 Not Found"); header('Location:'.$host.'404'); } }
попробуй так Код (PHP): $request = $_REQUEST; $route = explode('/', array_shift($request)); в route у тебя будет массив с контроллером и экшном, а в request массив с параметрами я так понимаю у тебя вот тут Код (PHP): if(file_exists($controller_path)) { include "core/controllers/".$controller_file; } else { /* правильно было бы кинуть здесь исключение, но для упрощения сразу сделаем редирект на страницу 404 */ Route::ErrorPage404(); } всегда else выполняется ))
Воууууу, реально пошло=))) Спасибо огромнейшее тебе=)))) Добавлено спустя 5 минут 3 секунды: Нет, но оно и срабатывало, когда я передавал параметры.
ну я это и имел ввиду, у тебя в controller_file было все что после 2 слеша, включая параметры, вот файл и не находился