«Отсутствует 500.shtmlController» при отправке формы со словами «выбрать» и «из» в любом текстовом поле в CakePHP - PullRequest
1 голос
/ 17 июня 2011

Этот бросил меня за петлю - даже не уверен, с чего начать.

Если вы отправите форму в моем приложении CakePHP со словами «выбрать» и «из» в любой текстовой области, произойдет ошибка:

Missing Controller

Error: 500.shtmlController could not be found.

Error: Create the class 500.shtmlController below in file: app/controllers/500.shtml_controller.php

<?php
    class 500.shtmlController extends AppController {
        var $name = '500.shtml';
    }
?>

Notice: If you want to customize this error message, create app/views/errors/missing_controller.ctp

Даже если вы введете «selected blah fromy», произойдет ошибка. НО - если вы набираете их в обратном порядке, это не проблема - вы МОЖЕТЕ напечатать "от выбора бла-бла ... и т.д.", и это не проблема.

Я использую плагин валидатора jquery (но я должен предположить, что он не на стороне javascript - похоже, это должно быть что-то с Cake / MySQL?)

ЛЮБЫЕ мысли очень приветствуются.

Ответы [ 3 ]

1 голос
/ 14 июля 2011

У вас установлен Apache ModSecurity?Похоже, ваша строка запускает свой шаблон:

(insert[[:space:]]+into.+values|select.*from.+[a-z|A-Z|0-9]|select.+from|bulk[[:space:]]+insert|union.+select|convert.+\\(.*from)

Найдите что-то вроде ModSecurity: Access denied with code 500 (phase 2) в журнале ошибок.

И похоже, что вы отключили маршрут по умолчанию Pages:

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

, поэтому Cake пытается перенаправить запрос для domain.com/500.shtml на 500.shtmlController.

0 голосов
/ 13 июля 2011

Попробуйте перейти на CakePHP 1.3. Я думаю, что вы используете CakePHP 1.1.

http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3

0 голосов
/ 12 июля 2011

Это на самом деле две проблемы.

  1. Ваши правила перезаписи не работают правильно, если они пытаются передать запрос на "статическую" страницу 500.shtml в Cake. Убедитесь, что ваши файлы .htaccess на месте и Apache настроен на AllowOverride, чтобы файлы .htaccess могли правильно выполнять свою работу.
  2. Что-то не так с кодом, вызывая внутреннюю ошибку сервера при обработке опубликованных данных. Чтобы устранить эту проблему, нам нужно увидеть код, который вы отправляете. Пересмотрите свой вопрос, включив в него соответствующий код контроллера.
...