REALball (02.11.2011/12:39)
мы то откуда знаем что и как там у тебя?! Можно собсна просто поле в юзерах сделать и там будет написано 1 или 0 , дальше сам включай мозг...
Можно и поле. Только я совсем начинающий в пхп... Не знаю как это сделать
это не сложно))
coздаешь таблицу, например clicks . C полями id и click с типом INT (11)
создаешь файл redirect.php, со следующим кодом
//инклудишь системные файлы
$to_link = '';//адрес рекл ссылки
if($id)
{
mysql_query("ALTER TABLE `clicks` ADD `id` = '$id' AND `click` = '1'");
header('location: ' . $to_link);
exit;
}
else
{
echo 'Только для авторизированных пользователей!!';
}
//$id - переменная с ид пользователя
Создаешь файл tbl_trunc.php
с содержанием
mysql_query("TRUNCATE TABLE `clicks`");
mysql_query("OPTIMIZE TABLE `clicks`");
и ставишь его на крон запуск в 00:00
NikolaiVoid, Чуть позже выложу.
ах, да забыл гг
ссылку выводи так
if($id)
{
$res = mysql_result(mysql_query("SELECT `click` FROM `clicks` WHERE `id` = '$id'"), 0);
if($res == '0' || !$res)
{
echo '<a href="redirect.php">Нажми на меня гг</a>';
}
}
~XeOn~, Пасиб огроммное, сейчас попытаюсь установить
~XeOn~, По твоему примеру я так понял там всего для одного пользователя, я думаю в клик еще и время записывать, и крон не нужен
Koenig, почему это для одного?? $id - переменная с ид пользователя, как в джоне $user_id)))
NikolaiVoid,
<?php
$tbl = 'koe_clicks';
$tbl2 = 'koe_urls';
$pg = $_SERVER['PHP_SELF'];
$arr_clicks = array();
$time = 3600*24; // сутки //
#$time = 60; // тест
$reg = true; // проверка авторизации //
$user_id = 1; // номер юзера //
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'test';
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($mysqli->connect_errno) {
die('Connect Error: ' . $mysqli->connect_errno);
} else {
$mysqli->set_charset('utf8');
}
if (!$reg) {
echo 'только для авторизированных';
exit;
} else {
$sql = "SELECT * FROM " . $tbl. " WHERE `user`='" . $user_id . "' AND `time`>='" . (time()-$time) . "'";
$res = $mysqli->query($sql);
if ($res->num_rows) {
while ($row = $res->fetch_assoc()) {
$arr_clicks[] = $row['url'];
}
}
$mode = isset($_GET['act']) ? $_GET['act'] : 'default';
switch ($mode) {
default:
$sql = "SELECT * FROM " . $tbl2 . "";
$res = $mysqli->query($sql);
if ($res->num_rows) {
while ($row = $res->fetch_assoc()) {
echo !in_array($row['url'], $arr_clicks) ? '<div><a href="' . $pg . '?act=redirect&url=' . $row['url'] . '">' . $row['url_name'] . '</a> <a href="' . $pg . '?act=deleteurl&id=' . $row['id'] . '">[ x ]</a></div>' : '';
}
echo '<a href="' . $pg . '?act=addurl">добавить ссылку</a>';
} else {
echo 'ссылок нет<br/>';
echo '<a href="' . $pg . '?act=addurl">добавить ссылку</a>';
}
break;
case 'redirect':
if (in_array($_GET['url'], $arr_clicks)) {
echo 'переход разрешен один раз за ' . $time . ' секунд';
exit;
} else {
$sql = "INSERT INTO " . $tbl . " SET `user`='" . $user_id . "' , `time`=" . time() . ", `url`='" . $_GET['url'] . "'";
if ($mysqli->query($sql)) {
header('Location: ' . $_GET['url'] . '');
} else {
echo 'ошибка записи в таблицу кликов';
exit;
}
}
break;
case 'addurl':
if (isset($_POST['submit'])) {
if (empty($_POST['url']) || empty($_POST['name_url'])) {
echo 'поля не должны быть пустыми';
echo '<a href="' . $pg . '?act=addurl">Назад</a>';
exit;
} else {
$sql = "INSERT INTO " . $tbl2 . " SET `url`='" . $mysqli->real_escape_string($_POST['url']) . "', `url_name`='" . $mysqli->real_escape_string($_POST['name_url']) . "'";
if ($mysqli->query($sql)) {
echo 'ссылка успешно добавлена<br/>';
echo '<a href="' . $pg . '">Назад</a>';
} else {
echo 'произошла ошибка<br/>';
echo '<a href="' . $pg . '">Назад</a>';
exit;
}
}
} else {
echo '<form action="' . $pg . '?act=addurl" method="post">Ссылка<br/><input type="text" value="http://" name="url" /><br/>Имя ссылки<br/><input type="text" value="" name="name_url" /><br/><input type="submit" value="Добавить" name="submit" /></form>';
}
break;
case 'deleteurl':
if (!isset($_GET['id'])) {
echo 'произошла ошибка';
echo '<a href="' . $pg . '">Назад</a>';
} else {
$id = intval($_GET['id']);
$sql = "DELETE FROM " . $tbl2 . " WHERE `id`='" . $id . "'";
if ($mysqli->query($sql)) {
echo 'запись удалена';
echo '<a href="' . $pg . '">Назад</a>';
} else {
echo 'произошла ошибка';
echo '<a href="' . $pg . '">Назад</a>';
}
}
break;
case 'install':
if (file_exists('install.stop')) {
echo 'для переинстала удалите файл install.stop';
} else {
$sql = "CREATE TABLE IF NOT EXISTS `" . $tbl . "` (
`user` int(11) NOT NULL,
`time` int(32) NOT NULL,
`url` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
$sql2 = "CREATE TABLE IF NOT EXISTS `" . $tbl2 . "` (
`id` int(11) NOT NULL auto_increment,
`url` text NOT NULL,
`url_name` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
if ($mysqli->query($sql)) {
echo 'таблица ' . $tbl . ' залита<br/>';
echo '<a href="' . $pg . '">Назад</a>';
} else {
echo 'ошибка<br/>';
echo '<a href="' . $pg . '">Назад</a>';
}
if ($mysqli->query($sql2)) {
echo 'таблица ' . $tbl2 . ' залита<br/>';
} else {
echo 'ошибка<br/>';
echo '<a href="' . $pg . '">Назад</a>';
}
$file = new SplFileObject('install.stop', 'w');
$file->fwrite(date('d-m-Y H:i:s', time() . PHP_EOL));
}
break;
}
}
unset($arr_clicks);
?>
переходим по ссылке script_name?act=install
это инсталл с защитой от переинстала
далее все понятно я думаю, вроде проверил, все работает
Koenig, выдает ошубку 1045.... ='[