Script php 3 -> php 5

Résolu
wroom69 Messages postés 26 Statut Membre -  
wroom69 Messages postés 26 Statut Membre -
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

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    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
  2. wroom69 Messages postés 26 Statut Membre
     
    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
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      '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
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      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
  3. wroom69 Messages postés 26 Statut Membre
     
    Merci avec isset ça fonctionne
    Encore merciii!
    0