Log script aanpassen
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
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 ?
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.
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.
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
$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.
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? :)
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
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?
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 ;-)
jammer dat ik amper verstand heb van sql :/