1
所以我工作的一个游戏,用动态JS/PHP负载。我唯一的问题是我不能让我的JS图形验证码抢所选文本区域(cAnswer)的送价值从botcheck.php到do.php检查验证码输入正确。值()和焦点()不工作
.focus()不集中在上cAnswer文本输入任一。
这里是我的代码...
TieSCRIPT.JS
Tie = function() { };
Tie.id = function (what) { // Shortens the document.getElementById() function
return document.getElementById(what);
}
Tie.enc = function (what) { // Encoding URL stuff
return encodeURIComponent(what);
}
Tie.deco = function (what) { // Then Decoding the reply
return decodeURIComponent(what);
}
Tie.loadDiv = function(where,url,data) {
//clearTimeout(timer);
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else { // Crap IE
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
Tie.id(where).innerHTML = xmlhttp.responseText;
} else {
return false;
}
}
if (!data) {
data = "";
}
data = data.replace(/: /gi, "=");
data = data.replace(/:/gi, "=");
data = data.replace(/, /gi, "&");
data = data.replace(/,/gi, "&");
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(data);
}
Tie.request = function (url, data) { // Ajax request
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else { // Crap IE
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
data = xmlhttp.responseText.split("|");
for (i = 0; i < data.length; i++){
var one = Tie.deco(data[parseInt(i)]);
var two = Tie.deco(data[parseInt(i) + 1]);
var three = Tie.deco(data[parseInt(i) + 2]);
var four = Tie.deco(data[parseInt(i) + 3]);
var five = Tie.deco(data[parseInt(i) + 4]);
if (window.Tie[one]) { // echo out a Tie.* command from php file.
window.Tie[one](two,three,four,five);
}
}
} else {
return false;
}
}
if (!data) {
data = "";
}
data = data.replace(/: /gi, "=");
data = data.replace(/:/gi, "=");
data = data.replace(/, /gi, "&");
data = data.replace(/,/gi, "&");
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(data);
}
Tie.alterDiv = function(where,what) { // Shortening again.
if (Tie.id(where)) {
Tie.id(where).innerHTML = what;
}
}
Tie.getCaptcha = function() {
Tie.loadDiv("popUp","botcheck.php");
Tie.id("cAnswer").focus();
}
Tie.submitCaptcha = function() {
var answer = Tie.enc(Tie.id("cAnswer").value);
Tie.request("do.php", "p: submitCaptcha, a: " + answer);
Tie.enc(Tie.id("cAnswer").value = "");
}
BOTCHECK.PHP
<?php
include('connect.php');
?>
<div id="popUpBotContent">
<center>
<p>Please enter the WHITE numbers only...</p><br />
<div id="captchaPicture"><img src="validate.php" width="120" height="60" id="captcha"></div><br />
<input type="text" id="cAnswer" size="5" maxlength="3" onkeydown="if (event.keyCode == 13) { Tie.submitCaptcha(); fade('popUpBotContent'); return false; }" />
<input type="submit" onClick="Tie.submitCaptcha();slide('popUpBotContent');" value="Submit" />
<br /><br />
</center>
</div>
DO.PHP
<?php
include('connect.php');
$a = $_POST['cAnswer'];
$lastAction = $info['last_action'];
$lastActionTime = $info['user_timer_end'];
$now = time() - 180;
IF (isset($_POST['cAnswer'])) { $p = "submitCaptcha"; } else { $p = "none"; }
IF ($p == "submitCaptcha" && $a == $info['bot_num']) { // captcha
$botTime = time() + 900 + rand(60,300);
mysql_query("UPDATE `user_info` SET `next_botcheck` = '$botTime' WHERE `user_id` = '$info[user_id]'");
mysql_query("UPDATE `user_info` SET `botcheck` = '0' WHERE `user_id` = '$info[user_id]'");
$newTime = date("H:i", $botTime);
echo "alterDiv|botTime|$newTime|";
} else IF ($p == "submitCaptcha" && $a != $info['bot_num']) { // captcha
echo "getCaptcha|";
}
?>
我知道这是一个相当位可以通过,但任何输入将不胜感激。希望我没有留下任何东西。
让我知道是否需要更多信息。
谢谢!
凡与cAnswer ID输入?该死的,我真的看不到它....你只是有''没有标识 – Cosmin
糟糕。当我将代码添加到问题中时,我清理了一下,忘了将其添加回去。现在修复。尽管如此,仍然没有解决我的问题。 – Segarac