CakePHP: Как я могу перестать вставлять / добавлять HTML-тег во время комментирования сообщения? - PullRequest
0 голосов
/ 02 октября 2011

Это форма для комментария:

echo $this->Form->create('Comment',array('url'=>array('controller' => 'comments', 'action' =>'add', $listposts['Post']['id']) ) );

echo $this->Form->input('post_id',array('type'=>'hidden','style'=>'width:30%','value'=>$listposts['Post']['id']));  
echo $this->Form->input('name',array('style'=>'width:30%'));
echo $this->Form->input('email',array('style'=>'width:30%'));   
echo $this->Form->input('body',array('rows'=>'5'));

echo $this->Form->end('Comment');

Модель comment.php =>

var $useTable='comments';
var $belongsTo = array('Post');


var $validate = array(
    'name' => array(
        'required' => true,
        'rule' => 'notEmpty',
        'allowEmpty' => false,
        'message' => 'Enter Name.'
    ),
    'email' => array(
        'required' => true,
        'rule' => 'notEmpty',
        'allowEmpty' => false,
        'message' => 'Enter Email.'
    ),
    'body' => array(
        'required' => true,
        'rule' => 'notEmpty',
        'allowEmpty' => false,
        'message' => 'Enter Body.'
    )
);

}

Но во время комментирования кто-то может напечатать в любом текстовом поле форму комментария, как это =>

<script>
    alert("Hello world");
</script>

Тогда это предупреждение будет отображаться при загрузке страницы. Как я могу перестать вставлять эти HTML-теги в базу данных? Как я могу проверить этот блок HTML?

Ответы [ 3 ]

6 голосов
/ 02 октября 2011

Есть два способа справиться с этим: очистка или экранирование строки.Санитарная обработка означает, что вы удаляете весь нежелательный контент.Экранирование означает, что вы «отключаете» любые специальные символы в строке.Вы должны всегда экранировать пользовательский контент при его выводе:

echo htmlspecialchars($comment['body']);

По желанию вы можете захотеть очистить строку, но это может быть сложно.Посмотрите на Торт Sanitize класс . Великий эскапизм также имеет отношение.

1 голос
/ 02 октября 2011

Вы можете использовать: strip_tags() или htmlspecialchars()

$str = "<script>alert('Hello world');</script>";

echo "strip_tags = " . strip_tags($str);
echo "htmlspecialchars = " . htmlspecialchars($str);

Демо

0 голосов
/ 02 октября 2011
...