2017-06-21 3 views
0

こんにちは、私はZF1を使用していますが、1つの問題があります。ここで私はcuzの「MAXLENGTH」=> 50の、検証エラー「最大文字数は50である」でしょう、私はギリシャ語の文字を入力しようとすると、私の問題は、たとえば、30文字の長さである HtmlEntitiesフィルタを使用したZend framework maxlengthの検証

$htmlEntities = new Zend_Filter_HtmlEntities(array(
     'doublequote' => false, 
     'quotestyle' => ENT_NOQUOTES /*| ENT_SUBSTITUTE | ENT_DISALLOWED | ENT_HTML5*/ 
    )); 
    $elements[] = $this->createElement('text','name',array(
     'belongsTo' => 'event_waiver', 
     'class'  => 'form-text tx name', 
     'label'  => $this->_translate->_('Title'), 
     'required' => true, 
     'value'  => $this->object->name, 
     'description'=> $this->_translate->_('Select a unique title for your waiver. This is how your waiver will be saved and identified within your organization.'), 
     'maxlength' => 50, 
     'filters' => array('StripTags','StringTrim',$htmlEntities,'Null'), 
     'validators' => array(
     array('StringLength',null,array('max'=>50)) 
    ) 
    )); 

私のフォーム

あり、コードの一部これは、htmlentetiesフィルタが適用されているために発生します。誰もこの行動を無効にする方法を知っていますか

答えて

0

私のアドバイスは... フォーム内にHTMLエンティティを使用しないでください。

なぜそれをしたいですか?

出力前に検証してください。ただし、出力は必要ありません。

どこでもUTF-8エンコーディングを使用してください。

おそらく、エンコードと標準についての記事を読んでください。 https://en.wikipedia.org/wiki/Character_encoding

XSS攻撃(クロスサイトスクリプティング)を防止するには、不正な単語フィルタを使用するか、HTML Purifierのようなものを使用します。 http://htmlpurifier.org/

HTMLエンティティのエンコーディングは、ASCII以外のものをHTMLエンティティに変換するだけです。すべての特殊文字が変換されます。 http://unicode.e-workers.de/entities.php

など。ギリシャ文字であるアルファベットβ(ベータ)は、βに変換されます。これはHTMLエンティティです。

うまくいけば助けてもらえました。

幸運を祈る!

//Maybe like that... 
$htmlEntities = new Zend_Filter_HtmlEntities(array(
    'doublequote' => false, 
    'quotestyle' => ENT_NOQUOTES /*| ENT_SUBSTITUTE | ENT_DISALLOWED | ENT_HTML5*/ 
)); 
$elements[] = $this->createElement('text','name',array(
    'belongsTo' => 'event_waiver', 
    'class'  => 'form-text tx name', 
    'label'  => $this->_translate->_('Title'), 
    'required' => true, 
    'value'  => $this->object->name, 
    'description'=> $this->_translate->_('Select a unique title for your waiver. This is how your waiver will be saved and identified within your organization.'), 
    'maxlength' => 50, 
    'filters' => array('StripTags','StringTrim','Null'), 
    'validators' => array(
    array('StringLength',null,array('max'=>50)) 
) 
)); 

// later filter for output 
$name = $htmlEntities->filter($form->getValue('name')); 

//use it in your view or somewhere else 
$this->view->name = $name; 
関連する問題