Срочно!!!

Discussion in 'PHP' started by namak, 13 Dec 2009.

  1. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    Нужен небольшой скриптик, на php!!
    Скрипт должен каждому IP выдать на страничке (крупным шрифтом) число от 1 до 21. Причем разным IP не показывать одно и тоже число. Если можно то если с одного IP заходят 2 раза или более, то выводить одно и тоже число!
     
  2. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    PHP:
    <?php
    //------------------//
    $base 'base.txt'
    //------------------//
     
    $bd file_get_contents($base);
     if(
    preg_match('#'.$_SERVER['REMOTE_ADDR'].':(.*?)\n#i',$bd,$number))
      {
           echo 
    '<strong>Ваше число:<h1>'.$number[1].'</h1></strong>';
        exit;
      }
      else
      {
       
    $number rand(1,21);
       while(
    $result == null)
        {
         if(
    preg_match('#:'.$number.'\n#i',$bd))
          {
           
    $number rand(1,21);
          }
          else
          {
           
    $result $number;
          }
        }
        echo 
    '<strong>Ваше число:<h1>'.$result.'</h1></strong>';
        
    $fh fopen($base'a+');
        
    $success fwrite($fh$_SERVER['REMOTE_ADDR'].':'.$result."\r\n");
        
    fclose($fh);
      }
    /* geforse.name */
    ?>
    • Если человек уже посещал сайт, то выдаёт его число
    • Если нет, то выдаёт новое число и записывает в базу
    • У разных людей числа не повторяются
     
    1 person likes this.
  3. Player#1

    Player#1 Member

    Joined:
    11 Nov 2008
    Messages:
    95
    Likes Received:
    35
    Reputations:
    10
    Мой вариант ;)
    PHP:
    $ip $_SERVER['REMOTE_ADDR'];

    //Проверяем есть ли IP в логах
    function check($ip)
    {
        
    $fp fopen("log.txt""r");
        while(!
    feof($fp))
        {
            
    $ip_log fgets($fp); 
            
    $str explode(" "$ip_log);
            if(
    $str[0]==$ip)
            {
                
    $number $str[1];
                break;
            };
        };
        
    fclose($fp);
        return 
    $number;
    };

    //Добавляем IP в лог
    function add($ip)
        {
            
    $rnd mt_rand(1,21);
            
    $fp fopen ("log.txt""a");
            
    fwrite($fp$ip." ".$rnd."\n");
            
    fclose($fp);
            return 
    $rnd;
        };

    if(
    $result check($ip))
    {
        
    $number=$result;
    }else{
        
    $number add($ip);
    };

    echo 
    "<h1>".$number."</h1>";
     
    1 person likes this.
  4. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    а в случае динамического ip что будет??
     
  5. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    Клади это число при первом посещении пользователю в куки. В будущем проверяй, есть ли такая кука пользователя и если есть, то показывай. Если нет, то выбирай число и записывай в куки.
     
    1 person likes this.
  6. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    ого, whexp, если б для меня эт так легко было я б написал))
    спасиб за совет!
    хотелось бы доработать этот скрипт
     
    1 person likes this.
  7. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    Я бы дописал, но не работаю с PHP :) Сервер устанавливать, настраивать... Наверняка кто-нибудь допишет :)
     
  8. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    ну ниче)