Просмотр поста

.
ДоХтор

FlySelf, вот что у меня получилось. Кстати, теперь число кликов обнуляется независимо (а при старом варианте клики обновлялись у всех ссылок, без учёта того, по какой из них был переход первым)

* (+/-)
function showLink($href, $lnkname, $days, $clicks, $dir, $id) {
    $id = (isset($_GET['id']) ? trim(strip_tags($_GET['id'])) : $id);
    $go = (isset($_GET['go']) ? trim(strip_tags($_GET['go'])) : '');
    
    is_dir($dir) ?: mkdir($dir);
    $fname = $dir .'/'. $id .'.txt';

    $time = time();
    $mTime = $time + 45; # <---Строка для теста
//  $mTime = $time + 3600 * 24 * $days;
    
    if (file_exists($fname)) {
        $data = unserialize(file_get_contents($fname));
    } else {
        $data = [
            'tm' => $mTime,
            'cnt' => 0
        ];
    }

    if (!empty($go)) {
        $data['cnt']++;
        file_put_contents($fname, serialize($data));
        header('Location: '. $go);
        exit;
    }

    if ($data['tm'] < $time) { // Перезапись
        $data['tm'] = $mTime;
        $data['cnt'] = 0;
        file_put_contents($fname, serialize($data));
    }
    
    return ($data['tm'] >= $time && $data['cnt'] < $clicks ? '<a href="?id='. $id .
        '&go='. $href .'">'. $lnkname .'</a> ('. ($clicks - $data['cnt']) .')<br/>' : '');
}
Но я так понимаю, что это ещё не всё? Надо добиться только одного вызова file_put_contents($fname, serialize($data)); ?