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

Форум PHP

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

 

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

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

тема: Снова сравнение строк
 
 автор: Loneliness   (22.01.2007 в 01:07)   письмо автору
 
 

Этот код находит, есть ли соответствие переменной, переданной, скажем, из формы, в содержимом файла, выводит соответствующее уведомление и записывает переменную в файл, таким образом при передаче одного и того же значения повторно результат вывода изменится с "не найдено" на "найдено":

$pid = stripslashes($_GET['pid']);
$pids = file_get_contents("pidbase.txt");
if (strpos ($pids, $pid) !== false)
{
echo("Найдено");
}
else
{
$fd = fopen("pidbase.txt","a"); 
  fwrite($fd, "$pid\r\n");   
  fclose($fd);

echo("Не найдено");
}
}


Как сделать, чтобы при передаче одного и того же значения $pid первые два раза выводило "не найдено", а после- "найдено"? Лучше даже, чтобы количество раз регулировалось.Возможно такое?
Для более наглядного представления- при запросе пользователями страницы постоянно передается один и тот же параметр- $pid, уникальный для каждого из них. Нужно ограничить количество разрешенных для одного пользователя просмотров содержимого страницы.И вывести, соответственно, ошибку, когда лимит для пользователя исчерпан.

   
 
 автор: Pit0n   (22.01.2007 в 03:24)   письмо автору
 
   для: Loneliness   (22.01.2007 в 01:07)
 

Проблему можно решить при помощи сессий, нужно при первом вхождении пользователя или при аутентификации передать пользователю параметр $_SESSION['start'] = 1;
Если пользователь заходит и его PID совпадает, что $_SESSION['start'] увеличивается на один, соответственно $x можно менять лимит вхождений.


<?php
    session_start
();
    
    
// Переменная определяет количество вхождений, разрешенное пользователю
    
$x 3
    
    
$pid stripslashes($_GET['pid']);
    
$pids file_get_contents("pidbase.txt");
    if (
strpos ($pids$pid) !== false)
        {
            if(
$_SESSION['start'] == $x)
                {
                    echo 
"Лимит вхождений исчерпан";
                    die;
                }
            echo(
"Найдено");
            
$_SESSION['start']++;
        }
    else
        {
            
$fd fopen("pidbase.txt","a"); 
            
fwrite($fd"$pid\r\n");   
            
fclose($fd);
                { 
                    echo(
"Не найдено");
                } 
        }
?>

   
 
 автор: loneliness   (22.01.2007 в 14:25)   письмо автору
 
   для: Pit0n   (22.01.2007 в 03:24)
 

Упс... Не тот пример я привел. Дело в том, что запросы производятся реально не из браузера, а по смс, на базе интерактивных услуг сотового оператора. Сессии там никак не применить, поскольку реально к скрипту обращается сервер ОПСОСа.
Как это сделать без сессий? Может, при записи какие-то флаги ставить у переменной?

   
 
 автор: Pit0n   (23.01.2007 в 02:52)   письмо автору
 
   для: loneliness   (22.01.2007 в 14:25)
 

А сколько вообще должно пройти времени между первым и вторым(последним) заходом на страницу? Или их вообще должно быть к примеру два, независимо через какой период зашел пользователь на страницу? Если время не играет роли, то проще создать таблицу в MySQL с полями: 1. id - пользователя и 2. - количество заходов(всего), И при каждом заходе прибавлять в ячейке по единице, если лимит исчерпан, то Forbidden и т.д.

   
 
 автор: loneliness   (27.01.2007 в 18:12)   письмо автору
 
   для: Pit0n   (23.01.2007 в 02:52)
 

Время прошедшее между визитами пользователя не имеет значения. К примеру, он имеет возможность три раза войти в раздел без ограничений, после- нет. С базами данных покамест совсем не дружу... Предпочтительнее на файлах. Тем более, что пользователей немного.

   
Rambler's Top100
вверх

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