[PHP] preg_match IP ipv URL

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Proxx
  • Registratie: Juni 2008
  • Laatst online: 29-05-2024
Hoi Mensen,

even voor de duidelijkheid ik ben een scriptkiddie op gebied van PHP. zit zo een beetje te hobbyen en kom er niet uit

ik heb een logfile die ik wil ontleden.

127.0.0.1, 05/Jun/2009:11:00:19 +0200, http://www.blabla.nl/bla/bla.php

zoals ik het interpeteer gebruiken ze dit om de http://www.blabla.nl/bla/bla.php

preg_match('#(?:^|\.)([a-z0-9-]+\.(?:[a-z]{2,}|[a-z.]{5,6}))$#i', strtolower(parse_url($data[2], PHP_URL_HOST)), $tmp) )

nu wil ik eigenlijk ipv de URL het IP wat er voor staat er uit halen.
ik kan nu al top10 urls maken maar nog niet top10 ip(users)

Proxx wijzigde deze reactie 31-07-2015 13:37 (1337%)


Acties:
  • 0 Henk 'm!

  • samo
  • Registratie: Juni 2003
  • Laatst online: 19:39

samo

yo/wassup

Kan je daar geen
PHP:
1
substr($line, 0, strpos($line, ', '))

voor gebruiken?

Bekend van cmns.nl | ArneCoomans.nl | Het kindertehuis van mijn pa in Ghana


Acties:
  • 0 Henk 'm!

  • Optix
  • Registratie: Maart 2005
  • Laatst online: 12-08 19:46
PHP:
1
explode(', ', $log)


Wel een beetje basis hoor :/

.


Acties:
  • 0 Henk 'm!

  • Proxx
  • Registratie: Juni 2008
  • Laatst online: 29-05-2024
eej bedankt voor je reactie. maar het is ook php

if ( isset($data[2]) && preg_match('#(?:^|\.)([a-z0-9-]+\.(?:[a-z]{2,}|[a-z.]{5,6}))$#i', strtolower(parse_url($data[2], PHP_URL_HOST)), $tmp) ) {

dat is de originele zin. nu wil ik dat ie ipv de URL (onderstreept) het ip filterd

EDIT: sorry ik zit volgens mij al een regel te ver!

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
               // Data array
               $visited = array();
               
               // Read through files
               foreach ( $scan as $file ) {

                  // Allow extra time
                  @set_time_limit(30);
               
                  // Open handle to file
                  if ( ( $handle = fopen($file, 'rb') ) === false ) {
                     continue;
                  }

                  // Scan for URLs
                  while ( ( $data = fgetcsv($handle, 2000) ) !== false ) {

                     // Extract URLs
                     if ( isset($data[2]) && preg_match('#(?:^|\.)([a-z0-9-]+\.(?:[a-z]{2,}|[a-z.]{5,6}))$#i', strtolower(parse_url($data[2], PHP_URL_HOST)), $tmp) ) {


sorry dat ik zo lastig ben jongens

[ Voor 63% gewijzigd door Proxx op 05-06-2009 15:06 ]

Proxx wijzigde deze reactie 31-07-2015 13:37 (1337%)


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

1: filterT
2: lezen
3: mocht je perse regexp willen: /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/

[ Voor 43% gewijzigd door Guillome op 05-06-2009 15:03 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-09 13:49

Patriot

Fulltime #whatpulsert

Wat je natuurlijk óók kunt doen, is de regel met behulp van explode() in een array stoppen, zoiets zou er dan zo uit kunnen zien:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

$string = "127.0.0.1, 05/Jun/2009:11:00:19 +0200, http://www.blabla.nl/bla/bla.php";

// explode()'en
$array = explode(",", $string);

// We willen geen spaties aan het begin of het einde van de strings, dus die halen we even weg
$array = array_map("trim", $array);

print_r($array);
// Output:
//
// Array
// (
//     [0] => 127.0.0.1
//     [1] => 05/Jun/2009:11:00:19 +0200
//     [2] => http://www.blabla.nl/bla/bla.php
// )


?>


Op die manier krijg je dus een array met in het eerste element het ip, het tweede element de tijd/datum en in het derde element de url.

Acties:
  • 0 Henk 'm!

  • Proxx
  • Registratie: Juni 2008
  • Laatst online: 29-05-2024
ik denk dat ik er nu wel uit ga komen gezien ik verkeerd zat te zoeken :)

allemaal bedankt voor de hulp

fgetcsv( moet ik aan passen zo te zien (schele juuin da ik ben)

[ Voor 24% gewijzigd door Proxx op 05-06-2009 15:10 ]

Proxx wijzigde deze reactie 31-07-2015 13:37 (1337%)


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Twee comma's maken nog geen compleet csv bestand. Je schiet nu met een kanon op een mug. Kijk aub eerst naar de basic features als strpos, substr, strstr en explode waarmee je dit probleem op 1001 eenvoudiger manieren kan tackelen.

{signature}


Acties:
  • 0 Henk 'm!

  • Proxx
  • Registratie: Juni 2008
  • Laatst online: 29-05-2024
rustig maar ik ga die explode ook gebruiken en kom er zo wel uit. zoals ik al zij ben ik een script kiddie die gewoon voor de lol aan een php script zit te prutsen. omdaar nu meteen master in webdesign voor te gaan halen vind ik niet echt nodig. dan maar een kannon gebruiken voor die mug als het beestje maar dood is.

Proxx wijzigde deze reactie 31-07-2015 13:37 (1337%)


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Je vraagt toch zelf om hulp :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Proxx
  • Registratie: Juni 2008
  • Laatst online: 29-05-2024
klopt maar die heb ik gekregen. ik had het eigenlijk alleen tegen voutloos die zal het ook goed bedoelen. maar toch

maar ik zit al zolang te klote met een kleine aanpassing zodat mijn script ipv top10 urls de top10 ip's laat zien.
dat is alles daarna kijk ik heel die php maande niet meer aan :P

Proxx wijzigde deze reactie 31-07-2015 13:37 (1337%)


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

k :w

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Proxx schreef op vrijdag 05 juni 2009 @ 15:18:
omdaar nu meteen master in webdesign voor te gaan halen vind ik niet echt nodig.
Prima als je niet in 1x alles wil leren en guru wil worden. Maar dan is dus het advies om 1 van die functies te leren ipv fgetcsv, want daar zal je ook meer aan hebben en bovendien sneller klaar zijn. :)

Voor de rest zal je hier altijd opbouwende kritiek krijgen als je een verre van ideale oplossing roept. O-) ;)

{signature}


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 21:51
Oplossingen met explode() of fgetcsv() zijn foutgevoelig als het om het uitvogelen van het url gaat. Een url kan immers gewoon een komma bevatten. Maar goed, het ging TS geloof ik toch alleen om het resultaat. De nette oplossing stond al in de eerste reply...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Guillome schreef op vrijdag 05 juni 2009 @ 15:03:
3: mocht je perse regexp willen: /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
beter:
code:
1
/^(?:(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/

;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

uitslover :P

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router

Pagina: 1