1
votes

Redirection d'en-tête si l'agent utilisateur est égal à des variables en utilisant PHP

J'ai un script qui doit rediriger vers la page 403 si l'agent utilisateur est égal à des variables, mais sinon - doit afficher la page normale. Au lieu de cela, le script n'affiche qu'une page vierge et c'est tout. Veuillez m'aider à résoudre mon problème ou ce que je fais mal.

Voici le script:

<?php

 //-- Get user agent
 //-- Thanks @creditosrapidos10min for hint about strtolower() 
 $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);

 //-- BadBot variable
 $Baiduspider = stripos($useragent, "Baiduspider");
 $DotBot = stripos($useragent, "DotBot");

 //-- BadBot constant
 $BADBOT = ($Baiduspider||$DotBot);

if ($agent == $BADBOT){

    header("Location: ohno/403.php");
    exit;


} else { ?>

 Display home page

 <?php }?>


0 commentaires

4 Réponses :


1
votes

Vous utilisez stripos sur $ useragent mais vous n'avez pas défini $ useragent , vous avez uniquement défini $ agent . Essayez de corriger cela et réessayez.


1 commentaires

désolé .. mon erreur .. je la change ... mais je ne résous toujours pas mon problème (



2
votes

Essayez avec $ HTTP_SERVER_VARS au lieu de $ _SERVER, afin de ne pas avoir de problèmes avec les variables globales.

Sinon, essayez avec strtolower:

<?php

 //-- Get user agent
 $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);

 //-- BadBot variable
 $Baiduspider = stripos($useragent, "baiduspider");
 $DotBot = stripos($useragent, "dotbot");

 //-- BadBot constant
 $BADBOT = ($Baiduspider||$DotBot);

if ($agent == $BADBOT){

    header("Location: ohno/403.php");
    exit;


} else { ?>

 Display home page

 <?php }?>


1 commentaires

merci beaucoup mais toujours pas d'effet ... il suffit de rediriger tous les agents utilisateurs vers la page 403 (.. vous pouvez le voir sur sauna.ho.ua/badbot.php



1
votes

Je pense que vous avez utilisé $ user au lieu de $ user_agent .

Et selon le manuel php manuel php sur stipos vous devriez utiliser triple = like ===.

Voici un exemple de comment cela devrait être .

<?php
    //-- Get user agent
    //-- Thanks @creditosrapidos10min for hint about strtolower() 
    $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);

    //-- BadBot variable
    $Baiduspider = stripos($useragent, "Baiduspider");
    $DotBot = stripos($useragent, "DotBot");

    //-- BadBot constant
    $BADBOT = ($Baiduspider||$DotBot);

    if ($useragent === $BADBOT){

    header("Location: ohno/403.php");
    exit;

    } else { ?>

    Display home page

    <?php }
    ?>


1 commentaires

non ... === ne fonctionne pas .. car après === doit être faux ou vrai ... dans mon exemple, il doit être == ... Tank you for answer ...



0
votes

Fonctionne sur mon navigateur! ce n'est peut-être pas le code de votre navigateur? j'utilise le navigateur Opera entrez la description de l'image ici


1 commentaires

et votre capture d'écran de ma page avec le code de script utilisant ==, pas ===;) ... C'est ok .. Merci pour la réponse ... Votre exemple fonctionne parfaitement.