Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как добавить строку сверху?
 
 автор: Anton   (27.03.2007 в 23:47)   письмо автору
 
 

<?php
$log_file="counter.log";
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR"); // определяет айпи
fputs($f,"$ip\n");
fclose($f);
?>
Не ругайтесь, я только начал изучать пхп, так и не нашел примера в поиске.... Вот это добавляет айпи в counter.log строку в конце. Как сделать, чтобы не в вниз добавлял, а в первую строку

   
 
 автор: DEM   (27.03.2007 в 23:49)   письмо автору
 
   для: Anton   (27.03.2007 в 23:47)
 


<?php
$log_file
="counter.log";
$file file($log_file);
$ip=getenv("REMOTE_ADDR"); // определяет айпи
for($i=0;$i<count($file);$i++)
{
    
$ip .= $file."\n";
}
$f fopen($log_file"w");
fputs($f$ip);
fclose($f);
?>


Попробуйте это... Но это довольно большой скрипт... теоретически можно просто открыть файл, кк вы сразу, засунуть его в переменную (всмысле данные из файла), а потом к перемоной с вашим АйПи прибавить переменную этого файла ($gogi = $ip.$file); И выглядеть это будет примерно так:

<?php
$log_file
="counter.log";
$file fopen($log_file"r");
$ip=getenv("REMOTE_ADDR"); // определяет айпи
$ip .= $file."\n";
$f fopen($log_file"w");
fputs($f$ip);
fclose($f);
?>


Но точно не уверен, что будет работать...

   
 
 автор: Anton   (28.03.2007 в 07:09)   письмо автору
 
   для: DEM   (27.03.2007 в 23:49)
 

Спасибо DEM за ответ... но они не работают
В первом случае в counter.log написал 200.40.80.80 Array
Во втором случае 200.40.80.80 Resource id #4

   
 
 автор: bronenos   (27.03.2007 в 23:51)   письмо автору
 
   для: Anton   (27.03.2007 в 23:47)
 

читать полностью в строку, добавить запись в начало строки и затем эту строку записать в файл

   
 
 автор: KPETuH   (28.03.2007 в 09:33)   письмо автору
 
   для: Anton   (27.03.2007 в 23:47)
 

Поаробуйте вот так...

<?php
$log_file
="counter.log";
$file=getenv("REMOTE_ADDR")."\r\n".file_get_contents($log_file);
$f=fopen($log_file,"w");
fputs($f,$file);
fclose($f);
?>

   
 
 автор: Anton   (28.03.2007 в 10:05)   письмо автору
 
   для: KPETuH   (28.03.2007 в 09:33)
 

Спасибо! Зароботал

   
 
 автор: Anton   (28.03.2007 в 12:28)   письмо автору
 
   для: Anton   (28.03.2007 в 10:05)
 

Дальше... Как туда переменную $time=date('H:i:s, d.m'); туда засунуть?


<?php 
$log_file
="counter.log"
$file=getenv("REMOTE_ADDR")."\r\n".file_get_contents($log_file); 
$time=date('H:i:s, d.m')."\r\n".file_get_contents($log_file);   // так что ли?
$f=fopen($log_file,"w"); 
fputs($f,$file);       // а здесь? может fputs($f,"$time#$file"); 
fclose($f); 
?>

   
 
 автор: KPETuH   (28.03.2007 в 13:15)   письмо автору
 
   для: Anton   (28.03.2007 в 12:28)
 

покажите структуру файла логов...

   
 
 автор: Anton   (28.03.2007 в 15:20)   письмо автору
 
   для: KPETuH   (28.03.2007 в 13:15)
 

вот это работает

<?php 
$log_file
="counter.log"
$ip=getenv("REMOTE_ADDR")."\r\n".file_get_contents($log_file); 
$f=fopen($log_file,"w"); 
fputs($f,$ip); 
fclose($f); 
?>


я просто хочу туда добавить еще несколько переменных, а именно


$time=date('H:i:s, d.m');
$ag=getenv("HTTP_USER_AGENT");        
$from=getenv("HTTP_REFERER");        
$host=getenv("REQUEST_URI");


Вопрос: как тогда будет fputs($f,

fputs($f,"$time###$ip###$ag###$from###$host\n") ? // какая то неразбириха получается в лог файле так...

или
...
$array=array($ip,$time,$ag,$from,$host);
$f=fopen($log_file,"w");
fputs($f,$array); //тоже не получается

   
 
 автор: Trianon   (28.03.2007 в 16:09)   письмо автору
 
   для: Anton   (28.03.2007 в 15:20)
 

Для начала определите, какой именно Вы хотели бы видеть строку в логе.

   
 
 автор: Anton   (28.03.2007 в 16:46)   письмо автору
 
   для: Trianon   (28.03.2007 в 16:09)
 

ну пусть будет строка примерно так:
время||айпи||HTTP_USER_AGENT||HTTP_REFERER||REQUEST_URI
И еще, можно добавить такие строчки типа if ($ip=="666.66.66.66") $ip="Это я";
if ($ip=="777.77.77.77") $ip="Анна";

   
 
 автор: Trianon   (28.03.2007 в 17:07)   письмо автору
 
   для: Anton   (28.03.2007 в 16:46)
 

Я так понимаю, что если заменить решетки ### в Вашем примере на символ | , и добавить предложенные if, то всё примерно так и будет.
Вызов str_replace смотрелся бы изящнее, но работать будет в любом случае. С if - даже надежней.

   
 
 автор: KPETuH   (28.03.2007 в 17:06)   письмо автору
 
   для: Anton   (28.03.2007 в 15:20)
 

<?php  
$log_file
="counter.log";  
$ip=getenv("HTTP_USER_AGENT")."||".getenv("REMOTE_ADDR")."||".getenv("HTTP_USER_AGENT")."||".getenv("HTTP_REFERER")."||".getenv("REQUEST_URI")."\r\n".file_get_contents($log_file);  
$f=fopen($log_file,"w");  
fputs($f,$ip);  
fclose($f);  
?>


Естественно переменная записывается в одну строчку

   
 
 автор: Anton   (28.03.2007 в 20:48)   письмо автору
 
   для: KPETuH   (28.03.2007 в 17:06)
 

Большое спасибо KPETuH, Trianon !
А теперь как из лога на скрытую страницу вывести, допустим 7 послед посетивших?
ну скелет думаю так?

<?php
$f
=fopen("../counter.log","r");
flock($f,LOCK_EX);
$count=fread($f,4096);
flock($f,LOCK_UN);
fclose($f);
echo 
"$count\n"?>

   
 
 автор: KPETuH   (29.03.2007 в 05:09)   письмо автору
 
   для: Anton   (28.03.2007 в 20:48)
 


<?php
$f
=file('../counter.log');
for (
$i=0;$i=6;$i++)
{
       echo 
$f[$i];
}
?>

   
 
 автор: Trianon   (29.03.2007 в 09:38)   письмо автору
 
   для: KPETuH   (29.03.2007 в 05:09)
 

> for ($i=0;$i=6;$i++)
Боюсь, так оно выведет весь список, а потом отвалится по превышению времени исполнения скрипта :)

   
 
 автор: Anton   (29.03.2007 в 09:43)   письмо автору
 
   для: Trianon   (29.03.2007 в 09:38)
 

как сделать чтоб каждый i-й элемент $f в новой строке было

for ($i=1; $i<=100; $i++){
       echo $f[$i]; }


\n не помогает

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования