この小さな PHP スクリプトを使用して、キャプチャを作成し、javaapplication に配信します。
<?php
$secretkey = "***";
header ( 'Content-type: text/xml' );
function generatePassword($length = 5) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$count = mb_strlen($chars);
for ($i = 0, $result = ''; $i < $length; $i++) {
$index = rand(0, $count - 1);
$result .= mb_substr($chars, $index, 1);
}
return $result;
}
$user = $_POST['user'];
$key = $_POST['key'];
$captcha = generatePassword();
if ($key == $secretkey) {
try {
$dbh = new PDO("mysql:host=localhost;dbname=***", '***', '***');
} catch (PDOException $e) {
$error = $e->getMessage();
echo "<error>$error</error>";
}
$sth = $dbh->prepare("INSERT INTO xf_captcha (username, captcha)
VALUES (:user, :captcha)
ON DUPLICATE KEY
UPDATE captcha = :captcha",
array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':user' => $user, ':captcha' => $captcha));
$row = $sth->fetch(PDO::FETCH_ASSOC);
echo "<captcha>$captcha</captcha>";
}
else {
echo "<error>wrong key</error>";
}
?>
問題は、JavaApplication が 401 エラーを受け取ることがあるということです。これについて私が理解していないのは、1 分間に送信されるリクエストとは関係がないように見えるということです。
これが DDOS 保護と大きなファイアウォールのない Apache サーバーで実行された場合、リクエストを拒否する原因は何でしょうか? これはおそらくApache関連ですか?
編集:
Java 部分は次のようになります: http://pastebin.com/Thi2Htwp