Sly
I don't break the rules I bend them.
- Oct 28, 2016
- 246
- 38
What the problem is, is that the voting page doesnt appear it says voted when I validate, and takes me to robbo.pw/client?voted (as I set it on findretros.com)
What is the problem?
Heres my setup.
Settings on findretros.com
redirect after vote = robbo.pw/client?voted
Client.php
findretros_config.php
findretros.php
validate.php
What is the problem?
Heres my setup.
Settings on findretros.com
redirect after vote = robbo.pw/client?voted
Client.php
PHP:
<?php
staffCheck();
Game::sso();
Game::homeRoom();
require_once 'findretros_config.php';
require_once 'findretros.php';
require_once 'validate.php';
?>
findretros_config.php
PHP:
<?php
$_CONFIG = array(
/* What is "username" of your page on FindRetros? */
'pagename' => 'robbo',
/* How many seconds should it take to try and reach FindRetros if it's down? */
'timeout' => 2,
/* Are you using CloudFlare? If so, set this to true. */
'cloudflare' => true,
/* Incase FindRetros.com has a new domain, change it below. */
'api' => 'https://findretros.com/'
);
findretros.php
PHP:
<?php
class FindRetros {
private $pageName, $callTimeout, $usingCloudFlare, $apiPath;
function __construct() {
global $_CONFIG;
$this->pageName = $_CONFIG['pagename'];
$this->requestTimeout = $_CONFIG['timeout'];
$this->usingCloudFlare = $_CONFIG['cloudflare'];
$this->apiPath = $_CONFIG['api'];
if($this->usingCloudFlare) {
if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
}
}
public function hasClientVoted() {
if(!$this->_isVoteCookieSet()) {
$urlRequest = $this->apiPath . 'validate.php?user=' . $this->pageName . '&ip=' . $_SERVER['REMOTE_ADDR'];
$dataRequest = $this->_makeCurlRequest($urlRequest);
if(in_array($dataRequest, array(1, 2))) {
$this->_setVoteCookie();
return true;
}else if($dataRequest == 3) {
return false;
}else{
/* There's something wrong with FindRetros, so we will mark the user as voted and have them proceed as if they voted. */
$this->_setVoteCookie();
return true;
}
}
return true;
}
public function redirectClientToVote() {
header('Location: ' . $this->apiPath . 'rankings/vote/' . $this->pageName);
exit;
}
private function _makeCurlRequest($url) {
if(function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_TIMEOUT, $this->requestTimeout);
curl_setopt($curl, CURLOPT_USERAGENT, 'FindRetros Vote Validator');
$requestData = curl_exec($curl);
curl_close($curl);
}else{
$requestData = stream_context_create(array('http' => array('timeout' => $this->requestTimeout)));
return @file_get_contents($url, 0, $requestData);
}
return $requestData;
}
private function _setVoteCookie() {
$rankingsResetTime = $this->_getRankingsResetTime();
setcookie('voting_stamp', $rankingsResetTime, $rankingsResetTime);
}
private function _isVoteCookieSet() {
if(isset($_COOKIE['voting_stamp'])) {
if($_COOKIE['voting_stamp'] == $this->_getRankingsResetTime()) {
return true;
}else{
setcookie('voting_stamp', '');
return false;
}
}
return false;
}
private function _getRankingsResetTime() {
$serverDefaultTime = date_default_timezone_get();
date_default_timezone_set('America/Chicago');
$rankingsResetTime = mktime(0, 0, 0, date('n'), date('j') + 1);
date_default_timezone_set($serverDefaultTime);
return $rankingsResetTime;
}
}
validate.php
PHP:
<?php
require_once 'findretros_config.php';
require_once 'findretros.php';
$FindRetros = new FindRetros();
if($FindRetros->hasClientVoted()) {
echo 'You have voted!';
}else{
// echo 'You have yet to vote!';
$FindRetros->redirectClientToVote();
}
Last edited: