X-Git-Url: https://disinclined.org/git/?a=blobdiff_plain;f=index.php;h=55986790efb50816b95c9912f18cd767a11a46a2;hb=63c697020762553a9b124a1a22478d31089f84b7;hp=a0c48f28f6c230c0ac45f4d3206670cc6bdf856f;hpb=deb56dae38123d0a47612f01fe40122dbe001147;p=dylansserver.git diff --git a/index.php b/index.php index a0c48f2..5598679 100644 --- a/index.php +++ b/index.php @@ -34,7 +34,10 @@ abstract class cms { return 'index'; } else if (isset($_GET['project'])) { return 'project'; + } else if (isset($_GET['challenge'])) { + return 'captcha'; } + } public function query() { @@ -71,6 +74,9 @@ abstract class cms { $home_link = "http://validator.w3.org/unicorn/check?ucn_uri=dylanstestserver.com&ucn_task=conformance#"; } else if ($this->determine_type() == 'note') { $scripts = ""; + $scripts .= ""; + $scripts .= ""; + $scripts .= ""; } echo <<"; - $resp = recaptcha_check_answer ($this->recaptcha_privatekey, - $_SERVER["REMOTE_ADDR"], - $_POST["recaptcha_challenge_field"], - $_POST["recaptcha_response_field"]); - if (!$resp->is_valid) { - $this->failed_captcha = true; - } else { + if (!isset($_POST['captcha'])) { + require_once('includes/recaptchalib.php'); + echo "
"; + $resp = recaptcha_check_answer ($this->recaptcha_privatekey, + $_SERVER["REMOTE_ADDR"], + $_POST["recaptcha_challenge_field"], + $_POST["recaptcha_response_field"]); + if (!$resp->is_valid) { + $this->failed_captcha = true; + } + } + if (isset($_POST['captcha']) || $resp->is_valid) { $sql = ("INSERT INTO comments (date_posted, author, email, text, note) VALUES(NOW(), ?, ?, ?, ?)"); $stmt = $this->db->prepare($sql); // Checks are needed here (no blank text, // and a default author / email need to be set + // for no-javascript users. $stmt->bind_param('ssss', - htmlspecialchars($_POST['author']), + htmlspecialchars($_POST['name']), htmlspecialchars($_POST['email']), htmlspecialchars($_POST['text']), $this->id); @@ -391,9 +401,6 @@ class note extends cms {

END_OF_NAVIGATION; - if ($this->failed_captcha) { - echo "sorry, reCAPTCHA said you're not human.


"; - } if (!$this->comments_enabled) { $this->display_comment_link(); } @@ -429,11 +436,16 @@ END_OF_NAVIGATION; $author = $entry['author']; $email = $entry['email']; $text = htmlspecialchars($entry['text']); + if ($email == '') { + $head = "

$author

"; + } else { + $head = "

$author

"; + } echo <<$author +
+ $head $text -
-
+
END_OF_COMMENT; } echo "
"; @@ -443,7 +455,6 @@ END_OF_COMMENT; $publickey = $this->recaptcha_publickey; echo << -function showRecaptcha(element) { Recaptcha.create("$publickey", "recaptcha_div", { @@ -451,41 +462,53 @@ Recaptcha.create("$publickey", custom_theme_widget: 'recaptcha_widget', callback: Recaptcha.focus_response_field }); -} END_CAPTCHA_STYLE; require_once('includes/recaptchalib.php'); - // Trailing slash is necessary for reloads to work $url = $this->url . "verify"; - echo "
"; - echo << - - -
-
-

comment:

- -

name:

- -

email:

-
- - -
-

what's this say?

-

enter the numbers you hear:

(another/audio/Get an image CAPTCHAhelp)

- -

-
-



-
-
- - - - + echo "
"; + echo << +

comment:

+ +

name:

+ +

email:

+
+ + +
+

what's this say?

+

enter the numbers you hear:

+ + ( another / + audio / + Get an image CAPTCHAhelp ) + +

+ +

+
+
+
+



+
+END_OF_FORM; + echo recaptcha_get_html($this->recaptcha_publickey); + if ($this->failed_captcha) { + echo <<reCAPTCHA said you're not human, + + + END_OF_FORM; + } else { + echo << + + +END_OF_FORM; + } } } @@ -584,6 +607,19 @@ class notFound extends Exception { } } +class captcha extends cms { + public function display() { + $challenge = $_GET['challenge']; + $response = $_GET['response']; + $remoteip = $_SERVER['REMOTE_ADDR']; + $curl = curl_init('http://api-verify.recaptcha.net/verify?'); + curl_setopt ($curl, CURLOPT_POST, 4); + curl_setopt ($curl, CURLOPT_POSTFIELDS, "privatekey=$this->recaptcha_privatekey&remoteip=$remoteip&challenge=$challenge&response=$response"); + $result = curl_exec ($curl); + curl_close ($curl); + } +} + ## now actually do something: switch (cms::determine_type()) { case "index": @@ -610,6 +646,10 @@ switch (cms::determine_type()) { $archive = new archive; $archive->display(); break; + case "captcha": + $captcha = new captcha; + $captcha->display(); + break; } ?>