Php 如何为验证码添加重新加载链接?
我对这个问题做了一些研究,但是每个php表单都不同,所以其他人的解决方案可能不适合我。 我想有一个链接,说重新加载验证码,当它点击它重新加载而不刷新页面。 我的表单确实使用了AJAX和javascript,我猜这就是正确实现这一点所需要的 我的表单的javascript如下所示:Php 如何为验证码添加重新加载链接?,php,javascript,ajax,forms,captcha,Php,Javascript,Ajax,Forms,Captcha,我对这个问题做了一些研究,但是每个php表单都不同,所以其他人的解决方案可能不适合我。 我想有一个链接,说重新加载验证码,当它点击它重新加载而不刷新页面。 我的表单确实使用了AJAX和javascript,我猜这就是正确实现这一点所需要的 我的表单的javascript如下所示: jQuery(document).ready(function() { $('.contactform').submit(function() { var action = $(this).attr('acti
jQuery(document).ready(function() {
$('.contactform').submit(function() {
var action = $(this).attr('action');
var form = this;
$('.submit', this).attr('disabled', 'disabled').after(
'<img src="assets/ajax-loader.gif" class="loader" />');
$('.message', this).slideUp(750, function() {
$(this).hide();
$.post(action, {
name: $('.name', form).val(),
email: $('.email', form).val(),
phone: $('.phone', form).val(),
comments: $('.comments', form).val(),
verify: $('.verify', form).val()
},
function(data) {
$('.message', form).html(data);
$('.message', form).slideDown('slow');
$('img.loader', form).fadeOut('fast', function() {
$(this).remove();
});
$('.submit', form).removeAttr('disabled');
if (data.match('success') != null)
$('.message', form).show().delay(5000).fadeOut();
});
});
return false;
});
});
<?php if (!isset($_SESSION)) session_start();
if(!$_POST) exit;
if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");
$address = "email@domain.com";
$bcc = "email@domain.com";
$twitter_active = 0;
$twitter_user = ""; // Your user name
$consumer_key = "";
$consumer_secret = "";
$token = "";
$secret = "";
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$dayin = $_POST['dayin'];
$dayout = $_POST['dayout'];
$comments = $_POST['comments'];
if (isset($_POST['verify'])) :
$posted_verify = $_POST['verify'];
$posted_verify = md5($posted_verify);
else :
$posted_verify = '';
endif;
// Important Variables
$session_verify = $_SESSION['verify'];
if (empty($session_verify)) $session_verify = $_COOKIE['verify'];
$error = '';
if(trim($name) == '') {
$error .= '<li>Your name is required.</li>';
}
if(trim($email) == '') {
$error .= '<li>Your e-mail address is required.</li>';
} elseif(!isEmail($email)) {
$error .= '<li>You have entered an invalid e-mail address.</li>';
}
if(trim($phone) == '') {
$error .= '<li>Your phone number is required.</li>';
} elseif(!is_numeric($phone)) {
$error .= '<li>Your phone number can only contain digits (numbers
and no spaces).</li>';
}
if(trim($comments) == '') {
$error .= '<li>You must enter a message to send.</li>';
}
if($session_verify != $posted_verify) {
$error .= '<li>The verification code you entered is incorrect.
</li>';
}
if($error != '') {
echo '<div class="error_message">Attention! Please correct the
errors below and try again.';
echo '<ul class="error_messages">' . $error . '</ul>';
echo '</div>';
} else {
if(get_magic_quotes_gpc()) { $comments = stripslashes($comments); }
$e_subject = 'Website Enquiry';
$msg = '<html><body> </body></html>';
if($twitter_active == 1) {
$twitter_msg = $name . " - " . $comments . ". You can contact " .
$name . " via email, " . $email ." or via phone " . $phone . ".";
twittermessage($twitter_user, $twitter_msg, $consumer_key,
$consumer_secret, $token, $secret);
}
$msg = wordwrap( $msg, 70 );
$headers = "From: $email\r\nBCC:{$bcc}\r\n" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/html; charset=utf-8" . PHP_EOL;
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\r\n" . PHP_EOL;
if(mail($address, $e_subject, $msg, $headers)) {
echo "<fieldset>";
echo "<div id='success_page'>";
echo "<img src='success.png' align='absmiddle' style='padding-right:5px;'
/><strong>Email Sent Successfully.</strong>";
echo "</div>";
echo "</fieldset>";
} else {
echo 'ERROR!'; // Dont Edit.
}
}
function twittermessage($user, $message, $consumer_key, $consumer_secret, $token,
$secret) { // Twitter Direct Message function, do not edit.
require_once('twitter/EpiCurl.php');
require_once('twitter/EpiOAuth.php');
require_once('twitter/EpiTwitter.php');
$Twitter = new EpiTwitter($consumer_key, $consumer_secret);
$Twitter->setToken($token, $secret);
$direct_message = $Twitter->post_direct_messagesNew( array('user' => $user, 'text'
=> $message) );
$tweet_info = $direct_message->responseText;
}
?>
<label for="verify" accesskey="V"> <img src="image.php"
alt="Image verification" border="0"/></label>
<input name="verify" type="text" id="verify" class="verify" size="6" value=""
style="width: 50px;" />
PHP表单如下所示:
jQuery(document).ready(function() {
$('.contactform').submit(function() {
var action = $(this).attr('action');
var form = this;
$('.submit', this).attr('disabled', 'disabled').after(
'<img src="assets/ajax-loader.gif" class="loader" />');
$('.message', this).slideUp(750, function() {
$(this).hide();
$.post(action, {
name: $('.name', form).val(),
email: $('.email', form).val(),
phone: $('.phone', form).val(),
comments: $('.comments', form).val(),
verify: $('.verify', form).val()
},
function(data) {
$('.message', form).html(data);
$('.message', form).slideDown('slow');
$('img.loader', form).fadeOut('fast', function() {
$(this).remove();
});
$('.submit', form).removeAttr('disabled');
if (data.match('success') != null)
$('.message', form).show().delay(5000).fadeOut();
});
});
return false;
});
});
<?php if (!isset($_SESSION)) session_start();
if(!$_POST) exit;
if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");
$address = "email@domain.com";
$bcc = "email@domain.com";
$twitter_active = 0;
$twitter_user = ""; // Your user name
$consumer_key = "";
$consumer_secret = "";
$token = "";
$secret = "";
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$dayin = $_POST['dayin'];
$dayout = $_POST['dayout'];
$comments = $_POST['comments'];
if (isset($_POST['verify'])) :
$posted_verify = $_POST['verify'];
$posted_verify = md5($posted_verify);
else :
$posted_verify = '';
endif;
// Important Variables
$session_verify = $_SESSION['verify'];
if (empty($session_verify)) $session_verify = $_COOKIE['verify'];
$error = '';
if(trim($name) == '') {
$error .= '<li>Your name is required.</li>';
}
if(trim($email) == '') {
$error .= '<li>Your e-mail address is required.</li>';
} elseif(!isEmail($email)) {
$error .= '<li>You have entered an invalid e-mail address.</li>';
}
if(trim($phone) == '') {
$error .= '<li>Your phone number is required.</li>';
} elseif(!is_numeric($phone)) {
$error .= '<li>Your phone number can only contain digits (numbers
and no spaces).</li>';
}
if(trim($comments) == '') {
$error .= '<li>You must enter a message to send.</li>';
}
if($session_verify != $posted_verify) {
$error .= '<li>The verification code you entered is incorrect.
</li>';
}
if($error != '') {
echo '<div class="error_message">Attention! Please correct the
errors below and try again.';
echo '<ul class="error_messages">' . $error . '</ul>';
echo '</div>';
} else {
if(get_magic_quotes_gpc()) { $comments = stripslashes($comments); }
$e_subject = 'Website Enquiry';
$msg = '<html><body> </body></html>';
if($twitter_active == 1) {
$twitter_msg = $name . " - " . $comments . ". You can contact " .
$name . " via email, " . $email ." or via phone " . $phone . ".";
twittermessage($twitter_user, $twitter_msg, $consumer_key,
$consumer_secret, $token, $secret);
}
$msg = wordwrap( $msg, 70 );
$headers = "From: $email\r\nBCC:{$bcc}\r\n" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/html; charset=utf-8" . PHP_EOL;
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\r\n" . PHP_EOL;
if(mail($address, $e_subject, $msg, $headers)) {
echo "<fieldset>";
echo "<div id='success_page'>";
echo "<img src='success.png' align='absmiddle' style='padding-right:5px;'
/><strong>Email Sent Successfully.</strong>";
echo "</div>";
echo "</fieldset>";
} else {
echo 'ERROR!'; // Dont Edit.
}
}
function twittermessage($user, $message, $consumer_key, $consumer_secret, $token,
$secret) { // Twitter Direct Message function, do not edit.
require_once('twitter/EpiCurl.php');
require_once('twitter/EpiOAuth.php');
require_once('twitter/EpiTwitter.php');
$Twitter = new EpiTwitter($consumer_key, $consumer_secret);
$Twitter->setToken($token, $secret);
$direct_message = $Twitter->post_direct_messagesNew( array('user' => $user, 'text'
=> $message) );
$tweet_info = $direct_message->responseText;
}
?>
<label for="verify" accesskey="V"> <img src="image.php"
alt="Image verification" border="0"/></label>
<input name="verify" type="text" id="verify" class="verify" size="6" value=""
style="width: 50px;" />
我把$msg中的电子邮件HTML去掉了,因为它的代码太多了,我认为没有必要包含它
我表单上验证码的HTML如下所示:
jQuery(document).ready(function() {
$('.contactform').submit(function() {
var action = $(this).attr('action');
var form = this;
$('.submit', this).attr('disabled', 'disabled').after(
'<img src="assets/ajax-loader.gif" class="loader" />');
$('.message', this).slideUp(750, function() {
$(this).hide();
$.post(action, {
name: $('.name', form).val(),
email: $('.email', form).val(),
phone: $('.phone', form).val(),
comments: $('.comments', form).val(),
verify: $('.verify', form).val()
},
function(data) {
$('.message', form).html(data);
$('.message', form).slideDown('slow');
$('img.loader', form).fadeOut('fast', function() {
$(this).remove();
});
$('.submit', form).removeAttr('disabled');
if (data.match('success') != null)
$('.message', form).show().delay(5000).fadeOut();
});
});
return false;
});
});
<?php if (!isset($_SESSION)) session_start();
if(!$_POST) exit;
if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");
$address = "email@domain.com";
$bcc = "email@domain.com";
$twitter_active = 0;
$twitter_user = ""; // Your user name
$consumer_key = "";
$consumer_secret = "";
$token = "";
$secret = "";
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$dayin = $_POST['dayin'];
$dayout = $_POST['dayout'];
$comments = $_POST['comments'];
if (isset($_POST['verify'])) :
$posted_verify = $_POST['verify'];
$posted_verify = md5($posted_verify);
else :
$posted_verify = '';
endif;
// Important Variables
$session_verify = $_SESSION['verify'];
if (empty($session_verify)) $session_verify = $_COOKIE['verify'];
$error = '';
if(trim($name) == '') {
$error .= '<li>Your name is required.</li>';
}
if(trim($email) == '') {
$error .= '<li>Your e-mail address is required.</li>';
} elseif(!isEmail($email)) {
$error .= '<li>You have entered an invalid e-mail address.</li>';
}
if(trim($phone) == '') {
$error .= '<li>Your phone number is required.</li>';
} elseif(!is_numeric($phone)) {
$error .= '<li>Your phone number can only contain digits (numbers
and no spaces).</li>';
}
if(trim($comments) == '') {
$error .= '<li>You must enter a message to send.</li>';
}
if($session_verify != $posted_verify) {
$error .= '<li>The verification code you entered is incorrect.
</li>';
}
if($error != '') {
echo '<div class="error_message">Attention! Please correct the
errors below and try again.';
echo '<ul class="error_messages">' . $error . '</ul>';
echo '</div>';
} else {
if(get_magic_quotes_gpc()) { $comments = stripslashes($comments); }
$e_subject = 'Website Enquiry';
$msg = '<html><body> </body></html>';
if($twitter_active == 1) {
$twitter_msg = $name . " - " . $comments . ". You can contact " .
$name . " via email, " . $email ." or via phone " . $phone . ".";
twittermessage($twitter_user, $twitter_msg, $consumer_key,
$consumer_secret, $token, $secret);
}
$msg = wordwrap( $msg, 70 );
$headers = "From: $email\r\nBCC:{$bcc}\r\n" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/html; charset=utf-8" . PHP_EOL;
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\r\n" . PHP_EOL;
if(mail($address, $e_subject, $msg, $headers)) {
echo "<fieldset>";
echo "<div id='success_page'>";
echo "<img src='success.png' align='absmiddle' style='padding-right:5px;'
/><strong>Email Sent Successfully.</strong>";
echo "</div>";
echo "</fieldset>";
} else {
echo 'ERROR!'; // Dont Edit.
}
}
function twittermessage($user, $message, $consumer_key, $consumer_secret, $token,
$secret) { // Twitter Direct Message function, do not edit.
require_once('twitter/EpiCurl.php');
require_once('twitter/EpiOAuth.php');
require_once('twitter/EpiTwitter.php');
$Twitter = new EpiTwitter($consumer_key, $consumer_secret);
$Twitter->setToken($token, $secret);
$direct_message = $Twitter->post_direct_messagesNew( array('user' => $user, 'text'
=> $message) );
$tweet_info = $direct_message->responseText;
}
?>
<label for="verify" accesskey="V"> <img src="image.php"
alt="Image verification" border="0"/></label>
<input name="verify" type="text" id="verify" class="verify" size="6" value=""
style="width: 50px;" />
有人知道我应该一步一步地做什么吗?注意:我仍然是php和ajax的业余爱好者。。。哦,不,如果您认为:这应该给您一个启动,这将对image.php生成的图像进行计算,并更新session/cookie变量,那么我不想使用reCaptcha。我们更新映像以包含一个缓存破坏字符串,以便它应该更新映像和会话变量 HTML
显然没有经过测试,但应该会给你一个很好的开始来实现它。你的第一句话是关于做研究的承诺,但是在PHP代码的页面之后,你失去了我。试着做一个最小的测试用例,或者至少切掉一大块不相关的代码错误记录,等等来帮助我们。另外,解释一下什么方法最接近你,什么方法不起作用——就我个人而言,我更愿意解决一个特定的问题/bug,而不是在业余时间做一件工作。第一个是有趣的,第二个只是工作。当然,这只是我的看法。是什么为您生成了验证码图像?这样想吧。。。当页面加载时,服务器会写出一个标记,告诉用户的浏览器请求验证码图像。您需要jQuery请求新的验证码图像,然后使用jQuery将原始验证码图像替换为新的验证码图像。我知道你们是来帮忙的,我非常感谢,我也尽了最大努力解释。上面的长php代码是我提交查询的php处理表单。。。我把代码放在那里,以防你们需要看到它来理解我的表单是如何工作的。通常我会被告知我没有包含所有必要的代码,所以我习惯于发布我认为相关的所有相关信息。@monkey扳手-非常有意义!现在对于像我这样的业余爱好者来说,用拇指吮吸代码并写出代码来让它工作是另一回事了。哈哈。这就是为什么我需要你们的帮助。把问题分解成更小的部分总是比较容易的。您试图添加的功能就是一个很好的例子,通过这样做,您可以学到很多东西。创建一个测试页面,在那里抛出一个和一个,并尝试在单击div时使用jQuery切换图像。操作简单,jQuery文档站点上有大量的示例。在解决整个问题之前,您需要了解各个概念是如何工作的。