Ich versuche, einen Wortfilter in meiner Magento Site zu erstellen, im Grunde habe ich ein Formular mit einem Textfeld und eine Schaltfläche wie folgt einreichen:Word-Filter mit PHP
<form id="answer_form_<?php echo $id;?>" class="form" method="post"
action="<?php echo Mage::getUrl('productquestions/productquestions/saveanswers',array('product_questions_id'=>$id));?>">
<textarea id="txt_send" class="input-text required-entry " name="content"
id="answer_content_<?php echo $id;?>" title="Content"></textarea>
<button id="btn_send" style="float: left;" type="submit" class="button"
title="Send Message"><span><span><?php echo $this->__('Send Message') ?></span></span></button>
</form>
Was ich tun muß, ist zu filter die worte aus dem textarea wenn das formular gesendet wird vor es ist auf der datenbank gespeichert, so dass ich einige php funktionen gegründet und angepasst habe. Der letzte Code ist:
function wordFilter($text) {
$filter_terms = array('\bass(es|holes?)?\b','\bshit(e|ted|ting|ty|head)\b');
$filtered_text = $text;
foreach($filter_terms as $word) {
$match_count = preg_match_all('/' . $word . '/i', $text, $matches);
for($i = 0; $i < $match_count; $i++) {
$bwstr = trim($matches[0][$i]);
$filtered_text = preg_replace('/\b' . $bwstr . '\b/', str_repeat("*", strlen($bwstr)), $filtered_text);
}
}
return $filtered_text;
}
if(isset($_POST['btn_send'])) {
$text = htmlentities($_POST['txt_send']);
$text = wordFilter($text);
}
Habe ich nur zwei Worte für den Test so weit, und wenn ich den Text mit beiden Worten tun wird es gespeichert normalerweise ohne sie zu „*****“ zu ändern. Ich habe es vermieden, JS zu verwenden, da es sich um eine Client-Seite handelt.
Kann mir jemand sagen, was ich vermisse?
Danke!
EDITED:
Als Magento-Plugin. Die Aktion leitet das Formular um: productquestions/productquestions/saveanswers',array('product_questions_id'=>$id));
und je nach ID ändert es die URL. Als Beispiel: siteurl/index.php/productquestions/productquestions/saveanswers/product_questions_id/40
in dieser Controller Seite habe ich die Funktion:
public function saveanswersAction()
{
$answers = $this->getRequest()->getPost();
$answerCollection = array();
$model = Mage::getModel('productquestions/answers');
$id = $this->getRequest()->getParam('product_questions_id');
$model->setData('product_questions_id',$id);
$model->setData('answers',$answers['content']);
$model->save();
$answerCollection[] = $model;
}
bearbeitet, danke! –