Script php 3 -> php 5

Résolu/Fermé
wroom69 Messages postés 23 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 4 février 2017 - 8 mars 2015 à 10:58
wroom69 Messages postés 23 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 4 février 2017 - 9 mars 2015 à 08:14
Bonjour,
J'ai un script qui commence à dater (2000) qui se nomme compteur intelligent et trouvé sur comscript.
C'est pour récupérer les adresses IP des visiteurs dans un fichier texte. C'est en php3.
Il y a 4 fichiers
  • page.php3
  • visites.php3
  • nombre.txt
  • agent_ip_date_lien.txt

Je travail sur un site d'annonces (qui n'a pas l'option de récupérer l'IP)en local avec joomla 3.3.6. J'ai installé les fichiers pour voir les warning.

Notice: Undefined variable: REMOTE_ADDR in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\petanque\page.php on line 19

Warning: gethostbyaddr(): Address is not a valid IPv4 or IPv6 address in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\petanque\page.php on line 19

Notice: Undefined variable: HTTP_REFERER in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\petanque\page.php on line 21

Notice: Undefined variable: REMOTE_ADDR in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\petanque\page.php on line 29

Notice: Undefined variable: HTTP_USER_AGENT in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\petanque\page.php on line 36
Les lignes concernées
  • ligne 19 ->$adresse_dns = gethostbyaddr('REMOTE_ADDR');
  • ligne 21 ->$ref = "$HTTP_REFERER";
  • ligne 29 ->fputs($fp, "$REMOTE_ADDR");
  • ligne 36 ->fputs($fp,"$HTTP_USER_AGENT");

Ne peut on pas modifier ces lignes en langage php 5 afin de faire fonctionner ce code ?



3 réponses

NHenry Messages postés 15175 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 25 décembre 2024 350
8 mars 2015 à 12:56
il faut utiliser les variables globales $_*

$HTTP_REFERER -> $_SERVER['HTTP_REFERER']
par exemple, fais un print_r sur ces quelques variables :
$_SERVER, $_REQUEST, $_POST, $_GET, ...
Et regardes la doc à leur sujet.
0
wroom69 Messages postés 23 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 4 février 2017
8 mars 2015 à 14:15
Bonjour,
Oups c'est dur pour moi, je n'ai pas assez de connaissances.
La ligne 19 j'ai mis -> $adresse_dns = gethostbyaddr ( $_SERVER [ 'REMOTE_ADDR']);
la ligne 21 $ref = $_SERVER['HTTP_REFERER'];
La j'ai un message d'erreur
Notice: Undefined index: HTTP_REFERER in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\petanque\page.php on line 21

la ligne 29 -> fputs($fp,$_SERVER [ 'REMOTE_ADDR']);
la ligne 36 -> fputs($fp,$_SERVER [ 'HTTP_USER_AGENT' ]);
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
8 mars 2015 à 21:41
'lut, le script n'est pas bien fait: il ne gère pas l'absence de header HTTP
Referer
, qui peut être légitimement absent (accès direct à la page) ou volontairement supprimé (comme moi qui utilise une extension Firefox pour le virer; tracking toussa toussa...).
Met donc un test ternaire pour mettre
$ref
à "" en l'absence du header:
$ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "";

Ou, plus court, en PHP 5.3+
$ref = $_SERVER['HTTP_REFERER'] ?: "";
0
NHenry Messages postés 15175 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 25 décembre 2024 350
8 mars 2015 à 21:57
Si "HTTP_REFERER" n'est pas définit c'est que cela n'est pas renseigné par le navigateur, donc il faut que tu teste avant avec isset.
0
wroom69 Messages postés 23 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 4 février 2017
9 mars 2015 à 08:14
Merci avec isset ça fonctionne
Encore merciii!
0