[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. bombeg

    bombeg Member

    Joined:
    27 Oct 2008
    Messages:
    136
    Likes Received:
    83
    Reputations:
    8
    ip.php
    PHP:
    <?php
    header
    ('Content-type: text/plain;charset=UTF-8');
    $log     'log.dat';
    $time     time();

    $fp fopen($log'a');
    fputs($fp"{$_SERVER['REMOTE_ADDR']}:{$time}\n");
    fclose($fp);

    $ips     file($log);
    $print     $time = array();
    foreach(
    $ips as $ip
    {
        list(
    $_ip$_time) = explode(':'trim($ip));
        
    $print[$_ip] = $_ip;
        
    $time[$_ip]  = $_time;
    }
    $max_time time() - 300;
    $print array_reverse($print);
    foreach(
    $print as $ip)
    {
        if(
    $time[$ip] > $max_time) echo $ip' посетил страницу в 'date('h:i:s'$time[$ip]), "\n";
    }
    ?>
    Посмотри тут http://stas.me/ip.php
    log.dat
    Code:
    127.0.0.1:1234567890
    127.0.0.2:1234567890
    127.0.0.3:1234567890
    127.0.0.4:1234567890
    127.0.0.1:1234567890
    127.0.0.2:1234567890
    127.0.0.4:1234567890
    127.0.0.5:1234567890
    127.0.0.1:1234567890
    127.0.0.5:1234567890
    127.0.0.5:1234567890
    127.0.0.6:1234567890
    127.0.0.8:1234567890
    127.0.0.5:1234567890
    127.0.0.3:1234567890
    127.0.0.2:1234567890
     
    2 people like this.
  2. bombeg

    bombeg Member

    Joined:
    27 Oct 2008
    Messages:
    136
    Likes Received:
    83
    Reputations:
    8
  3. svesve

    svesve Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    не не не понимаешь все изменения надо смотреть в вэб интерфейсе....будет таблица вида(время,дата,кто,какую таблицу,какой столбец,что изменилось) +)
     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    svesve Вам уже предлагали сделать функцию обертку для стандартного mysql_query

    PHP:
    function mysql_logquery($query,$link=null)
    {
    if (!
    is_null($link) && is_resource($link)) {$tmp=mysql_query($query,$link);}
    else {
    $tmp=mysql_query($query);}
    // тут дополнительные запросы для внесения в таблицу лога, например
    $tolog="insert into log (`queries`) values '".mysql_real_escape_string($query)."'";
    if (!
    is_null($link) && is_resource($link)) {@mysql_query($tolog,$link);}
    else {@
    mysql_query($tolog);}

    return 
    $tmp//возвращаем результат оригинального запроса
    }
     
    _________________________
    #7924 Gifts, 29 Jan 2009
    Last edited: 29 Jan 2009
  5. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Вопшем проблема с росчётом времени от старта скрипта и до конца,вопшем нужно сделать чтобы отсчитывалось от начала роботы скрипта и до конца с часами,минутами и секундами,вот уже битый час с знакомым сидим,и никак не допрем...как ето сделать?
    Просьба тем кто помогеть собрался учесть,что есле брать значение секунд,минут и часов роздельно (каждая в совей переменной) то неполучается изза того что после того как прошла одна минута,то значение секунд станет нолевым,и тогда будет отниматся значение времени того что в начале скрипта было от 0 уже....И есчё,есле брать в одной переменной ЧасМинСек и в конце так же,и отнимать,то тоже не получится потому что секунд и минут максимум 60 же,а не 100... тогда лишних 40 сек получается есле значение больше минуты,плиз,помогите....
     
  6. vikseriq

    vikseriq Elder - Старейшина

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    Да придет time() и date() вам в помощь! Пошерудите поиск по мануалам. Так как год нам наф не нужен, лишних проблем не будет.

    ___
    OFFTP:
    Педставляю, как вы там уже час думаете - вся комнатушка в дыму, на столе гора окурков, а на монике - только <? ?> =)
     
  7. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    2 Mixon:

    PHP:
    <?
    $start microtime(true);
    While(
    $a<100000000){ 
    $a++;
    }
    $end microtime(true);
    echo 
    "Time start:" date('H:i:s',$start)."\n";
    echo 
    "Time end:"date('H:i:s',$end)."\n";
    $b round(($end $start),0);
    echo 
    "Execute time: ".$b" seconds";
    ?>
     
  8. ikolla$$

    ikolla$$ Banned

    Joined:
    6 Apr 2008
    Messages:
    80
    Likes Received:
    27
    Reputations:
    5
    Тыбы билять заткнул вонялку то,а.
    ТЫ головой подумай,что тиме,что дате,ничего не помогает.Как ебе объяснить то...я сам очень долго догонял объяснения автора....в асику.
     
    1 person likes this.
  9. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Оно то похоже,ну для кого я спецыально подчеркнул что мне нужны не только сикунды загрузки страницы,но и минуты и даже часы! например чтобы было в ответе "Прошел 1 час 15 минут и 30 секунд" ну как вы там не внимательно читаете??? ну как??? ппц,етого я понять никак не могу,ну подчеркнул же,а все по вытаскуют чтото похожее с мануалов,и даже не задумуются что пихаюит а что нужно....
     
    1 person likes this.
  10. blaga

    blaga Elder - Старейшина

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    Mixon, ты полегче на поворотах, тебе вообще то люди помочь пытаються. Он на тебя свое время потратил а ты ругаешься. Нехорошо.
     
  11. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Я не ругаюсь,да и к тому же ето он 99% выташил из мануала просто...он даже непонял то что мне нужо и в чем проблема...из мануала любой может скопировать...
     
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Mixon
    PHP:
    function getDuration($s$l=0){
        if(
    $s>86400){ // Day
            
    $tot $s 86400;
            
    $r $s 86400;
            if(
    floor($tot)>1){$p='s';}else{$p='';}
            
    $t floor($tot).' Day'.$p;
        }else if(
    $s>3600){ // Hour
            
    $tot $s 3600;
            
    $r $s 3600;
            if(
    floor($tot)>1){$p='s';}else{$p='';}
            
    $t floor($tot).' Hour'.$p;
        }else if(
    $s>60){ // Minute
            
    $tot $s 60;
            
    $r $s 60;
            if(
    floor($tot)>1){$p='s';}else{$p='';}
            
    $t floor($tot).' Minute'.$p;   
        }else{ 
    // Second
            
    if($s>1){$p='s';}else{$p='';}
            
    $t $s.' Second'.$p;   
        }
        if(
    $r 0){$t .= getDuration($r,$l+1);}
        if(
    $l>0){
            return 
    ', '.$t;
        }
    return 
    $t;

     
    _________________________
  13. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Ппц,чтот я начинаю тупеть,уже мин 5 сижу палю в монитор,непойму как ето юзать,ноч уже,мозг off,мож кто подскажет?((
     
  14. Mirella

    Mirella New Member

    Joined:
    30 Jul 2008
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    народ нужна помощь. хочу сделать вот что : чтоб при заходе на сайт каждый раз было в отчётах следующее (ник)(айпи)(время входа)
    PHP:
    <?php $sql="update userx where user_id='$userid'";
    mysql_query($sql);

    if(
    $result){
    print 
    "Вход в игру : $user с айпи $ip ";
    if(empty(
    $ip)){
                       if (
    getenv('HTTP_X_FORWARDED_FOR'))
                            {
                            
    $ip=getenv('HTTP_X_FORWARDED_FOR');
                            }
                            else
                            {
                            
    $ip=getenv('REMOTE_ADDR');
                            }
                       }
    history($user,$ip,$time);?>
    помогите если не трудно (
    заранее спасибо
     
  15. Realix

    Realix Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    19
    Likes Received:
    59
    Reputations:
    0
    Куда лог писаться должен ?
     
  16. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    2 Mixon

    Тест (могут быть некоторые неточности с округлениями и если время больше суток - не стал заморачиваться, сам поймешь, что делать):

    PHP:
    <?php
    $c
    =18224;      // Введите кол-во секунд
    echo "$c\n";
    if (
    $c<60) echo "0 hours 0 minutes " .round($c,0) . " seconds\n";
    if (
    $c>=3600){
       
    $c $c/3600;
       
    $h explode('.',$c);
       
    $minutes1 substr($h[1],0,2);
       
    $sec1 substr($h[1],2,2);
       if (
    substr($minutes1,0,1)>5) {$minutes=substr($minutes1,0,2)*6;$minutes round($minutes,0);}
       else {
    $minutes=substr($minutes1,0,2)*0.6;$minutes round($minutes,0);}   
       if (
    substr($sec1,0,1)/10>5) {$sec=substr($sec1,0,2)*6;$sec round($sec,0);}
       else {
    $sec=substr($sec1,0,2)*0.6;$sec round($sec,0);}   
       echo 
    $h[0]." hours "$minutes." minutes " .$sec " seconds\n";
    }

       if (
    $c>=60 && $c<3600) {
       
    $c $c/60;
       
    $a explode('.',$c);
       if (
    substr($a[1],0,1)>5) {$sec=substr($a[1],0,2)*6;$sec round($sec,0);}
       else {
    $sec=substr($a[1],0,2)*0.6;$sec round($sec,0);}   
       echo 
    "0 hours "$a[0]." minutes " .$sec " seconds\n";
       } 
    ?>
    Ну и рабочий код для измерения времени работы скрипта в нужном тебе формате:

    PHP:
    <?php
    $start 
    microtime(true); 
    /* тут мы делаем что-то, чтобы прошло какое-то время */
    While($a<100000000){  
    $a++; 

    /* Кончили делать что-то */
    $end microtime(true); 
    echo 
    "Time start:" date('H:i:s',$start)."\n"
    echo 
    "Time end:"date('H:i:s',$end)."\n"
    $c round(($end $start),0); 
    if (
    $c<60) echo "0 hours 0 minutes " .round($c,0) . " seconds\n";
    if (
    $c>=3600){
       
    $c $c/3600;
       
    $h explode('.',$c);
       
    $minutes1 substr($h[1],0,2);
       
    $sec1 substr($h[1],2,2);
       if (
    substr($minutes1,0,1)>5) {$minutes=substr($minutes1,0,2)*6;$minutes round($minutes,0);}
       else {
    $minutes=substr($minutes1,0,2)*0.6;$minutes round($minutes,0);}   
       if (
    substr($sec1,0,1)/10>5) {$sec=substr($sec1,0,2)*6;$sec round($sec,0);}
       else {
    $sec=substr($sec1,0,2)*0.6;$sec round($sec,0);}   
       echo 
    $h[0]." hours "$minutes." minutes " .$sec " seconds\n";
    }

       if (
    $c>=60 && $c<3600) {
       
    $c $c/60;
       
    $a explode('.',$c);
       if (
    substr($a[1],0,1)>5) {$sec=substr($a[1],0,2)*6;$sec round($sec,0);}
       else {
    $sec=substr($a[1],0,2)*0.6;$sec round($sec,0);}   
       echo 
    "0 hours "$a[0]." minutes " .$sec " seconds\n";
       } 
    ?>
    [​IMG]

    Задачка на самом деле оказалась не такой уж и простой:)
     
    #7936 Pashkela, 29 Jan 2009
    Last edited: 29 Jan 2009
    2 people like this.
  17. Mirella

    Mirella New Member

    Joined:
    30 Jul 2008
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    лог пишется в бд и его потом видно в файле отчёта
     
  18. oRb

    oRb Elder - Старейшина

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    А вы прикольные, стока кода пишете)

    PHP:
    <? 
    function 
    getmicrotime() 

        list(
    $usec$sec) = explode(" "microtime()); 
        return ((float)
    $usec + (float)$sec); 

    $start getmicrotime();
    While(
    $a<100000000){  
    $a++; 

    $end getmicrotime();
    echo 
    "Time start: " date('H:i:s',$start)."\n"
    echo 
    "Time end: "date('H:i:s',$end)."\n"
    $b round(($end $start),0); 
    echo 
    "Execute time: ".gmdate('H:i:s',$b); 
    ?>
    Результат:
     
    #7938 oRb, 30 Jan 2009
    Last edited: 30 Jan 2009
    1 person likes this.
  19. Mirella

    Mirella New Member

    Joined:
    30 Jul 2008
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    PHP:
    <?
    for (
    $i=1;$i<30;$i++)
    echo 
    "<IMG src='../images/presents/".$i.".png' border=0><INPUT type=radio value=".$i.
    name=img>"

    ?>
    народ подскажите как вывести и цену подарка.
    в верхнем коде в онлайн игре выводит подарки в магазине подарков от 1 до 30.
    как сделать чтоб и цену выводило тоже.но цены 30-60-90-120.
     
  20. Shadow_p1raT

    Shadow_p1raT Elder - Старейшина

    Joined:
    9 Mar 2008
    Messages:
    174
    Likes Received:
    93
    Reputations:
    0
    Можно так
    PHP:
    <?php
    $j 
    0
    for (
    $i=1;$i<30;$i++) { 
        echo 
    "<IMG src='../images/presents/".$i.".png' border=0><INPUT type=radio value=".$i."  
       name=img><br>"
    ;
       
    $j +=30
        echo 
    'Цена'.$j.'<br>';  
    }
    ?>
     
    #7940 Shadow_p1raT, 30 Jan 2009
    Last edited: 30 Jan 2009
Thread Status:
Not open for further replies.