inclure une fonction en tant que 2ème condition

Le
jerome
Bonjour,

J'ai trouvé deux scripts que je voudrais bien utiliser ensemble mais mes
compétences en php sont limitées et je ne trouve pas la réponse
(pourtant je rtfm à fond croyez moi)

Il s'agit d'un compteur qui marque une visite seulement si le visiteur
n'a pas encore de cookie et s'il n'est pas un robot de moteur de recherche.

l'include est dans l'index.php et est la 2ème vérification:


if(($cookie 0 || empty($_COOKIE['compteur'])) AND ((include
"scripts/bot.php") == 0)) {


le script de vérification robot est à part dans un fichier bot.php:

-
<?php
// Renvoie TRUE si le visiteur de la page est un robot d'un moteur
de recherche
function IsVisitorBot($content) {
// Tableau des adresses ip
$IPtab[] = '66.249.'; // Googlebot
$IPtab[] = '207.68.146.'; // MSN Bot
$IPtab[] = '65.54.188.'; // MSN Bot
$IPtab[] = '66.196.'; // Yahoo
$IPtab[] = '68.142.'; // Yahoo
$IPtab[] = '195.101.94.'; // Voila
$IPtab[] = '64.241.243.65'; // Wisenut
$IPtab[] = '209.249.67.1'; // Wisenut
$IPtab[] = '64.241.242.177'; // Wisenut
$IPtab[] = '66.77.73.'; // Fast
$IPtab[] = '62.212.117.198'; // Deepindex
$IPtab[] = '65.214.36.'; // Teoma
$IPtab[] = '65.214.38.10'; // Teoma
$IPtab[] = '212.127.141.180'; // Whalhello
$IPtab[] = '213.73.184.'; // Whalhello
$IPtab[] = '216.243.113.1'; // Gigablast
$IPtab[] = '217.205.60.225'; // Mirago
$IPtab[] = '62.119.21.157'; // picsearch
$IPtab[] = '193.218.115.6'; // Szukacz
$IPtab[] = '210.59.144.149'; // Openfind
$IPtab[] = '66.237.60.22'; // Openfind
$IPtab[] = '218.145.25.'; // Naver
// Vérifie chaque adresse
if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR'])) {
for($t = 0, $max = count($IPtab); $t < $max; ++$t) {
if (strpos($_SERVER['REMOTE_ADDR'], $IPtab[$t]) 0)
{
return true;
}
}
}
return false;
}
?>


merci d'avance à ceux qui se pencheront sur ce problème, et si quelqu'un
est intéressé le compteur est ici et marche nickel sans la vérif robots:

http://www.yoann166.fr.nf/

--
Jérôme
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #24237361
Bonjour,

Le 10/02/2012 16:30, jerome a écrit :

J'ai trouvé deux scripts que je voudrais bien utiliser ensemble mais mes
compétences en php sont limitées et je ne trouve pas la réponse
(pourtant je rtfm à fond croyez moi)...



Juste pour rappel, alors :

Il s'agit d'un compteur qui marque une visite seulement si le visiteur
n'a pas encore de cookie et s'il n'est pas un robot de moteur de recherche.

l'include est dans l'index.php et est la 2ème vérification:

---------------------------------------------------------------
if(($cookie === 0 || empty($_COOKIE['compteur'])) AND ((include
"scripts/bot.php") == 0)) {
---------------------------------------------------------------

le script de vérification robot est à part dans un fichier bot.php:

----------------------------------------------------------------
<?php
// Renvoie TRUE si le visiteur de la page est un robot d'un moteur
de recherche
function IsVisitorBot($content) {
// Tableau des adresses ip
[...]
}
?>
---------------------------------------------------------------



Tel que c'est écrit, la fonction IsVisitorBot() n'est jamais
appelée. Soit dit en passant, son paramètre $content ne sert
à rien et tu peux le supprimer.

Sur la page de manuel de la fonction include, il est dit que
tu pourrais faire un return de la valeur à la fin du script
inclus. Donc par exemple :

----------------------------------------------------------------
<?php
// Renvoie TRUE si le visiteur de la page est un robot d'un moteur
de recherche
function IsVisitorBot($content) {
[...]
}
return IsVisitorBot("oui je suis content");
?>
---------------------------------------------------------------

Une autre possibilité consiste à appeler la fonction dans le script
appelant, après avoir fait l'include de façon inconditionnelle :

---------------------------------------------------------------
include "scripts/bot.php";
if (
($cookie === 0 || empty($_COOKIE['compteur']))
AND (IsVisitorBot("si tu es content mieux") == false)
) {
---------------------------------------------------------------

Cordialement,
--
Olivier Miakinen
jerome
Le #24237691
Le 10.02.2012 16:55, Olivier Miakinen a écrit :
Bonjour,

Le 10/02/2012 16:30, jerome a écrit :

J'ai trouvé deux scripts que je voudrais bien utiliser ensemble mais mes
compétences en php sont limitées et je ne trouve pas la réponse
(pourtant je rtfm à fond croyez moi)...



Juste pour rappel, alors :

Il s'agit d'un compteur qui marque une visite seulement si le visiteur
n'a pas encore de cookie et s'il n'est pas un robot de moteur de recherche.

l'include est dans l'index.php et est la 2ème vérification:

---------------------------------------------------------------
if(($cookie === 0 || empty($_COOKIE['compteur'])) AND ((include
"scripts/bot.php") == 0)) {
---------------------------------------------------------------

le script de vérification robot est à part dans un fichier bot.php:

----------------------------------------------------------------
<?php
// Renvoie TRUE si le visiteur de la page est un robot d'un moteur
de recherche
function IsVisitorBot($content) {
// Tableau des adresses ip
[...]
}
?>
---------------------------------------------------------------



Tel que c'est écrit, la fonction IsVisitorBot() n'est jamais
appelée. Soit dit en passant, son paramètre $content ne sert
à rien et tu peux le supprimer.

Sur la page de manuel de la fonction include, il est dit que
tu pourrais faire un return de la valeur à la fin du script
inclus. Donc par exemple :

----------------------------------------------------------------
<?php
// Renvoie TRUE si le visiteur de la page est un robot d'un moteur
de recherche
function IsVisitorBot($content) {
[...]
}
return IsVisitorBot("oui je suis content");
?>
---------------------------------------------------------------

Une autre possibilité consiste à appeler la fonction dans le script
appelant, après avoir fait l'include de façon inconditionnelle :

---------------------------------------------------------------
include "scripts/bot.php";
if (
($cookie === 0 || empty($_COOKIE['compteur']))
AND (IsVisitorBot("si tu es content mieux") == false)
) {
---------------------------------------------------------------

Cordialement,




C'est bien un des manuels que j'utilisais...

J'ai opté pour la deuxième solution et ça roule on dirait, j'attends les
robots pour confirmer :)

Dans la première option je pensais que le retour de la fonction
IsVisitorBot() était déjà en place et que c'était true ou false donc je
laisse tomber :/


Merci gourou, et non je suis pas si con que ça... Je goinfre déjà
tellement de manuels que ça me ressort par les oreilles.
Je peux t'installer un serveur apache toutes options sur un linux, un
freeBSD ou même un windows mais coder du php non, promis je m'y mets
sérieusement dès que j'ai un peu de temps.

Merci encore pour ton efficacité et ta rapidité.

--
Jérôme
Olivier Miakinen
Le #24238721
Le 10/02/2012 18:22, jerome a écrit :
Le 10.02.2012 16:55, Olivier Miakinen a écrit :
[citation intégrale, bonjour et formule de politesse compris]



C'est bien un des manuels que j'utilisais...



Un autre manuel à lire avant d'écrire sur usenet :

Il y a quelques mois, ta réponse aurait été refusée par la modération.

J'ai opté pour la deuxième solution et ça roule on dirait, j'attends les
robots pour confirmer :)

Dans la première option je pensais que le retour de la fonction
IsVisitorBot() était déjà en place et que c'était true ou false donc je
laisse tomber :/



Je ne connaissais pas la première option. C'est en lisant la doc pour te
répondre que j'ai découvert qu'elle existait.

[...]
Je peux t'installer un serveur apache toutes options sur un linux, un
freeBSD



Tu te déplaces gratuitement jusque dans le Val-de-Marne ? ;-)


Cordialement,
--
Olivier Miakinen
Marc Baur
Le #24239181
On 10/02/2012 18:22, jerome wrote:
Je peux t'installer un serveur apache toutes options sur un linux, un
freeBSD ou même un windows mais coder du php non, promis je m'y mets
sérieusement dès que j'ai un peu de temps.



En même temps, ce n'est pas le même métier! L'un relève d'une compétence
de développeur et l'autre d'une compétence d'administrateur système.
Pour avoir travaillé dans les deux domaines, je sais que ça nécessite un
temps de formation/adaptation pour chacune des deux... ;)

--
Marc
Publicité
Poster une réponse
Anonyme