Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Срочно!!! (https://forum.antichat.xyz/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

ну ниче)


Время: 15:03