![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 6.04.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Próbuję napisać skrypt który zapisuje informacje o odwiedzających (ip, host, data i godzina). Sam zapis mi wychodzi ale chciałem to rozszeżyć o automatyczne usuwanie najstarszych wpisów jeśli jest ich więcej niż 10.
Na razie napisałem coś takiego: index.php[php:1:eb8b1c18e7]<?php $ip=$_SERVER['REMOTE_ADDR']; $host=gethostbyaddr($ip); $data=date("d-m-Y"); $godzina=date("H:i:s"); $open=fopen("ip.dat", "a"); $save="$ip||$host||$data||$godzina rn"; fputs($open, $save); fclose($open); ?>[/php:1:eb8b1c18e7] ip.php[php:1:eb8b1c18e7]<?php $table=file("ip.dat"); $table=array_reverse($table); $all=count($table); for($p=$all; $p>9; $p--) { unset($table[$p]); for($n=0;$n<count($table);$n++) { $table[$n]=chop($table[$n]); } $cale=implode("rn",$table); $open=fopen("ip.dat", "w"); fwrite($open,chop($cale)); fclose($open); } for($i=0; $i<$all; $i++) { $ip=explode("||", "$table[$i]"); print("IP: <b>$ip[0]</b> Host: <b>$ip[1]</b> Data: <b>$ip[2]</b> Godzina: <b>$ip[3]</b><BR>"); } ?>[/php:1:eb8b1c18e7]Ale to się sypie.... Może mi ktoś pomóc?? -------------------- pozdrawiam.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 97 Pomógł: 13 Dołączył: 26.06.2003 Skąd: Piekary Śląskie Ostrzeżenie: (0%) ![]() ![]() |
Niech mu ktoś pomoże bo mi by sie też takie coś przydało, lub żeby można było wybrane przezemnie wpisy usuwać.
-------------------- This is only game
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 6.04.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Do usówania wybranych wpisów zastsuj coś takiego:
$usun = id linijki wpisu ktory chcesz usunąć dane.inc = plik w ktorym trzymasz te informacje I teraz:[php:1:3fe4c8f772]<?php $table=file("dane.inc"); unset($table[$usun]); for($n=0;$n<count($table);$n++) { $table[$n]=chop($table[$n]); } $cale=implode("rn",$table); $open=fopen("dane.inc", "w"); fwrite($open,chop($cale)); fclose($open); ?>[/php:1:3fe4c8f772] -------------------- pozdrawiam.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 97 Pomógł: 13 Dołączył: 26.06.2003 Skąd: Piekary Śląskie Ostrzeżenie: (0%) ![]() ![]() |
W którym miejscu dać :
$usun = id linijki wpisu ktory chcesz usunąć dane.inc = plik w ktorym trzymasz te informacje Zaraz po znaczniku <? :?: :?: [/b] ?>[/php] -------------------- This is only game
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 6.04.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Nie ja to w moim systemie newsów robie tak:
delete.php[php:1:29ca99f419]<?php $tabela=file("dane.inc"); // Zamienia zawartosc pliku dane.inc na tablice $table=array_reverse($tabela); for($i=0; $i<count($table); $i++) // Dopuki sa newsy wyswietla je { $dane=explode ("||", $table[$i]); // Rozdziela kazdy news znakami || // POCZTAEK - Wyswietlanie newsa print("<b>.: $dane[0] :.</b><small> $dane[1] $dane[2]</small>"); print("<br>"); print("$dane[3]"); print("<br>"); print("<small>Posted by... <a href=mailto:$dane[4]>$dane[5]</a></small>"); print("<br>"); print("News numer $i --- <a href=del.php?usun=$i>Usuń News</a>"); print("<br>"); print("<br>"); // KONIEC - Wyswietlanie newsa } ?>[/php:1:29ca99f419]I jak widać z tego kodu przeslyła zmienną $usun do pliku del.php a tam już to obrabiasz tak jak wyżej. Aha Sorry za komentarze ale teraz nie mam czasu żeby je usówać a cały skrypt mam okomentowany! Ale dalej czekam na odpowiedź na moje 1 pytanie - jak zrobić automatyczne usówanie powyżej 10 wpisów -------------------- pozdrawiam.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Akurat komentarze w kodzie są raczej sprawą chwalebną, a nie wstydliwą. Gdyby tak wszyscy komentowali kod, żyłoby się łatwiej.
"Life would be much easier if I had the source code." :wink: -------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 6.04.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Cytat Akurat komentarze w kodzie są raczej sprawą chwalebną, a nie wstydliwą. Gdyby tak wszyscy komentowali kod, żyłoby się łatwiej.
"Life would be much easier if I had the source code." :wink: Aha to ok ![]() Ale czy nikt nie jest mi w stanie pomóc w problemie dal którego właśnie powstał ten topic?? 8) -------------------- pozdrawiam.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Cytat Akurat komentarze w kodzie są raczej sprawą chwalebną, a nie wstydliwą. Gdyby tak wszyscy komentowali kod, żyłoby się łatwiej.
"Life would be much easier if I had the source code." :wink: Ale nie do przesady....... ![]() -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Banał.[php:1:60254cf9b8]<?php
//najpierw wczytujesz plik do tablicy $dane = file("dane.txt"); //teraz kasujesz plik (najprościej tak) unlink("dane.txt"); //teraz masz dane tylko w tablicy foreach($dane as $id => $tresc){ //zapisujesz je z powrotem do pliku $fp = fopen("dane.txt", "a"); fputs($fp, $tresc); fclose($fp); //jak dochodzisz do 10 linii wyskakuje polecenie break. if($id == 10){break;} } ?>[/php:1:60254cf9b8] Ta metoda jest dobra, jeżeli chcesz rzeczywiście tylko 10 wpisów. Przy wiekszej ilości zbyt obciążające. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 6.04.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
No dobra jakoś to działa (nawet bardzo dobrze 8) ). Ale ja chce zostawić 10 najnowszych (czyli ostatnich 10 od dołu), a ten numer z array_reverse nie przechodzi :cry: ...
-------------------- pozdrawiam.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
no tak.. to źle robisz od początku..
trzeba zapisywać nowe wpisy na samej górze. [php:1:7f3552eb3d]<?php //wyciągasz dane z pliku $kolejnosc = file("test.txt", "a"); $raport = "Najnowszy wpisrn"; //kasujesz plik @unlink("test.txt"); //tworzysz plik i wsadzasz najnowszy wpis $fp = fopen("test.txt", "a"); fputs($fp, $raport); fclose($fp); //teraz wsadzasz resztę z powrotem do pliku foreach($kolejnosc as $news){ $fp = fopen("test.txt", "a"); fputs($fp, $news); fclose($fp);} ?>[/php:1:7f3552eb3d] I w ten sposób najnowszy wpis będzie zawsze na samej górze, a co za tym idzie kasowanie będzie poprawne. Tylko z nowu to ma zastosowanie do niewielkich obciążeń. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
A nie krócej?
[php:1:cf25096d54]<?php //wyciągasz dane z pliku $kolejnosc = file("test.txt", "a"); $raport = "Najnowszy wpisrn"; //tworzysz plik i wsadzasz najnowszy wpis oraz resztę wpisów $fp = fopen("test.txt", "w"); fputs($fp, $raport); fputs($fp,implode("",$kolejnosc)); fclose($fp); ?>[/php:1:cf25096d54] -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 11:27 |