Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

detekcija....

[es] :: PHP :: detekcija....

[ Pregleda: 3751 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

manca
N/A

Član broj: 460
Poruke: 1299
*.verat.net

Jabber: manca@elitesecurity.org
ICQ: 94432046
Sajt: www.mtldesign.co.sr


+1 Profil

icon detekcija....02.08.2003. u 00:41 - pre 252 meseci
Zdravo, imam problem sa PHP-om......
ja sam napravio PHP(2 skripte) jedna detekcija.php, druga index1.php
u detekciji se kriju podatci koji ce da iscitaju info o ip broju i o ip adresi......
dakle da prikazu korisniku sta koristi.....
e sad ja hocu da mi info o ip-u i o os-u cuva u jedan log fajl.....dakle da imam uvid kakvi posetioci sve dolaze , sa kojim os-om i ip-om.
kako ovo da odradim.....
evo oba koda:
detekcija.php
Code:

<?php

    class Browser {

    var $os;           // Operating System (Linux, Solaris, Windows)

    var $remote_ip;


    function Browser() {
      global $teststring;
      if ($teststring != "" ) {
        $agentstring = $teststring;
        $testwarn = "yes";
      } else {
        $agentstring = $_SERVER['HTTP_USER_AGENT'];
      }
      $http_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
      # get some values from the $HTTP_USER_AGENT variables
      $luser_agent0=explode("(",$agentstring);
      $luser_agent1=explode(")",$luser_agent0[1]);
      $luser_agent2=explode(";",$luser_agent1[0]);



      # Which operating systems do we want to detect? 
      # How do we want to call them?
      $det_os = array (
        array("Linux","Linux"), // Some prefer "GNU/Linux"
        array("FreeBSD","FreeBSD"),
        array("OpenBSD","OpenBSD"),
        array("NetBSD","NetBSD"),
    array("Windows 2000","Windows","2000","Microsoft"),
    array("Windows NT 5.0","Windows","2000","Microsoft"),
        array("Windows NT 5.1","Windows","XP","Microsoft"),
        array("Windows NT 5.2","Windows","2003","Microsoft"),
        array("Windows NT","Windows","NT 4.0","Microsoft"),
        array("Windows XP","Windows","XP","Microsoft"),
        array("Windows 95","Windows","95","Microsoft"),
        array("Windows 98","Windows","98","Microsoft"),
        array("Windows ME","Windows","ME","Microsoft"),
        array("WinNT4.0","Windows","NT 4.0","Microsoft"),
        array("Win98","Windows","98","Microsoft"),
        array("Win95","Windows","95","Microsoft"),
        array("mac os x","MacOS","X","Apple"),
        array("Mac OS X","MacOS","X","Apple"),
        array("MacOS X","MacOS","X","Apple"),
        array("Mac_PowerPC","MacOS","","Apple"),
        array("Macintosh","MacOS","","Apple"),
        array("macintosh","MacOS","","Apple"),
    array("OS/2","OS/2","","IBM"),
    array("SunOS 5.7","Solaris","5.7","Sun"),
    array("SunOS 5.8","Solaris","5.8","Sun"),
    array("SunOS 5.9","Solaris","5.9","Sun"),
    array("SunOS","Solaris","","Sun"),
    array("AIX","AIX","","IBM"),
    array("HP-UX","HP-UX","","HP"),
    array("IRIX","IRIX","","Sgi"),
    array("BeOS","BeOS","","Be"),
    array("Unix","UNIX","",""),
    array("UNIX","UNIX","",""),
    array("unix_sv","UNIX","","SCO"),
    array("X11","UNIX","","")
      );
      
    

      #####################
      ##### FUNCTIONS #####
      #####################
      
      # function to give the $os variable the right string.
      # $arg1 is where to look.
      # $arg2 is the list we want to search with.
      function testos ($arg1,$arg2)
      {
        for ($i = 0; $i <= sizeof($arg2); $i++){
          if ((strpos($arg1,$arg2[$i][0])) || ($arg1 == $arg2[$i][0])){
            $os=$arg2[$i][1];
        if ($arg2[$i][2] != ""){
          $os_ver=$arg2[$i][2];
        }
        if ($arg2[$i][3] != ""){
          $os_vendor=$arg2[$i][3];
        }
        return array($os,$os_ver,$os_vendor);
          }
        }
      }
      
      # give the $os variable the right string.
    $os=testos($luser_agent2[2],$det_os);
        if (($os == NULL) && ($luser_agent2[0] == "Macintosh")){
          $os[0]="MacOS";
        }
       
      
      // remote ip
      $this -> remote_ip = $_SERVER["REMOTE_ADDR"];
      $remote_ip = $this -> remote_ip;
      
      #####################################################
      ##### If they're not detected, they're unknown. #####
      #####################################################
      
      if ($os[0] == NULL) $os[0]="nepoznato";
      if ($remote_ip == NULL) $remote_ip="nepoznato";
      

      ########################################      
      ##### put results into member vars #####
      ########################################
 
      $this -> os = $os[0];
      $this -> remote_ip = $remote_ip;
}




      

      
      #########################
      ##### test function #####
      #########################
      function test()
        {
     $os = $this -> os;
     $remote_ip = $this -> remote_ip;
    
                
    
      echo "Vi koristite:<b> $os </b> ";
      echo "<br>";
      echo "Sa trenutnim IP brojem: <b>$remote_ip</b>";
      
      }
         
}
$os=fopen('log.txt' , 'w');
$remote_ip=fopen('log.txt' , 'w+');
fwrite($os,$remote_ip);
?>  evo ja sam ovde dodao ovo, ali ne radi.....napravi log fajl, ali ne upise informacije u njega.


index1.php
Code:

<?php
  echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
  <head>
    <title>Detekcija OS-a i IP broja</title>
  </head>
  <body>
  <?php
    include("detekcija.php");
    $b = new Browser;
    
    // uncomment to log user agent strings.
    // $b -> logger("agentstrings.txt");
    
    $b -> teststring = $teststring;
    $b -> test();
    

    

  ?>  

</body>
</html>


dakle ako neko zna kako da ovo izvedem neka javi......
Pozdrav....
Keep the faith....
MTL Design Studio....
http://www.mtldesign.co.sr
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: detekcija....02.08.2003. u 01:35 - pre 252 meseci
Prvo, hajde ovu datoteku sa klasom dodaj kao prilog uz poruku, a ukloni ovo čudo sa stranice.

Drugo, ona pomenuta metoda logger() u klasi ne postoji.
Treće onaj kod što si dodao pokazuje da moraš da pročitaš o Objektnom programiranju u PHP-u, Opsegu varijabli u funkcijama, Klasama i objektima, pa još jednom o opsegu varijabli.

Mali hint: $os i $remote_ip su varijable unutar klase Browser koju si instancirao preko tokena new. Unutar te klase tim varijablama pristupaš preko ugrađene reference na objekat $this. Tako da u nekoj metodi klase možeš koristiti $this->os za pristup varijabli. Van klase ne možeš pristupati podacima u klasi, osim ako nisi uradio instancu klase jer se tek tada rezerviše memorija za varijable u klasi. Tada imaš referencu pod kojom si uradio instancu, u tvom slučaju $b u index.php. Preko te reference možeš pristupiti klasi, ali samo nakon što je ona instancirana. Dalje saznaj sam, pa ćemo da te korigujemo.

Četvrto, pročitaj manual o Filesystems funkcijama, na funkciji fwrite imaš celo parče koda. Ovo tvoje ništa ne valja, moraš imati jedan fopen (pročitaj malo o parametrima pa ćeš videti da tebi zapravo treba a+, a ne w+), nakon tog fopena-a radiš fwrite i na kraju fclose, inače osta tvoja datoteka pod lock-om...


http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

arsa x
Srdjan Arsic
Beograd

Član broj: 11158
Poruke: 197
*.ppp-bg.sezampro.yu

ICQ: 219800682
Sajt: www.internetdizajn.com


Profil

icon Re: detekcija....02.08.2003. u 01:37 - pre 252 meseci
http://www.elitesecurity.org/tema/25528/0#176025
Aj sad odo
 
Odgovor na temu

manca
N/A

Član broj: 460
Poruke: 1299
*.verat.net

Jabber: manca@elitesecurity.org
ICQ: 94432046
Sajt: www.mtldesign.co.sr


+1 Profil

icon Re: detekcija....03.08.2003. u 18:45 - pre 252 meseci
ne arsa....
ne treba mi brojac nego skripta koja ce da detektuje os i ip adresu/////

Keep the faith....
MTL Design Studio....
http://www.mtldesign.co.sr
 
Odgovor na temu

arsa x
Srdjan Arsic
Beograd

Član broj: 11158
Poruke: 197
195.252.80.*

ICQ: 219800682
Sajt: www.internetdizajn.com


Profil

icon Re: detekcija....03.08.2003. u 18:57 - pre 252 meseci
Da manca nije to sto ti treba al moze ti pomoci.
Mozes vrlo lako da iskoristis skriptu uz malu prepravku za upisivanje u log file
Aj sad odo
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: detekcija....03.08.2003. u 19:42 - pre 252 meseci
Ja sam ti dao dovoljno detaljan odgovor. Potrudi se malo, pa kada saznaš nešto novo, dodji sa novim pitanjem. U suprotnom It Jobs je tu.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

manca
N/A

Član broj: 460
Poruke: 1299
*.verat.net

Jabber: manca@elitesecurity.org
ICQ: 94432046
Sajt: www.mtldesign.co.sr


+1 Profil

icon Re: detekcija....03.08.2003. u 23:41 - pre 252 meseci
pa ne znam kako da to uradim.....
Gorane da stavim li skriptu u vec postojecu klasu browser , ili da napisem izva nje>>>>???
Keep the faith....
MTL Design Studio....
http://www.mtldesign.co.sr
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: detekcija....03.08.2003. u 23:56 - pre 252 meseci
Najbolje je da napišeš novu metodu klase Browser koja će raditi logging. Onda nju, ili da pozoveš iz ove već postojeće metode (koju koristiš za čitanje parametara) ili da je pozivaš preko inicijalizovanog objekta iz index.php-a.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

manca
N/A

Član broj: 460
Poruke: 1299
*.verat.net

Jabber: manca@elitesecurity.org
ICQ: 94432046
Sajt: www.mtldesign.co.sr


+1 Profil

icon Re: detekcija....04.08.2003. u 17:18 - pre 252 meseci
Gorane mozes li nekako ti da mi napises neku takvu skriptu....da ja ne lupam glavu sad.....
ako ti nije problem napisi i posalji na manca1 na verat.net
mislim ako oces
Hvala
Keep the faith....
MTL Design Studio....
http://www.mtldesign.co.sr
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: detekcija....04.08.2003. u 17:25 - pre 252 meseci
pa to ne bi bilo zanimljivo, zar ne? ma hajde možeš ti to potrudi se malo...
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

peja
Aleksandar Pejić
PI

Član broj: 11299
Poruke: 15
*.ptt.yu



Profil

icon Re: detekcija....04.08.2003. u 22:26 - pre 252 meseci
ma ok je Gorane mozes da mu posaljes....
da se ne muci vise
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: detekcija....04.08.2003. u 23:40 - pre 252 meseci
Prvo da ti kažem ona klasa je dosta loša. Ima par grešaka sa globalnim varijablama i u principu je dosta loša. Drugo šta ti linija "$b -> teststring = $teststring;" znači uopšte. Pošto želiš da skripta očita trenutni browser, globalni $teststring mora da bude "", odnosno NULL. Zato ga slobodno ostavi neinicijalizovano, ili zameni onu liniju sa $teststring="". E sada ti kada si uradio $b=new Browser(), ti si alocirao memoriju i pozvao instancu klase Browser, odnosno izvršio njen konstruktor, metodu Browser() klase Browser. Metoda inicijalizuje $agentstring varijablu. Odatle izvlači $luser_agent0, 1 i 2. Zatim inicijalizuje ovaj veeeliki višedimenzionalni niz. Sledeće što ti radiš (izuzev one gluposti sa $textstring koja veze sa vetzom nema jer u klasi dinamički pravi neku novu varijablu i inicijalizuje je vrednošću neinicijalizovane varijable, što rezultira sa lepim NULL) je da pozivaš test() metodu kalse Browser. E sada ona varijable klase prepisuje u lokalne varijable $os i $remote_ip, ali ja ne vidim gde se one inicijalizuju tako da sumnjam da ti ovo prikazuje bilo šta. Onda si ti dodao one tri pogrešne linije van klase, koje se izvrše kada uradiš include datoteke, ali su varijable neinicijalizovane, tj van one metode test() $os ne postoji kao varijabla. A ti si još stavio ne da upišeš te vrednosti već da filedescriptor otvorenog fajla strpaš u tu (za taj deo koda) novu promenljivu.

E sada funkcija koja nešto može da uradi je testos() koja kao parametre očekuje onaj veeeliki niz i niz koji je skripta izvukla od korisnikovih podataka. Ali to mi se čini da isto ne radi. Odakle bre izvuče ovaj kod?

Kako bi to trebalo da izgleda: SA GOMILOM ISPRAVLJENIH GREŠAKA, ZAGRADA, RASPOREDA DELOVA KODA...

Code:

<?php

    class Browser {

    var $os;
    var $remote_ip;
 
      
      # function to give the $os variable the right string.
      # $arg1 is where to look.
      # $arg2 is the list we want to search with.
      function testos($arg1,$arg2)
      {
        for ($i = 0; $i <= sizeof($arg2); $i++){
          if ((strpos($arg1,$arg2[$i][0])) || ($arg1 == $arg2[$i][0])){
            $os=$arg2[$i][1];
    if ($arg2[$i][2] != ""){
      $os_ver=$arg2[$i][2];
    }
    if ($arg2[$i][3] != ""){
      $os_vendor=$arg2[$i][3];
    }
    
    return array($os,$os_ver,$os_vendor);
          }
        }
    
    }

      
    
    function Browser() {
        $agentstring = $_SERVER['HTTP_USER_AGENT'];
        $http_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    
      // ovo rastavlja $_SERVER['HTTP_USER_AGENT'];
      // na pojedine delove
      $luser_agent0=explode("(",$agentstring);  
      $luser_agent1=explode(")",$luser_agent0[1]);
      $luser_agent2=explode(";",$luser_agent1[0]);

     /*print_r($luser_agent2); daje:
     
      Array ( 
         [0] => X11 
     [1] => U 
     [2] => Linux i686 
     [3] => en-US 
     [4] => rv:1.4b 
    )     
     */

      # Which operating systems do we want to detect? 
      # How do we want to call them?
      $det_os = array (
        array("Linux","Linux"), // Some prefer "GNU/Linux"
        array("FreeBSD","FreeBSD"),
        array("OpenBSD","OpenBSD"),
        array("NetBSD","NetBSD"),
array("Windows 2000","Windows","2000","Microsoft"),
array("Windows NT 5.0","Windows","2000","Microsoft"),
        array("Windows NT 5.1","Windows","XP","Microsoft"),
        array("Windows NT 5.2","Windows","2003","Microsoft"),
        array("Windows NT","Windows","NT 4.0","Microsoft"),
        array("Windows XP","Windows","XP","Microsoft"),
        array("Windows 95","Windows","95","Microsoft"),
        array("Windows 98","Windows","98","Microsoft"),
        array("Windows ME","Windows","ME","Microsoft"),
        array("WinNT4.0","Windows","NT 4.0","Microsoft"),
        array("Win98","Windows","98","Microsoft"),
        array("Win95","Windows","95","Microsoft"),
        array("mac os x","MacOS","X","Apple"),
        array("Mac OS X","MacOS","X","Apple"),
        array("MacOS X","MacOS","X","Apple"),
        array("Mac_PowerPC","MacOS","","Apple"),
        array("Macintosh","MacOS","","Apple"),
        array("macintosh","MacOS","","Apple"),
array("OS/2","OS/2","","IBM"),
array("SunOS 5.7","Solaris","5.7","Sun"),
array("SunOS 5.8","Solaris","5.8","Sun"),
array("SunOS 5.9","Solaris","5.9","Sun"),
array("SunOS","Solaris","","Sun"),
array("AIX","AIX","","IBM"),
array("HP-UX","HP-UX","","HP"),
array("IRIX","IRIX","","Sgi"),
array("BeOS","BeOS","","Be"),
array("Unix","UNIX","",""),
array("UNIX","UNIX","",""),
array("unix_sv","UNIX","","SCO"),
array("X11","UNIX","","")
      );
      

      // OVO MORA BITI OVDE A NE GDE JE BILO!
     # give the $os variable the right string.
         $os=$this->testos($luser_agent2[2],$det_os);
        if (($os == NULL) && ($luser_agent2[0] == "Macintosh")){
          $os[0]="MacOS";
        }
      
      if ($os[0] == NULL) $os[0]="nepoznato";
      if ($remote_ip == NULL) $remote_ip="nepoznato";
             
      // i ovo fali!
      $this->os=$os[0];
      
      // remote ip
      $this->remote_ip = $_SERVER["REMOTE_ADDR"];      
      
           
} // ovo je ovde falilo!  

      
// ovde je bilo viska zagrada!


// sada OVDE dodajem novu metodu:
function zapisi($file) {
   $fp=fopen($file,'a+');
   fwrite($fp,"IP: $this->remote_ip\nOS: $this->os\n\n");
   fclose($fp);
}

}




// ovaj deo ubacis u index.php
// ako neces da prikazujes podatke, ti udri jednu tarabu ispred ovog echo
$b=new Browser();
echo('IP adresa: '.$b->remote_ip.'<br>OS: '.$b->os.'<br>');
$b->zapisi('log.txt');


?>

http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

manca
N/A

Član broj: 460
Poruke: 1299
*.verat.net

Jabber: manca@elitesecurity.org
ICQ: 94432046
Sajt: www.mtldesign.co.sr


+1 Profil

icon Re: detekcija....05.08.2003. u 14:26 - pre 252 meseci
E hvala ti Gorane mnogo !!!!
Keep the faith....
MTL Design Studio....
http://www.mtldesign.co.sr
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: detekcija....05.08.2003. u 15:46 - pre 252 meseci
Ja bih ti preporučio da sedneš i malo naućiš PROCEDURALNI php, a onda pređeš na OOP.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

manca
N/A

Član broj: 460
Poruke: 1299
*.verat.net

Jabber: manca@elitesecurity.org
ICQ: 94432046
Sajt: www.mtldesign.co.sr


+1 Profil

icon Re: detekcija....05.08.2003. u 22:20 - pre 252 meseci
OK......
ja sam ovo napravi uz pomoc tutora, i radilo je, ali nisam znao kako da uradim da mi zapisuje u odredjeni fajl....
Ipak hvala ti!!
Keep the faith....
MTL Design Studio....
http://www.mtldesign.co.sr
 
Odgovor na temu

[es] :: PHP :: detekcija....

[ Pregleda: 3751 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.