hpolatkan Posted March 6, 2015 Share Posted March 6, 2015 Hi, i get the following message on the test i make for the whmcs external api. how can i fix that? Thanks, output: (http://www.example.com/includes/api.php)(with curl) Request: Array ( [username] => admin [password] => 21232f297a57a5a743894a0e4a801fc3 [action] => getclients [responsetype] => xml ) Response: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>The document has moved <a href="http://www.exmaple.com/">here</a>.</p> </body></html> output: (http://www.example.com/includes/api.php)(with browser) result=error;message=Authentication Failed; code: <?php /* *** WHMCS XML API Sample Code *** */ $url = "http://www.example.com/includes/api.php"; # URL to WHMCS API file goes here $username = "admin"; # Admin username goes here $password = "admin"; # Admin password goes here $postfields = array(); $postfields["username"] = $username; $postfields["password"] = md5($password); $postfields["action"] = "getclients"; $postfields["responsetype"] = "xml"; $query_string = ""; foreach ($postfields AS $k=>$v) $query_string .= "$k=".urlencode($v)."&"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $xml = curl_exec($ch); if (curl_error($ch) || !$xml) $xml = '<whmcsapi><result>error</result>'. '<message>Connection Error</message><curlerror>'. curl_errno($ch).' - '.curl_error($ch).'</curlerror></whmcsapi>'; curl_close($ch); $arr = whmcsapi_xml_parser($xml); # Parse XML print_r($arr); # Output XML Response as Array // Debug Output - Uncomment if needed to troubleshoot problems echo "<textarea rows=50 cols=100>Request: ".print_r($postfields,true); echo "\nResponse: ".htmlentities($xml)."\n\nArray: ".print_r($arr,true); echo "</textarea>"; function whmcsapi_xml_parser($rawxml) { $xml_parser = xml_parser_create(); xml_parse_into_struct($xml_parser, $rawxml, $vals, $index); xml_parser_free($xml_parser); $params = array(); $level = array(); $alreadyused = array(); $x=0; foreach ($vals as $xml_elem) { if ($xml_elem['type'] == 'open') { if (in_array($xml_elem['tag'],$alreadyused)) { $x++; $xml_elem['tag'] = $xml_elem['tag'].$x; } $level[$xml_elem['level']] = $xml_elem['tag']; $alreadyused[] = $xml_elem['tag']; } if ($xml_elem['type'] == 'complete') { $start_level = 1; $php_stmt = '$params'; while($start_level < $xml_elem['level']) { $php_stmt .= '[$level['.$start_level.']]'; $start_level++; } $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];'; @eval($php_stmt); } } return($params); } ?> 0 Quote Link to comment Share on other sites More sharing options...
Damo Posted March 7, 2015 Share Posted March 7, 2015 What happens if you visit http://www.example.com/includes/api.php'>http://www.example.com/includes/api.php in a browser (replacing http://www.example.com with your WHMCS installation address of course). If your IP isn't in the allowed list you'll get an error but I'm wondering if you have other rewrite rules on that domain that aren't allowing you to reach /includes/api.php at all. 0 Quote Link to comment Share on other sites More sharing options...
hpolatkan Posted March 7, 2015 Author Share Posted March 7, 2015 Hi, i found out the reason of the problem was a mod_security rule. Made a necessary regulation and there is no more problem. Thanks. 0 Quote Link to comment Share on other sites More sharing options...
Damo Posted March 8, 2015 Share Posted March 8, 2015 That's great Thanks for also posting an update it may help someone else in the future. 0 Quote Link to comment Share on other sites More sharing options...
d13g0s Posted December 18, 2015 Share Posted December 18, 2015 Hi, i found out the reason of the problem was a mod_security rule. Made a necessary regulation and there is no more problem. Thanks. Hello, I'm having the same issue, what did you do to fix? thanks 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.