ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   PHP (https://forum.antichat.io/forumdisplay.php?f=37)
-   -   Срочно!!! (https://forum.antichat.io/showthread.php?t=163231)

namak 13.12.2009 17:01

Срочно!!!
 
Нужен небольшой скриптик, на php!!
Скрипт должен каждому IP выдать на страничке (крупным шрифтом) число от 1 до 21. Причем разным IP не показывать одно и тоже число. Если можно то если с одного IP заходят 2 раза или более, то выводить одно и тоже число!

geforse 13.12.2009 18:14

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 */
?>

  • Если человек уже посещал сайт, то выдаёт его число
  • Если нет, то выдаёт новое число и записывает в базу
  • У разных людей числа не повторяются

Player#1 13.12.2009 18:21

Мой вариант ;)
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>"; 


namak 13.12.2009 20:21

а в случае динамического ip что будет??

whexp 13.12.2009 20:28

Клади это число при первом посещении пользователю в куки. В будущем проверяй, есть ли такая кука пользователя и если есть, то показывай. Если нет, то выбирай число и записывай в куки.

namak 13.12.2009 21:27

ого, whexp, если б для меня эт так легко было я б написал))
спасиб за совет!
хотелось бы доработать этот скрипт

whexp 13.12.2009 21:33

Я бы дописал, но не работаю с PHP :) Сервер устанавливать, настраивать... Наверняка кто-нибудь допишет :)

namak 13.12.2009 22:14

ну ниче)


Время: 06:33