php logboek
ik wil een logboek gaan bijhouden, en mysql leek mij niet zo zeer geschikt dus wilde ik gaan voor een dagelijks tekstbestandje.
nu moet dit niet voor iedereen toegankelijk zijn, dus moet het geinclude zijn via php, en is het logbestandje dus ook php.
dit is wat ik tot nu toe heb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
if (!file_exists("log/".date("Y-m-d").".log")) {
$handle = fopen("log/".date("Y-m-d").".log","a");
fwrite($handle,"[_PHP if ($"."security_code == 'Gerard') { PHP_]\n");
fwrite($handle,"[_PHP } PHP_]");
fclose($handle);
}
$handle = fopen("log/".date("Y-m-d").".log","a+");
fseek($handle,-1,"SEEK_CUR");
fwrite($handle,"echo '".date("Y-m-d-H:i:s").">Test one<br />';\n");
fclose($handle);
?>
if (!file_exists("log/".date("Y-m-d").".log")) {
$handle = fopen("log/".date("Y-m-d").".log","a");
fwrite($handle,"[_PHP if ($"."security_code == 'Gerard') { PHP_]\n");
fwrite($handle,"[_PHP } PHP_]");
fclose($handle);
}
$handle = fopen("log/".date("Y-m-d").".log","a+");
fseek($handle,-1,"SEEK_CUR");
fwrite($handle,"echo '".date("Y-m-d-H:i:s").">Test one<br />';\n");
fclose($handle);
?>
in de map /log komen alle dagelijkse logbestandjes te staan, tijdelijk even met achtervoegsel .log om de output te testen.
de $security_code is dus vastgesteld in de including admin pagina, om misbruik te voorkomen.
maar ik wil dat hij op de een na laatste regel begint met schrijven, zodat [_PHP } PHP_] altijd als laatste regel overblijft.
iemand suggesties? want dit werkt niet zo.
alvast bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Gerard Nijboer
Gerard Nijboer schreef op 15.04.2009 01:03:
... mysql leek mij niet zo zeer geschikt...
Ah bon.
Vooraleer we een antwoord geven op de vraag die je stelt; zou je eens een aantal argumenten kunnen geven waarom MySQL niet geschikt zou zijn?
en de grootte leek mij ook beter, of is mysql juist kleiner in opslag?
ben nieuwsgierig naar advies, wat is de beste oplossing hier?
En voor een gewoon log bestand kun je volgens mij het handigste gewone bestanden pakken en die buiten je webroot zitten. Dan hoef je er niet moeilijk voor te doen om het niet extern beschikbaar te maken.
2) dit moet netjes per dag geordend zijn en op tijd gesorteerd, met de betreffende gebruiker erbij en de ondernomen actie
3) het moet uiteindelijk wel web-toegankelijk zijn, maar alleen via admin-page, dus ik neem aan dat als ik alleen vanuit de admin page de log include, dat het dan ook zou moeten werken, en ik dus genoeg heb aan een plain-text log bestand buiten mn webroot?
Je maakt een tabel aan in je database met:
daarna kan je alles erin zetten... zorg er dan wel voor dat je het voor het laden van de pagina zet...
ik denk dat ik het zo ga oplossen, bedankt!
Tip: Zorg ervoor dat de query pas uitgevoerd word als de pagina geladen is, zodat de gebruiker niets merkt van de insert. Dat kan je met het volgende stukje
Dat delayed zorgt ervoor dat het pas aan het eind uitgevoerd wordt.
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
is er trouwens ook niet een manier dat je via phpmyadmin een query invoert die mysql bijvoorbeeld elke maand zelf uitvoert, zonder bijkomst van een php pagina?
zo kan ik mysql elke maand alle logs van 3 maanden geleden laten verwijderen, om te voorkomen dat de database alsnog enorm wordt wanneer er bijvoorbeeld langer dan 3 maanden geen admins in de logbestanden kijken.
iemand suggesties?
een database is er juist voor dat zulke grote eenheden bewaart kunnen worden. (ja zelfs mysql kan dat)
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
tnx man =D