2016-04-09 3 views
0

J'ai un code qui détecte si referer est de faceebook et lui montre sa boîte de dialogue contextuelle.Même si le code d'autre ne fonctionne pas pour le mobile

Il fonctionne parfaitement à partir du PC avec tous les navigateurs, mais il ne fonctionne pas à partir du mobile.

Que puis-je faire?

<?php 

$ref=$_SERVER['HTTP_REFERER']; 
$target_site = "https://www.facebook.com/"; 

if (isset($_SERVER['HTTP_REFERER']) && preg_match("/".preg_quote($target_site,"/")."/i",$_SERVER['HTTP_REFERER'])) { 
    include "likebox.php"; 
} 
else { 
    $line = date('Y-m-d H:i:s') . " - $_SERVER[REMOTE_ADDR]"; 
    file_put_contents('visitors.log', $line . PHP_EOL, FILE_APPEND); 
    include "nolike.php"; 
} 

?> 
+0

L'en-tête 'Referer' est envoyé par la plupart des navigateurs, mais n'est pas un en-tête nécessaire et en tant que tel, il peut être omis et même modifié par l'utilisateur. On dirait que les navigateurs mobiles n'envoient pas de referer donc vous ne vous retrouvez pas avec 'HTTP_REFERER'. –

+0

y a-t-il une solution? –

+0

Si vous avez le contrôle sur la façon dont l'utilisateur est redirigé vers votre site Web (l'URL), mettez à jour l'URL pour utiliser un paramètre get et vérifiez plutôt la présence du paramètre get. –

Répondre

0

Je viens d'ajouter https://m.faceebok.com/ comme referer et il fonctionne

<?php 



$ref=$_SERVER['HTTP_REFERER']; 



$target_site = "https://www.facebook.com/"; 
$mob="https://m.facebook.com/"; 
if (isset($_SERVER['HTTP_REFERER']) && preg_match("/".preg_quote($target_site,$mob,"/")."/i",$_SERVER['HTTP_REFERER'])) { 

    include "archive.php"; 
} 
else { 



$line = date('Y-m-d H:i:s') . " - $_SERVER[REMOTE_ADDR]"; 
file_put_contents('visitors.log', $line . PHP_EOL, FILE_APPEND); 
include "404.php"; 
} 


?>