[PHP] $PATH_INFO icm. Apache logfiles

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 13-09 18:46

davinci

Super-Grover to the rescue

Topicstarter
Gebruik in mijn php files geen mod_rewrite, maar via http://www.zend.com/zend/spotlight/searchengine.php kwam ik op het volgende:
PHP:
1
list($dummy, $first, $last) = explode('/', $PATH_INFO);

Nu komt in mijn logfiles: http://www.foo.com/foo.php terwijl ik eigenlijk zou willen zien: http://www.foo.com/foo.php/$first/$last Dus inclusief de rest van de $PATH_INFO

Hoe krijg ik dat voor elkaar?

<removed>


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Doe anders eens een print_r van je $_SERVER; dan kan je gewoon zien wat er beschikbaar is. Waarschijnlijk kun je wel iets met REQUEST_URI :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En als je het dan toch met PATH_INFO wil doen:
PHP:
1
2
3
$pathInfo = explode('/', $_SERVER['PATH_INFO']);
$first = $pathInfo[count($pathInfo) - 2];
$last = $pathInfo[count($pathInfo) - 1];

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
(jarig!)
als first en last vaste plaatsen hebben, zoals in bovenstaande URL, kun je net zo goed $pathInfo[1] en $pathInfo[2] gebruiken.

Daarnaast is count($pathInfo)-2 dus niet altijd de eerste maar de een na laatste, maar das logisch ;)

[ Voor 30% gewijzigd door SWINX op 13-08-2005 13:48 ]

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

-NMe- schreef op zaterdag 13 augustus 2005 @ 13:44:
En als je het dan toch met PATH_INFO wil doen:
PHP:
1
2
3
$pathInfo = explode('/', $_SERVER['PATH_INFO']);
$first = $pathInfo[count($pathInfo) - 2];
$last = $pathInfo[count($pathInfo) - 1];
Dan vindt ik dit netter
PHP:
1
2
3
$pathInfo = explode('/', $_SERVER['PATH_INFO']);
$first = reset($pathInfo[);
$last = end($pathInfo);
maar volgens mij werken beiden niet omdat de data die de TS wil hebben in het geheel niet voorkomt in de PATH_INFO? Deze bevat immers het pad naar het document; en niet het verzoek van de client met eventuele additionele data :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
(jarig!)
PATH_INFO bevat de multiview-style data, dus /first/last zal gewoon in deze waarde zitten.

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 13-09 18:46

davinci

Super-Grover to the rescue

Topicstarter
SWINX schreef op zaterdag 13 augustus 2005 @ 13:49:
PATH_INFO bevat de multiview-style data, dus /first/last zal gewoon in deze waarde zitten.
Maar dus niet in de logfiles...

<removed>


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Je wil dus de query string in de apachelog files zien? Of voordat mod_rewrite er overheen gegaan is? Want ik volg je nu niet meer?

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 13-09 18:46

davinci

Super-Grover to the rescue

Topicstarter
ik maak geen gebruik van mod_rewrite en wil dus de querystring terug kunnen zien in de logfiles...

edit:

in mijn .htaccess staat overigens netjes: AcceptPathInfo On

[ Voor 33% gewijzigd door davinci op 14-08-2005 15:55 ]

<removed>


Acties:
  • 0 Henk 'm!

  • Vesta
  • Registratie: November 2004
  • Niet online
Heb je het wel over je Apachelogs? Ik krijg netjes
code:
1
192.168.1.10 - - [14/Aug/2005:16:10:22 +0200] "GET /foo.php/$first/$last HTTP/1.1" 404 218 "-" "Opera/8.02 (Windows NT 5.1; U; en)"
zonder iets ingesteld te hebben. Je zegt http://www.foo.com/foo.php in je logs te krijgen, terwijl Apache alleen het pad geeft zoals je hierboven kunt zien. Heb je het misschien over een statistiekenpagina als Webalizer of AWstats?

Acties:
  • 0 Henk 'm!

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 13-09 18:46

davinci

Super-Grover to the rescue

Topicstarter
Vesta schreef op zondag 14 augustus 2005 @ 16:18:
Heb je het wel over je Apachelogs? Ik krijg netjes
code:
1
192.168.1.10 - - [14/Aug/2005:16:10:22 +0200] "GET /foo.php/$first/$last HTTP/1.1" 404 218 "-" "Opera/8.02 (Windows NT 5.1; U; en)"
zonder iets ingesteld te hebben. Je zegt http://www.foo.com/foo.php in je logs te krijgen, terwijl Apache alleen het pad geeft zoals je hierboven kunt zien. Heb je het misschien over een statistiekenpagina als Webalizer of AWstats?
code:
1
xxx.xx.xx.xxx - - [14/Aug/2005:16:16:16 +0200] "GET /nieuw HTTP/1.1" 301 329 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"

ik roep hier dus domein.com/nieuw/index.php aan... die index.php zet ie dus ook niet neer

<removed>


Acties:
  • 0 Henk 'm!

  • Vesta
  • Registratie: November 2004
  • Niet online
Vreemd.. In de reference manual kan ik niet zo snel iets vinden, en Directive Quick Reference vind ik iets te veel om te lezen ;) Heb je misschien een oude versie van Apache? Hier draait versie 2.0.54.

Acties:
  • 0 Henk 'm!

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 13-09 18:46

davinci

Super-Grover to the rescue

Topicstarter
Apache 2.0.40

<removed>


Acties:
  • 0 Henk 'm!

  • Vesta
  • Registratie: November 2004
  • Niet online
Aan de versie ligt het ook niet, ik heb net 2.0.40 geinstalleerd en zelfs als ik de httpd.conf strip, blijft het werken. Heb je misschien een aparte module geladen? Probeer eens de httpd.default.conf (zet er wel AcceptPathInfo On bij), of de httpd.conf die ik heb gebruikt:
code:
1
2
3
4
5
6
7
8
9
Listen 80
ServerRoot "C:/Program Files/Apache Group/Apache2"
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"

LoadModule log_config_module modules/mod_log_config.so
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access.log common

AcceptPathInfo On
Daarmee krijg ik dus nog steeds netjes
code:
1
192.168.1.10 - - [14/Aug/2005:18:37:25 +0200] "GET /test/index.html/bla/bar HTTP/1.1" 200 0


Als dit niet werkt zou ik het helaas niet weten.

Acties:
  • 0 Henk 'm!

  • Ricvdp
  • Registratie: Juni 2005
  • Laatst online: 19-09 17:21
Het is erg simpel, je neemt de variable $_SERVER['PATH_INFO']. Dat is goed.

Maar je moet ook even dit ijn je htaccess file zetten:
code:
1
Options +MultiViews

Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
(jarig!)
Als je dat niet hebt krijg je zowiezo 404's voor je neus

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 13-09 18:46

davinci

Super-Grover to the rescue

Topicstarter
Multiviews did the trick, overigens daarvoor had ik geen 404's...

<removed>


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
SWINX schreef op zondag 14 augustus 2005 @ 20:39:
Als je dat niet hebt krijg je zowiezo 404's voor je neus
Niet als nieuws een directory was met een index.php erin, dan zou je pas errors krijgen als je

/nieuws/index.php/poep

zou opvragen :)

Acties:
  • 0 Henk 'm!

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 13-09 18:46

davinci

Super-Grover to the rescue

Topicstarter
zmn schreef op maandag 15 augustus 2005 @ 12:15:
[...]


Niet als nieuws een directory was met een index.php erin, dan zou je pas errors krijgen als je

/nieuws/index.php/poep

zou opvragen :)
en toch werkte het bij mij wel..
foo.com/nieuw/index.php/first/last
en dat zonder multiviews...

strange... :?

<removed>


Acties:
  • 0 Henk 'm!

  • Vesta
  • Registratie: November 2004
  • Niet online
Ik vind het wel vreemd dat mijn gestripte versie, zonder multiviews, wel werkte. Maar het probleem is gelukkig opgelost :)
Pagina: 1