Log script aanpassen
Ik heb dit script (onderaan de thread) en ik wil dit graag
zo aanpassen dat de logs bovenaan komen te staan ipv onderaan.
log post script:
zo aanpassen dat de logs bovenaan komen te staan ipv onderaan.
log post script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
function log_post_vars($filename)
{
$datum = date('d-m-Y / H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
$handle = fopen($filename, "a");
foreach($_POST as $variable => $value) {
fwrite($handle, $variable);
fwrite($handle, ": ");
fwrite($handle, $value);
fwrite($handle, "\r\n");
fwrite($handle, "\r\n");
}
fwrite($handle, "IP: $ip\r\n");
fwrite($handle, "<hr>\r\n");
fwrite($handle, "\r\n");
fclose($handle);
}
log_post_vars("../../../../testdomain.local/public_html/users/1/logs.php");
setcookie ("user", "empty", time()+3600);
header("Location: http://testdomain.local/logs.txt");
exit;
?>
function log_post_vars($filename)
{
$datum = date('d-m-Y / H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
$handle = fopen($filename, "a");
foreach($_POST as $variable => $value) {
fwrite($handle, $variable);
fwrite($handle, ": ");
fwrite($handle, $value);
fwrite($handle, "\r\n");
fwrite($handle, "\r\n");
}
fwrite($handle, "IP: $ip\r\n");
fwrite($handle, "<hr>\r\n");
fwrite($handle, "\r\n");
fclose($handle);
}
log_post_vars("../../../../testdomain.local/public_html/users/1/logs.php");
setcookie ("user", "empty", time()+3600);
header("Location: http://testdomain.local/logs.txt");
exit;
?>
Gewijzigd op 04/01/2015 02:16:02 door Jeroen dj
Regel 7, maar van:
dit:
Wellicht wil je dan eerst even een $text maken zodat je log wel in dezelfde volgorde komt, maar dan bovenaan.
Zie http://php.net/manual/en/function.fopen.php
dit:
Wellicht wil je dan eerst even een $text maken zodat je log wel in dezelfde volgorde komt, maar dan bovenaan.
Zie http://php.net/manual/en/function.fopen.php
Eddy E op 04/01/2015 07:47:11:
Regel 7, maar van:
dit:
Wellicht wil je dan eerst even een $text maken zodat je log wel in dezelfde volgorde komt, maar dan bovenaan.
Zie http://php.net/manual/en/function.fopen.php
dit:
Wellicht wil je dan eerst even een $text maken zodat je log wel in dezelfde volgorde komt, maar dan bovenaan.
Zie http://php.net/manual/en/function.fopen.php
Bedankt,
Ik heb dit geprobeert en het leek te werken totdat hij delen van de logs.txt verwijdert/vervangt door nieuw logs.
Hoe zat dit nou met $text ?
Dat je eerst een tekst-blokje maakt wat je in 1x schrijft:
Daarnaast ook nog wat veranderd.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
function log_post_vars($filename)
{
// Sla de POST-variabelen op
foreach($_POST as $variable => $value) {
$text[] = $variable . ": " . $value;
}
// Sla de gegevens ook op
$text[] = "IP: ".$_SERVER['REMOTE_ADDR'];
$text[] = "Date: ".date('d-m-Y / H:i:s');
$text[] = "<hr>";
// Sla deze array als string op in het logbestand
$handle = fopen($filename, "r+");
fwrite($handle, implode("\r\n", $text));
fclose($handle);
}
// voer de functie hierboven uit... waarom niet gewoon direct?
log_post_vars("../../../../testdomain.local/public_html/users/1/logs.php");
// set een cookie voor een uur...
setcookie ("user", "empty", time()+3600);
// doorsturen (prima)
header("Location: http://testdomain.local/logs.txt");
?>
function log_post_vars($filename)
{
// Sla de POST-variabelen op
foreach($_POST as $variable => $value) {
$text[] = $variable . ": " . $value;
}
// Sla de gegevens ook op
$text[] = "IP: ".$_SERVER['REMOTE_ADDR'];
$text[] = "Date: ".date('d-m-Y / H:i:s');
$text[] = "<hr>";
// Sla deze array als string op in het logbestand
$handle = fopen($filename, "r+");
fwrite($handle, implode("\r\n", $text));
fclose($handle);
}
// voer de functie hierboven uit... waarom niet gewoon direct?
log_post_vars("../../../../testdomain.local/public_html/users/1/logs.php");
// set een cookie voor een uur...
setcookie ("user", "empty", time()+3600);
// doorsturen (prima)
header("Location: http://testdomain.local/logs.txt");
?>
Daarnaast ook nog wat veranderd.
Hij vervangt nogsteeds het bestand of bovenste regel
heb hetzelfde als: http://www.phphulp.nl/php/forum/topic/fopen-r/67852/
heb hetzelfde als: http://www.phphulp.nl/php/forum/topic/fopen-r/67852/
Je zult alles in een array moeten zetten, met file(), en deze omdraaien met array_reverse() als ik mij niet vergis.
Zet eens met "\n" of PHP_EOL een regeleinde aan het einde van de string?
Dat zorgt ervoor dat de file cursor bij een append niet op een bestaande regel belandt.
Probeer het anders eens met functies die speciaal voor loggen zijn bedoeld:
Dat zorgt ervoor dat de file cursor bij een append niet op een bestaande regel belandt.
Probeer het anders eens met functies die speciaal voor loggen zijn bedoeld:
Ward van der Put op 06/01/2015 10:59:18:
Zet eens met "\n" of PHP_EOL een regeleinde aan het einde van de string?
Dat zorgt ervoor dat de file cursor bij een append niet op een bestaande regel belandt.
Probeer het anders eens met functies die speciaal voor loggen zijn bedoeld:
Dat zorgt ervoor dat de file cursor bij een append niet op een bestaande regel belandt.
Probeer het anders eens met functies die speciaal voor loggen zijn bedoeld:
dan glitched het helemaal lol, post hij alles achterelkaar en soms erboven
Toevoeging op 06/01/2015 11:06:53:
- Aar - op 06/01/2015 10:20:27:
Je zult alles in een array moeten zetten, met file(), en deze omdraaien met array_reverse() als ik mij niet vergis.
Zoiets?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function log_post_vars($filename)
{
foreach($_POST as $variable => $value) {
$text[] = $variable . ": " . $value;
}
$input = array("IP: ".$_SERVER['REMOTE_ADDR']);
$input = array("<hr>");
print_r($input);
print_r($reversed);
print_r($preserved);
log_post_vars("../../../domain.local/public_html/user/11111/logs.txt");
setcookie ("user", "empty", time()+3600);
header("Location: http://google.com/");
?>
function log_post_vars($filename)
{
foreach($_POST as $variable => $value) {
$text[] = $variable . ": " . $value;
}
$input = array("IP: ".$_SERVER['REMOTE_ADDR']);
$input = array("<hr>");
print_r($input);
print_r($reversed);
print_r($preserved);
log_post_vars("../../../domain.local/public_html/user/11111/logs.txt");
setcookie ("user", "empty", time()+3600);
header("Location: http://google.com/");
?>
Gewijzigd op 06/01/2015 11:07:29 door Jeroen dj
Zomaar overnemen uit documentatie gaat niet echt helpen. Je moet immers weten wat het script doet.
$reserved en $preserved worden hier nergens gebruikt namelijk, en het gaat om de array_reverse() functie die je moet gebruiken.
$reserved en $preserved worden hier nergens gebruikt namelijk, en het gaat om de array_reverse() functie die je moet gebruiken.
- Aar - op 06/01/2015 12:19:03:
Zomaar overnemen uit documentatie gaat niet echt helpen. Je moet immers weten wat het script doet.
$reserved en $preserved worden hier nergens gebruikt namelijk, en het gaat om de array_reverse() functie die je moet gebruiken.
$reserved en $preserved worden hier nergens gebruikt namelijk, en het gaat om de array_reverse() functie die je moet gebruiken.
Mods horen te helpen toch? Op een 1 of andere manier kom ik nooit iets verder als jij iets post.
Die andere mensen boven mij posten tenminsten nog iets waar ik wat aan heb.
Uiteraard helpen we elkaar. Maar ik zal even een voorbeeld geven.
Dan heb je in $reversed de array, maar dan omgekeerd.
Dan heb je in $reversed de array, maar dan omgekeerd.
Gewijzigd op 06/01/2015 12:37:44 door - Ariën -
Iemand anders dan - Aar - nog tips? :)
Wat is er mis met array_reverse($text); ?
Dit zou moeten werken.
En deze kan je dan met foreach() uitlezen.
Dit zou moeten werken.
En deze kan je dan met foreach() uitlezen.
Gewijzigd op 06/01/2015 12:38:37 door - Ariën -
Jeroen dj op 06/01/2015 12:35:00:
Iemand anders dan - Aar - nog tips? :)
Na zo'n opmerking..... Nee ik niet.
Gewijzigd op 06/01/2015 12:38:04 door - SanThe -
- Aar - op 06/01/2015 12:36:21:
Wat is er mis met array_reverse($text); ?
Dit zou moeten werken.
En deze kan je dan met foreach() uitlezen.
Dit zou moeten werken.
En deze kan je dan met foreach() uitlezen.
Sorry voor die comment btw, thanks :3,
zou zo iets er meer op lijken?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function log_post_vars($filename)
{
foreach($_POST as $variable => $value) {
$text[] = $variable . ": " . $value;
}
$input = array("IP: ".$_SERVER['REMOTE_ADDR']);
$input = array("<hr>");
$reversed = array_reverse($input);
print_r($reversed);
log_post_vars("../../../domain.local/public_html/user/11111/logs.txt");
setcookie ("user", "empty", time()+3600);
header("Location: http://google.com/");
?>
function log_post_vars($filename)
{
foreach($_POST as $variable => $value) {
$text[] = $variable . ": " . $value;
}
$input = array("IP: ".$_SERVER['REMOTE_ADDR']);
$input = array("<hr>");
$reversed = array_reverse($input);
print_r($reversed);
log_post_vars("../../../domain.local/public_html/user/11111/logs.txt");
setcookie ("user", "empty", time()+3600);
header("Location: http://google.com/");
?>
Gewijzigd op 06/01/2015 12:40:36 door Jeroen dj
Je array is overigens $text. het zorgde bij mij voor verwarring omdat er wat vreemde dingen in je script staan.
Is het misschien niet zinvoller om zelf eens te begrijpen wat je script precies doet? Volgens mij heb je het niet helemaal door, merk ik.
Is het misschien niet zinvoller om zelf eens te begrijpen wat je script precies doet? Volgens mij heb je het niet helemaal door, merk ik.
- Aar - op 06/01/2015 12:42:32:
Je array is overigens $text. het zorgde bij mij voor verwarring omdat er wat vreemde dingen in je script staan.
Is het misschien niet zinvoller om zelf eens te begrijpen wat je script precies doet? Volgens mij heb je het niet helemaal door, merk ik.
Is het misschien niet zinvoller om zelf eens te begrijpen wat je script precies doet? Volgens mij heb je het niet helemaal door, merk ik.
Ik probeer het te begrijpen tho
Zou je mijn script mischien eens willen aanpassen anders?
Als fopen() niet werkt met een append, kun je eventueel rigoureus 'w' gebruiken om het hele logbestand opnieuw op te slaan, inclusief de nieuwe entry:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
/**
* @param string $filename
* @return bool
*/
function log_post_vars($filename = 'post.log')
{
// Alleen een POST loggen
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
return false;
}
// En alleen een POST met data loggen
if (empty($_POST)) {
return false;
}
// Begin van een entry in de log
$entry = 'Date: ' . date('Y-m-d H:i:s') . PHP_EOL;
$entry .= 'IP: ' . $_SERVER['REMOTE_ADDR'] . PHP_EOL;
// POST-variabelen toevoegen
foreach($_POST as $variable => $value) {
$entry .= $variable . ': ' . $value . PHP_EOL;
}
// Entry afsluiten met extra witregel
$entry .= PHP_EOL;
// Bestaande log toevoegen onder nieuwe entry
if (is_file($filename)) {
$entry .= file_get_contents($filename);
}
// Gehele log opslaan
$fh = fopen($filename, 'w');
if (false === $fh) {
return false;
} else {
fwrite($fh, $entry);
fclose($fh);
return true;
}
}
?>
/**
* @param string $filename
* @return bool
*/
function log_post_vars($filename = 'post.log')
{
// Alleen een POST loggen
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
return false;
}
// En alleen een POST met data loggen
if (empty($_POST)) {
return false;
}
// Begin van een entry in de log
$entry = 'Date: ' . date('Y-m-d H:i:s') . PHP_EOL;
$entry .= 'IP: ' . $_SERVER['REMOTE_ADDR'] . PHP_EOL;
// POST-variabelen toevoegen
foreach($_POST as $variable => $value) {
$entry .= $variable . ': ' . $value . PHP_EOL;
}
// Entry afsluiten met extra witregel
$entry .= PHP_EOL;
// Bestaande log toevoegen onder nieuwe entry
if (is_file($filename)) {
$entry .= file_get_contents($filename);
}
// Gehele log opslaan
$fh = fopen($filename, 'w');
if (false === $fh) {
return false;
} else {
fwrite($fh, $entry);
fclose($fh);
return true;
}
}
?>
Ik zou helemaal niet zo moeilijk gaan lopen doen met bestanden. Gewoon loggen naar een database-tabel. Is veel flexibeler en wanneer je veel moet loggen geeft het een stuk minder systeembelasting.
Voor een log van databasefouten zou ik wel een uitzondering maken ;-)
php script blijft telkens laden ward, denk dat ik toch maar eens wat beter naar sql moet gaan kijken
jammer dat ik amper verstand heb van sql :/
jammer dat ik amper verstand heb van sql :/




