GeoIP + CPA (user2csh / adjal)

  • Autor Autor Cicklow
  • Fecha de inicio Fecha de inicio
Cicklow

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Con este tutorial les mostrare como usar GeoIP y usar promos de CPA, podemos usar la api de los sponsors (user2cash o adjal.com).
Para este turorial vamos a usar PHP (con json) y la libreria de GeoIP.
Como primer paso accedemos al sponsor y vamos a Soporte->Ofertas Api, y obtendremos una url como esta:
Insertar CODE, HTML o PHP:
http://network.users2cash.com/offers/offers.json?api_key=**API**
Para evitar sobrecargar el server (al pedo) leyendo la api con cada acceso del usuario, vamos a crear un cache, de esta forma es mas rapido y sencillo.
Cargamos la libreria de GeoIP
PHP:
	include("geoip/geoip.inc"); //Cargamos la libreria geoIP
	$gi = geoip_open("geoip/GeoIP.dat",GEOIP_STANDARD); //Cargamos los datos
	$IP = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']); //Pasamos como parametro la ip del usuario
	geoip_close($gi); //Cerramos la libreria ya que no la vamos a usar mas

Si pasamos como parametro cache=1 creamos el cache
PHP:
	if($_GET['cache']=="1"){
		$PA = "";
		$URL = 'http://network.users2cash.com/offers/offers.json?api_key=**API**';			
		$JsonData=json_decode(file_get_contents($URL)); //Decodificamos el JSON

		$data=Array();
		//Recorremos el objeto de las ofertas
		foreach($JsonData->data->offers AS $key=>$value){
			//el parametro countries_short es el pais en modo ISO 3166-1 alpha-2, y verificamos que no sea vacio y que el tamaño sea igual a 2 (esto es porque ADJal coloca mal los datos en ves de poner solo el pais ejemplo AR (argentina), pone varios paises ej AR, MX, UY (Argentina, mexico, uruguay).
			if($value->countries_short!="" && strlen($value->countries_short)==2){
				//Creamos un array con los paises y datos necesarios ej $ARRAY['AR'] = array...
				$data[$value->countries_short][]=Array(
				"id"=>(string)$value->id,
				"name"=>(string)str_replace("'","",$value->name),
				"tracking_url"=>(string)str_replace('&','&',$value->tracking_url),
				"countries"=>(string)$value->countries,
				"countries_short"=>(string)$value->countries_short,
				);
				$PA.= $value->countries_short." ";
			}
			//Si el pais es mas grande que dos caracteres, lo que hacemos es separar los paises y crear el array como el paso anterior.
			if(strlen($value->countries_short)>2){
				$TY = explode(',',$value->countries_short);
				foreach($TY as $TR){
					$data[$TR][]=Array(
					"id"=>(string)$value->id,
					"name"=>(string)str_replace("'","",$value->name),
					"tracking_url"=>(string)str_replace('&','&',$value->tracking_url),
					"countries"=>(string)$value->countries,
					"countries_short"=>(string)$TR,
					);
					$PA.= $TR." ";
				}
			}
		}
		//Guardamos el cache
		file_put_contents('ia.CPA.php',"<?php\n\$IA=array(".array2php($data).");\n?>");
		//Gurdamos el cache en JS (javascript)
		$JS = "function _VPais(){ return '".substr($PA,0,(strlen($PA)-1))."'; }";
		file_put_contents('ia.CPA.js',$JS);
		//Finalizamos el script
		die();
	}
	//Esta funcion es para pasar un array a codigo PHP (para poder guardarlo)
	define('OFFSET_DELIMETER', "\t");
	function array2php($array, $offset = OFFSET_DELIMETER)  {
		$text = '';
		foreach($array as $k => $v) {
			if (is_array($v)) {
				$text .= "{$offset}'{$k}' => array(\n".array2php($v, $offset.OFFSET_DELIMETER)."$offset)";
			} else {
				$text .= "{$offset}'{$k}' => ".(is_string($v)? "'$v'": $v);
			}
			$text .= ",\n";
		}
		if ($len = strlen($text)) $text[$len - 2] = " ";
		return $text;
	}

En este paso verificaremos el pais del usuario y redireccionaremos a una promo al azar.
PHP:
	$IRME = 'http://www.cicklow.com/'; //Url por defecto, se redireccionara a esta promo si no existe el pais en las promos.
	include('ia.CPA.php'); //Cargamos el cache
	if(is_array($IA[$IP])){
		shuffle($IA[$IP]);shuffle($IA[$IP]); //Cargamos una promo al azar
		$IRME = $IA[$IP][0]['tracking_url'];
	}
	header('location: '.$IRME); //Redireccionamos a esa promo
	die();

vamos a guardar todo esto como cpa.php, para crear el cache accedemos de esta forma: cpa.php?cache=1, y luego podremos usar el script.
Como usarlo
facil:
HTML:
<a href="http://www.miserver.com/cpa.php" target="_blank"><img src="http://www.miserver.com/imagen.jpg"></a>

Descargar Libreria GeoIP: Ver el archivo adjunto geoip.rar
Descargar cpa.php: Ver el archivo adjunto cpa.rar

Saludos!
 
Última edición:
Buen aporte. :encouragement:

Otra opción, que yo personalmente prefiero, es usar Doubleclick for Publishers para administrar todos los anuncios de la web, y entre otras muchas posibilidades, permite mostrar anuncios dependiendo de la procedencia del visitante.
 
Buen aporte. :encouragement:

Otra opción, que yo personalmente prefiero, es usar Doubleclick for Publishers para administrar todos los anuncios de la web, y entre otras muchas posibilidades, permite mostrar anuncios dependiendo de la procedencia del visitante.

Hay que tener adsense para usar esto?
 
me tira este error cuando quiero abrir el php.

Insertar CODE, HTML o PHP:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/bajatemu/domains/bajatemusica.com/public_html/cpa.php on line 21

Que podrá ser?
 
es esta linea:
PHP:
"name"=>(string)str_replace("'","",$value->name),
Y ami no me da error... saca el (string) de adelante a ver si es eso...
 
es esta linea:
PHP:
"name"=>(string)str_replace("'","",$value->name),
Y ami no me da error... saca el (string) de adelante a ver si es eso...
Ya lo solucione. me falta ba .$API, despues de la url de la API.

Peor ahora me tira otro error:

Insertar CODE, HTML o PHP:
Warning: fopen(GeoIP.dat) [function.fopen]: failed to open stream: No such file or directory in /home/bajatemu/domains/bajatemusica.com/public_html/geoip.inc on line 399
Can not open GeoIP.dat

yo descargue el archivo geoip.inc y lo subi a la raiz de mi sitio. por eso cambie la ruta del archivo (le borre banner/geopip). peor de ninguna de las dos formas funciona. me falta algo?
 
Solo redirecciona al enlace de la campaña. Lo ideal sería que muestre un Banner diferente por cada país. Voy a ver como mejorarlo.
 
Warning: fopen(GeoIP.dat) [function.fopen]: failed to open stream: No such file or directory in /home/bajatemu/domains/bajatemusica.com/public_html/geoip.inc on line 399
Can not open GeoIP.dat
Te falta geoip.dat => Enlace eliminado
 
Te falta geoip.dat => Enlace eliminado

OK. ya lo descargue. Ahora me tira un error en la linea 17:

Insertar CODE, HTML o PHP:
Warning: Invalid argument supplied for foreach() in /home/bajatemu/domains/bajatemusica.com/public_html/cpa.php on line 17

Que es esta:

PHP:
foreach($JsonData->data->offers AS $key=>$value){
 
pero estas obteniendo los datos??¿¿
pon esto antes del foreach:
PHP:
echo '<pre>';print_r($JsonData);die();
y dime si te muestra el resultado (osea el contenido de la api)
 
pero estas obteniendo los datos??¿¿
pon esto antes del foreach:
PHP:
echo '<pre>';print_r($JsonData);die();
y dime si te muestra el resultado (osea el contenido de la api)

Si pongo eso, cuando quiero acceder me manda a mi sitio. te pongo todo el archivo como lo tengo:

Enlace eliminado
 
este es tu error:
PHP:
$URL = 'http://network.users2cash.com/offers/offers.json?api_key=AFF5pQ6CnZqZUXFhbauLARZKoucwTu'.$API;
si ya colocastes la api en $API = '...'; no lo coloques en la url. O lo pones asi:
PHP:
$URL = 'http://network.users2cash.com/offers/offers.json?api_key=AFF5pQ6CnZqZUXFhbauLARZKoucwTu';
o asi
PHP:
$URL = 'http://network.users2cash.com/offers/offers.json?api_key='.$API;

Saludos 😉
 
este es tu error:
PHP:
$URL = 'http://network.users2cash.com/offers/offers.json?api_key=AFF5pQ6CnZqZUXFhbauLARZKoucwTu'.$API;
si ya colocastes la api en $API = '...'; no lo coloques en la url. O lo pones asi:
PHP:
$URL = 'http://network.users2cash.com/offers/offers.json?api_key=AFF5pQ6CnZqZUXFhbauLARZKoucwTu';
o asi
PHP:
$URL = 'http://network.users2cash.com/offers/offers.json?api_key='.$API;

Saludos 😉
JOya!. si no cuando voy a bajatemusica.com/cpa.php me lleva a mi sitio quiere decir que no hay campañas para mi? (soy de Argentina)
 
La url por defecto a redireccionar es cuando no hay promo (yo tmb soy de argentina), pero recorda que tienes que crear el cache antes de poner el cpa.php a funcionar en tu sitio. Es recomendable usar otra url distinta a la del sitio. Ejemplo tu usas bajatemusica.com como url por defecto, y cpa.php esta en bajatemusica.com/cpa.php...
Podrias usar otra url de otra web tuya.

PD: Sacale lo del
PHP:
echo '<pre>';print_r($JsonData);die();
ya que el cache sino no se creara... eso te lo puse para ver si se leía bien la url de la api
 
La url por defecto a redireccionar es cuando no hay promo (yo tmb soy de argentina), pero recorda que tienes que crear el cache antes de poner el cpa.php a funcionar en tu sitio. Es recomendable usar otra url distinta a la del sitio. Ejemplo tu usas bajatemusica.com como url por defecto, y cpa.php esta en bajatemusica.com/cpa.php...
Podrias usar otra url de otra web tuya.

PD: Sacale lo del
PHP:
echo '<pre>';print_r($JsonData);die();
ya que el cache sino no se creara... eso te lo puse para ver si se leía bien la url de la api

Ya borre la linea esa. creé el cache (creo, se queda la pantalla en blanco. esta bien?) pero me sigue pasando lo mismo. me redirecciona a mi otro sitio.
 
Ya borre la linea esa. creé el cache (creo, se queda la pantalla en blanco. esta bien?) pero me sigue pasando lo mismo. me redirecciona a mi otro sitio.
Solucionado, había que actualizar el geoip que looree usaba 🙂
 
Ciclow te sabes algun tuto que te diga exactamente paso a paso para poder instalarlo en WP? Muchas gracias.
 
Última edición:
Solucionado, había que actualizar el geoip que looree usaba 🙂

Oye el rar del geoip que posteaste ya esta actualizado por que me pasa lo mismo solo me redireciona a mi sitio web el que puse si no hay promo o como lo actualizo tambien con gente de mexico o argentina los redirecciona ala web

el cpa.php no me da error de hecho en el archivo del cache puedo ver todas las ofertas y los diferentes paises

ahi si me puedes hechar la mano
 
Atrás
Arriba