PhP Logboek
Op mijn website kunnen geregistreerde gebruikers inloggen, en naar verschillende pagina's gaan.
Ik wil in een bestand bijhouden wie op welke pagina is geweest.
Dit is vrij makkelijk te doen, door de onClick functie van de buttons aan te passen. (de buttons verwijzen door naar alle pagina's)
Maar het bestand moet wel 'beveiligd' zijn, ik wil niet dat iedereen het logboek kan zien. Ik weet dat dit fout gaat in bijvoorbeeld een .txt file, omdat PhP dan alle lees en schrijf rechten nodig heeft.
Mijn vraag is dus, welk bestandstype raden jullie aan voor het bijhouden van een logboek? (Ik hoef er alleen maar in te schrijven, de tekst wat erin komt kan ik zelf ook maken, dat is geen probleem)
En hoe kan ik in dat type bestand schrijven?
Alvast bedankt
~Jeroen
Ps. Ik kan helaas geen gebruik maken van MySQL, dus die valt af.
Alle rechten geven is inderdaad te voorbarig, met chmod 755 zit je al prima.
Maar waarom kan je geen MySQL gebruiken? Dit werkt wel een stuk makkelijker als je later wilt sorteren en zoeken.
Toevoeging op 23/08/2012 11:28:45:
Overigens, doe dit niet d.m.v. van het aanpassen van je url's. Je plaatst in je bestand gewoonweg een stukje code dat altijd uitgevoerd wordt. Een stukje dus dat een lijn naar je logfile(s) weg schrijft. In je admin gedeelte, maak je een functie die het bestand inleest.
Om met bestanden te werken kan je is kijken naar SplFileObject (objectgericht) of naar fopen.
Gewijzigd op 23/08/2012 11:31:11 door Write Down
Maar wel een goede tip, buiten de htdocs !
Waar sla ik het bestand dan op? Ik gebruik WinSCP, en het de volgende mappen:
<mijnsite.nl>/<public_html>
Mij werd verteld dat ik alles in de public_html moest zetten.
In <mijnsite.nl> staan nog meer mappen, namelijk deze:
.htpasswd
logs
public_ftp
public_html
stats
Zoals ik al zei, alle bestanden op mijn site staan in de map public_html. Waar is de bedoeling dat ik de log file plaats?
Alvast bedankt
Durf te wedden dat je veel profijt van je logsysteem hebt.
Je bestand kan je voor je /public_html plaatsen.
Gewijzigd op 23/08/2012 11:44:08 door - Ariën -
Ok, ik heb nu een txt bestand in de map <mijnsite.nl> staan, maar hoe kan ik naar die file schrijven? <mijnsite.nl>/logboek.txt werkt niet, omdat het buiten de public_html staat.
Je moet het path aanpassen. Als je script in public_html staat is dit je basispath. De map onder public_html kan je benaderen via: '../'. Dus in je script zal je ergens iets als het volgende hebben: '../logboek.txt';
maak een map aan die je private_html noemt, zet je daarin al je php/html dat niet direct toegang mag hebben. Je log bestand zou je in logs kunnen zetten.
De log-map die al bestaat is niet voor andere logs dan de die van de webserver bedoeld.
- Aar - op 23/08/2012 13:17:16:
De log-map die al bestaat is niet voor andere logs dan de die van de webserver bedoeld.
Daar zou ik inderdaad ook niets bij gaan plaatsen. Je weet nooit waarvoor/door wat deze map allemaal gebruikt wordt. Het kan zijn dat het controle panel deze bijvoorbeeld volledig uitleest. Misschien geen ramp, maar mogelijk geeft dit fouten. (doordat het formaat bijvoorbeeld niet goed is)
Of de log-rotate van directadmin,wat op je server draait, gooit hem dan weg.
Ik heb nu een txt file, gewoon in de public_html map staan.
Als ik de rechten op alleen eigenaar lezen en schrijven zet, kan niemand het bestand openen.
Als chmod er dan voor kan zorgen dat bij het begin van het schrijven de rechten op iedereen lezen en schrijven wordt gezet, en na het schrijven weer terug op alleen eigenaar lezen en schrijven ben ik ook klaar, ... dacht ik.
Het probleem hiermee is dat chmod geen rechten heeft om de rechten te wijzigen.
Kan dat met groep, of zou het werken als ik de txt file in een PhP script zou genereren? (Dan is PhP namelijk de eigenaar, en ik niet).
Alvast bedankt
~Jeroen
Zulke log's kannen er toch prima buiten?
Ik moet het adres van het bestand weten...
Ja, je weet het adres toch? Desnoods met absoluut path.
Volgens mij werkt het ook als ik het bestand kan laten maken door PhP, zodat PhP de eigenaar is en altijd kan lezen en schrijven. Ik ken fopen, fread, fwrite, maar ik weet niet of er zoiets bestaat om een text file te maken.
Weet iemand dat?
Maar dat is toch net het punt? Je wilt het bestand niet toegankelijk maken voor anderen? Dan plaats je het dus buiten je weboort. Wil je er naar schrijven? Dan gebruik je PHP. Wil je als admin de inhoud zien, dan gebruik je ook PHP. Je gaat dus nooit rechtstreeks naar het bestand surfen.
Vervolgens gebruik ik chmod(<bestand>, 0600), wat ervoor zorgt dat alleen de eigenaar kan lezen en schrijven.
Zelfs met WinSCP kan ik het bestand niet meer openen, laat staan wijzigen. Via internet kun je ook niets wijzigen, alleen het PhP script kan dat.
Samengevat, het werkt nu perfect, met een goede beveiliging !
Bedankt allemaal
~Jeroen