http://research.microsoft.com/asirra/) to add a pleasant image-based HIP for comments Author: Jon Howell Version: 1.0 Author URI: http://research.microsoft.com/~howell/ */ /* Copyright 2007 Jon Howell (contact email : asirra@microsoft.com) ** ** This program is in the public domain. */ class AsirraValidator { var $inResult = 0; var $passed = 0; function AsirraValidator($ticket) { global $g_this; // Yuck. Is there a way to have callback methods see my $this without using a global in PHP? $g_this = $this; $g_this->dbg = ""; $g_this->dbg .= "
ticket = ".$ticket; $AsirraServiceUrl = "http://challenge.asirra.com/cgi/Asirra"; $url = $AsirraServiceUrl."?action=ValidateTicket&ticket=".$ticket; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); $resultXml = curl_exec($ch); curl_close($ch); $xml_parser = xml_parser_create(); function startElement($parser, $name, $attrs) { global $g_this; $g_this->inResult = ($name=="RESULT"); $g_this->dbg .= "
start ".$name." ir=".$g_this->inResult; } function endElement($name) { global $g_this; $g_this->inResult = 0; $g_this->dbg .= "
end ".$name; } function characterData($parer, $data) { global $g_this; $g_this->dbg .= "
cd ir ".$g_this->inResult." data=".$data; if ($g_this->inResult && $data == "Pass") { $g_this->dbg .= "
setting PASS"; $g_this->passed = 1; } } xml_set_element_handler($xml_parser, startElement, endElement); xml_set_character_data_handler($xml_parser, characterData); xml_parse($xml_parser, $resultXml, 1); xml_parser_free($xml_parser); $g_this->dbg .= "

XML: ".$resultXml."
"; } } ?>