![](/img/trans.png)
[英]In joomla 2.5 how can I add a custom php response script to an html form?
[英]add recaptcha to a php mail form in joomla 2.5
我試圖將ReCaptcha添加到我創建的用於共享內容的郵件表單中,但是由於某些原因,當我點擊“提交”時,驗證碼沒有得到驗證,這意味着即使您在驗證碼中輸入了錯誤的文本,表格仍會發送電子郵件。 我正在使用joomla 2.5.8,啟用了recaptcha插件(盡管我不認為這是初始化的,因為我自己添加了recaptchalib.php,並且在郵件表單代碼中包括了對publickey和privatekey的引用)。
任何幫助將不勝感激! 謝謝!! 這是代碼:
<?php require_once('recaptchalib.php'); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript" type="text/javascript">
function validateEmail($email)
{
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if( !emailReg.test( $email ) )
{
return false;
}
else
{
return true;
}
}
function validateForm()
{
var form = document.mailForm;
if (form.recipient.value == "" || validateEmail(form.recipient.value)==false)
{
alert("bad email");
return false;
}
if (form.subject.value == "")
{
alert("please enter subject");
return false;
}
if (form.content.value == "")
{
alert("please enter massage");
return false;
}
<?php
$privatekey = "privatekey";
$resp = recaptcha_check_answer($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]); ?>
if (!$resp->is_valid)
{
alert("try again");
return false;
}
return true;
}
</script>
<?php
if($this->success=='1')
{
echo JText::_('MAIL_SEND_SUCCESSFULLY');
}
elseif($this->success=='0')
{
echo JText::_('MAIL_SEND_FAILED');
}
?>
<div id="SendMail">
<h2>send mail</h2>
<form action="index.php" name="mailForm" method="post" onsubmit="return validateForm()">
<table>
<tr>
<td><label><?php echo JText::_('MAIL_SEND_TO'); ?>:</label></td>
<td><input type="text" name="recipient" size="25" value=""/></td>
</tr>
<tr>
<td><label><?php echo JText::_('MAIL_SUBJECT'); ?>:</label></td>
<td><input type="text" name="subject" size="25" value=""/></td>
</tr>
<tr>
<td><label><?php echo JText::_('MAIL_MESSAGE'); ?>:</label></td>
<td>
<textarea name="content" rows="10" cols="40"></textarea>
<br/><?php echo JText::_('MAIL_DESC'); ?>
</td>
<tr>
<td><?php $publickey = "public key"; ?></td>
<td><?php echo recaptcha_get_html($publickey);?></td>
</tr>
</table>
<p>
<input type="hidden" name="controller" value="mail" />
<input type="hidden" name="task" value="sendMail" />
<div class="button-mail">
<input style="width: 50px;height: 25px;" type="submit" name="submit" value="<?php echo JText::_('SEND'); ?>"/>
<a href="javascript: void window.close()" title="Close Window"><span style="color: #444;
border: #D5D5D5 1px solid; padding: 4px; width: 50px;height: 25px;"><?php echo JText::_('CLOSE'); ?></span></a>
</div>
</p>
</form>
</div>
您的代碼有誤。 請看這筆
if (!$resp->is_valid)
{
alert("try again");
return false;
}
$resp->is_valid
是PHP,但以JS執行。
正確的代碼是
if (!<php (int)$resp->is_valid;?>) { alert("try again"); return false; }
但由於2,它無論如何都無法工作。
您無法在Javascript驗證中檢查重新驗證碼。 應該在服務器端進行檢查。 或者,如果您要使用JavaScript進行檢查,則應使用對服務器的AJAX請求進行檢查。 那是因為你編碼
<?php $privatekey = "privatekey"; $resp = recaptcha_check_answer($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]); ?>
在用戶加載驗證碼之前甚至在窗體加載時執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.