Salut à tous,
Je post dans cette section car j'utilise CURL actuelement pour résoudre mon probleme, mais ce n'est peut etre pas la meilleur solution.
Que je vous explique ...
On utilisait jusqu'a present un script qui nous permettait de centraliser le tracking et de rediriger des liens de plusieurs de nos sites.
Pour cela on modifait les DNS d'un sous domaine de chaque site pour pointer vers le serveur principal ou se trouve le script.
donc :
lien.SITE1 pointe vers IP_SITE_SCRIPT
lien.SITE2 pointe vers IP_SITE_SCRIPT
...
Par exemple l'internaute clic sur lien.SITE1/redirect.php?var=xxx, il atterit sur notre serveur principal SITE_SCRIPT/redirect?var=xxxx
On enregistre l'IP et le USER_AGENT
Ensuite on redirige vers le site final (qu'on recupere grace à ?var=xxxx )
Pour diverse raison nous ne pouvons plus faire cela de cette facon, le site ou se trouve le script ne doit plus apparaitre nul part (donc pas de redirect via DNS ou autre)
Difficulté suplementaire le script en lui même n'est pas modifiable.
Pour le moment nous avons effectué les modifications suivantes :
lien.SITE1/redirect.php fait juste une redirection vers /redirect2.php :
- cette etape sert juste à afficher un 'sablier' pour faire patienter l'internaute (plutot que d'afficher une page blanche le temps de la redirection)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <meta http-equiv='refresh' content='0;URL="redirect2.php$varUrl" '>
redirect2.php contient le code suivant
Voila pour les explications, maintenant on passe aux problemes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 $varUrl = ""; $i =0; foreach($_GET as $cle => $valeur){ $varUrl .= ($i == 0 ? '?' : '&').$cle.($valeur ? '='.urlencode($valeur) : ''); $i++; } $url = 'SITE_SCRIPT/redirect.php'.$varUrl; callservice ($url); function callService($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPGET , TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $output = curl_exec($ch); }
1/L'IP qui est stockée est celle du serveur ou se trouve le script curl et pas celui de l'internaute.
Est-ce qu'il y a quelque chose que je n'ai pas bien parametré dans le CURL ? ou c'est le fonctionnement normal ?
Si il n'est pas possible de faire cela grace a CURL, il y a un autre moyen ?
2/Le FOLLOWLOCATION ne fonctionne pas.
...Et je ne comprends pas pourquoi
le safe mode est à OFF, il n'y a pas d' open_basedir
Pour palier a ce soucis j'ai du mettre "CURLOPT_RETURNTRANSFER, FALSE" et faire une etape intermediaire de redirection html vers le lien final
Vous avez deja eu ce cas ?
C'est surtout le probleme de l'IP qui est critique, celui du followlocation l'est moins, mais j'aimerais bien eviter l'etape intermediaire
Merci de m'avoir lu !
Et merci pour votre aide !
Partager