- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我第一次问堆栈溢出问题(但是,这不是我第一次利用对其他人问题的良好回答)。我是一位经验丰富的网站程序员,因此请放心,我总是尽力在凌晨之前解决缺乏正确指导的工作方式。这就是堆栈溢出真正派上用场的时候。但是,这次,我已经三四天没有碰到PHP墙了。因此,我要求对此事提供一些帮助。
现在,本质上,编程纯粹是数学。这就是为什么人们最终可以理解其语言以及发生了什么的原因。我达到了成为一个非常有经验的AS程序员的地步,然后我决定从Flash切换到使用JS和jQuery(可以说是竞争)尝试HTML并坠入爱河。不过,我还是那个 Realm 的业余爱好者。但是我与PHP的关系完全不同:我不理解它,也没有耐心。对我来说是梵文。也许我还没有足够地使用它来掌握它,但是对于我来说,就像JS和HTML以及AS和ETC一样,这似乎对我没有逻辑意义。做。
无论如何,我的困境:
我基于此处给出的出色代码http://yensdesign.com/2009/01/create-a-shoutbox-using-php-and-ajax-jquery/构建了一个自定义 Shoutbox 。但是,该代码不包含验证码,这使其完全容易受到SPAM攻击。因此,我首先设计了一个简单的验证码,该验证码由包含数字的各种图像组成,所有图像加起来等于一个特定的数字。现在,我试图变得花哨,并且一直在尝试添加 Google reCaptcha 。
ReCaptcha是基于PHP的。 Sbox确实使用PHP,但是一旦JS文件执行了表单检查工作;它使用PHP最终保存输入到mySql数据库中的数据,并检索以前保存的要显示的数据。我尝试将reCaptcha PHP代码放入该过程的这一部分,但实际上并没有用,因为它所做的只是阻止输入数据并阻止检索数据。我需要的是一开始就可以停止该过程的东西,例如说:“嘿!您输入了错误的验证码,您的Spam-bot,您!”
我也尝试过将PHP放入JS文件中。 。 。最后,经过一番努力,出现了一个句子:“JS是基于客户端的; PHP是基于服务器的”。好消息,我可能几天前就来过。对我来说是业余的,现在我明白了为什么PHP如此繁琐。
无论如何,我尝试将PHP上下上下放置,得到零,零,零。
我希望我对此问题有足够的背景。关于我的第一个堆栈溢出问题的反馈将很有帮助。尤其有帮助:破解这个谜题的任何帮助都可以折腾。
reCaptcha PHP代码如下:
<?php
$privatekey = "your_private_key";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
// Your code here to handle a successful verification
}
?>
iframe
。我保留了reCaptcha的其余部分,因为它对本练习来说是多余的(此外,我需要Captcha图像才能测试事物是否真正起作用)。如您所见,
form
最初未设置为发布到特定的输出文件(原因是它具有用于该文件的JS文件),但是,正如J. Bruni推荐的练习所进行的那样,我将其设置为
action="shoutbox.php"
。这意味着它现在完全绕开了JS文件。
You need some server-side code, because you can't show your private key to the public... A tech user would very easily bypass the whole verification, if everything is done client-side, and nothing server-side.
if
语句中。现在,此问题已得到纠正。
if
语句已得到纠正,现在确实返回“错误的验证码”警报。但是出于某种原因,无论如何,reCapthca都是
,始终返回“错误”。昨天,即使没有输入验证码或输入了错误的验证码,该表格也始终处于打印状态,因为正如Bruni指出的那样,
if
语句将为输入的验证码输入错误返回正数,在这种情况下,表格将继续进行并如果验证码错误则打印(如果正确则不打印)。总是错的,这就是为什么它始终打印的原因。更正
if
语句以在验证码正确时返回正值,这表明该验证码为
总是返回错误的答案,因为现在您始终会收到“错误的验证码”警报。因此,此特定问题必须存在于其他地方。
if/else
语句是否正确。但是,如果我的其他经验对我有用,那么看来JS文件中的
if
语句可能缺少某些内容,使它警告
和停止了
complete: function(data)
函数的其余部分,因为在我看来,其余
complete: function(data)
功能始终处于播放状态。无论如何,由于
alert()
语句的结果,我不将
if
放在方括号中似乎很奇怪。也许,即使
if
语句错误,仍然在播放
alert()
和该函数的其余部分,因为它需要使用括号...但是因为这部分是AJAX,所以我可能会说胡言乱语并且吠叫了错误的树。如果我错了,请纠正我。
if
函数中的
complete: function(data)
语句需要放在方括号内;否则,无论PHP reCaptcha检查是否返回“错误”,始终都会显示“错误的验证码”警报。
complete: function(data){
if (data.responseText == 'wrong') {
alert('Wrong captcha');
}
messageList.html(data.responseText);
updateShoutbox();
...
最佳答案
一旦我尝试使用AJAX加载reCaptcha。没用我没有尝试过太多,因为我可以简单地使用AJAX而不是来使用,这就是我所做的。不能通过AJAX使用的相同代码以简单的形式工作。
另外,正如您所说,reCaptcha 不是基于PHP的。您可以使用任何服务器端语言(包括PHP)。
我已经调查了您的 index.php 文件。在自定义外观之前,让我们尝试进行基础工作。我已经看到iframe
和script
标签的混合。您所需要的就是这样简单(假设您的公钥是以“6Ld_b8”开头的字符串:
<input type="text" id="recaptcha_response_field" name="recaptcha_response_field" />
<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6Ld_b84SAAAAAAv1Ds1vYHxQjyoowiCPkARtvB2W"></script>
form
,它将被发布到 shoutbox.php 。然后,仅需片刻,在此文件的开头添加您粘贴在问题中的代码。您需要包括 recaptchalib.php ,并且需要用“your_private_key”代替reCaptcha私钥。因此,代码将如下所示:// put this on top of shoutbox.php
include "recaptchalib.php";
$privatekey = "your_private_key"; // change this here to your reCaptcha private key!
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
echo '<b>WRONG WORDS!</b>';
} else {
echo '<b>CORRECT WORDS! GREAT!</b>';
}
exit();
case "insert":
include "recaptchalib.php";
$privatekey = "your_private_key"; // change this here to your reCaptcha private key!
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid)
echo insertMessage($_POST['nick'], $_POST['message']);
break;
complete: function(data){
行?它是$.ajax
函数调用选项之一。它指定在 PHP代码运行后将运行的函数,并将其响应发送回浏览器。来自服务器的响应将在data
参数中的某个位置供您使用。如果您想为用户显示一条消息,以在验证码“单词不正确”的情况下警告他,则需要: if ($resp->is_valid)
echo insertMessage($_POST['nick'], $_POST['message']);
else
echo 'wrong';
$.ajax({
type: "POST", url: "shoutbox.php", data: "action=insert&nick=" + nick + "&message=" + message,
complete: function(data){
if (data.responseText == 'wrong')
alert('Incorrect captcha words! Try again.');
messageList.html(data.responseText);
updateShoutbox();
//reactivate the send button
$("#send").attr({ disabled:false, value:"Shout it!" });
}
});
<div id="challenge">
<input type="text" id="recaptcha_response_field" name="recaptcha_response_field" />
<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6Ld_b84SAAAAAAv1Ds1vYHxQjyoowiCPkARtvB2W"></script>
</div>
function reloadCaptcha(){
$('#challenge').html('<input type="text" id="recaptcha_response_field" name="recaptcha_response_field" /><script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6Ld_b84SAAAAAAv1Ds1vYHxQjyoowiCPkARtvB2W"></script>');
}
关于php - 将基于PHP的reCaptcha插入基于jQuery的Shoutbox时遇到很多麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9548254/
我已经习惯了 hibernate ,但我时不时地跌跌撞撞,这是另一个。 我正在努力实现以下目标: @OneToMany @JoinTable(name = "inter_spec",
我的 CakePHP 网站几个月来一直运行良好,直到我今天尝试访问它时,出现以下错误: Warning: include(Cake/bootstrap.php): failed to open str
此代码对其他人有效吗?很长一段时间以来,添加事件监听器都不起作用。 Page Title window.onload = init(); function init
我试图在文本中只留下 a-zA-Z0-9._ : $new_pgname=preg_replace('|(^[a-zA-Z0-9_\.])|s','',$new_pgname); 但是你猜怎么着……对
html: [...][...] js [...]alert(document.getElementById("test").name);[...] 为什么我得到的是“undefined”而不是“te
我正在尝试创建一个实现 main 方法的驱动程序类。它必须创建并测试一个对象来演示所有程序功能。 我认为我已经创建了正确的驱动程序类,但我运行的测试证明我的代码中存在错误,这就是我到目前为止所拥有的。
我正在制作一款扑克游戏,但遇到了一个问题,几乎所有事情都可以按照交易按钮的 actionListener 进行。它应该删除交易按钮并添加一个新的 JTextArea (此文本只是一个占位符)。在那之前
我有一些编程经验,但我对 python 很陌生,我正在尝试弄清楚如何使用和导入 .py 文件中的类而不是 main 。我目前正在使用 netbeans,运行 CPython 3.2.1。 根据我现在的
好吧,我不知道发生了什么。我对 iOS 还比较陌生,所以我的调试技能还达不到他们需要的水平。我有一个文本字段工作得很好,直到我在我的应用程序中做了一些更改,这些更改与文本字段没有任何关系(至少我认为它
你好社区我有以下问题。 我的 list 文件如下所示。
我正在使用Drupal2Wordpress plugin将我的内容从 Drupal 传输到 WP,但我在尝试开始该过程时收到此错误:无法连接到 Drupal 数据库。 这是MySQL的日志: 1504
我有以下代码。它编译得很好,但它告诉我字符串是“E#^$$@$$$$$$$”。有什么想法吗? ifstream InFile(Filename); if (!InFile) return fa
我正在为类(class)的期末考试做准备,并且正在尝试重做作业问题。这是我第一次获得零学分的其中之一。 此练习的目标是创建一个 URL,该 URL 将指向包含以下 HTML 的页面,而不是显示预期的协
我开始研究套接字,但遇到了麻烦!我做错了什么? 服务器: /* server.c */ /* ############### INCLUDES ############### */ #include
我正在尝试制作一个逐行读取文件然后将读取的行放入链表的程序,我的问题是将字符串添加到列表中。看代码,在else测试中你可以看到我的问题。 #include #include struct list_e
我是 WordPress 新手,正在为 friend 编辑网站。我正在尝试向站点添加 RSS 提要,因此我编辑了 header.php 文件(这就是它的去向)。 我还编辑了 CSS,然后使用 File
我将向您展示 2 个场景(注意 d=damping factor=0.5) 第一种情况:假设有 4 个节点 A, B, C, D : B、C、D 链接到 A。 PageRank 是:PR(A)=0.5
我无法理解 mem_fun_ref。我必须承认,我通常将仿函数用于此类事情,因为它们可以内联以提高速度和利润。但是,这段代码不会成为瓶颈,所以我想尝试一下。 这是我想做的一个例子。我知道还有其他方法可
尝试使用 AudioClip 编译 applet 时出现预期标识符错误。我计划将其添加到 JFrame,并希望让 AudioClip 循环播放。 import java.applet.*; impor
我正在尝试开始使用 node.js,但我绝不是高级程序员。除了检查我的 ip,我从未使用过 cmd。 我的问题是我不知道将文件保存在哪里,以及如何使用 node.js 从 cmd 运行它们。我发现的教
我是一名优秀的程序员,十分优秀!