wie wird das CAPTCHA eigentlich überprüft? Im blog - Beispiel sehe ich lediglich dass, das Captcha aufgerufen wird, aber nirgendwo eine Überprüfung stattfindet.
Mein Problem ist das mein CAPTCHA immer fehlschlägt.
Model
public $checkCode;
rules....
array('checkCode', 'captcha', 'allowEmpty'=>!extension_loaded('gd'), 'message' => 'Das eingegeben CAPTCHA stimmt nicht überein.'),
Im View rufe ich das CAPTCHA auf
<?php
if(extension_loaded('gd')): ?>
Geben Sie die angzeigten Buchstaben / Zahlen aus dem Bild ein. <br/>
<?php $this->widget('CCaptcha'); ?>
<?php echo CHtml::activeTextField($model, 'checkCode'); ?>
<?php endif;?>
Im Controller überprüfe ich nirgendwo auf Korrektheit, aber ich wüsste grad auch nicht wie ich das überprüfen sollte.
public $verifyCode;
public function rules()
{
array('verifyCode', 'captcha', 'allowEmpty'=>!extension_loaded('gd'), 'message' => 'Das eingegeben CAPTCHA stimmt nicht überein.'),
}
Mein Controller system_suggestionsController.php
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'list' and 'show' actions
'actions'=>array('list','show', 'captcha'),
'users'=>array('*'),
),
)
}
public function actions()
{
return array(
'captcha'=>array(
'class'=>'CCaptchaAction',
'backColor'=>0xEBF4FB,
),
);
}
Meine View
<?php if(extension_loaded('gd')): ?>
Geben Sie die angzeigten Buchstaben / Zahlen aus dem Bild ein. <br/>
<?php $this->widget('CCaptcha'); ?>
<input type="text" name="suggestions[verifyCode]">
<?php endif; ?>
<?php echo CHtml::error($model, 'verifyCode'); ?>
ok das sind Sicherheitseinstellungen die ich noch definieren muss, dennoch hilft mir das bei meinem Problem grad nicht weiter.
Obwohl der Wert vom Captcha in der Variable richtig übermittelt wird, kriege ich ständig einen Fehler, als ob der Validator das eingegebene Captcha nicht erhält
Das Captcha für das einfache Kontaktformular, läuft auf dem Productionsystem ohne Probleme, auf meinem Testsystem (Windows 7, XAMPP) kriege ich ständig die Meldung, dass das eingegebene Captcha nicht stimmt.
Ok, dann prüf doch auch mal, was dort $this->getVerifyCode() liefert. Und schau dir auch die Funktion mal an, dort wird der Key aus der Sessio ausgelesen bzw. generiert. So findest du Step by Step raus, wo’s hapert…
Achso, und prüf nochmal in deinem Controller direkt nachdem du die $_POST-Variablen zugewiesen, hast, ob dein Code wirklich im Model landet. Kann nicht ganz erkennen, wo deine Tests oben eingebaut hast.
protected function validateAttribute($object,$attribute)
{
$value=$object->$attribute;
echo "<pre>";
print_r($object->verifyCode);
echo "</pre>";
Liefert mir, mein eingegebens Captcha
4.) $this->getVerifyCode(). Irgendwie kann ich das Ding nirgendswo aufrufen, rufe ich das CCaptcaAction::getVerifyCode auf, kriege ich einen Fehler und $this->getVerifyCode() geht auch nicht
$captcha enthält ein CCaptchaAction-Objekt. Den Code kriegst du also mit $captcha->getVerifyCode(). Wiegesagt, am besten schaust du dir auch mal web/widgets/captcha/CCaptchaAction.php an. Tippe trotzdem auch auch ein Session-Problem.
so, ich habe das Problem nun soweit eingegrenzt, dass auf meinem System, garkeine Sessions funktionieren.
Wenn ich den Beispiel Blog auf dem framework nehme, und dort versuch mich mit dem Beispielaccount anzumelden, so passiert garnichts, die eingegebenen Captchas funktionieren auch nicht.
Ich habe die Browser FF, IE und Opera schon gewechselt, aber bei allen tritt der Fehler auf!