• Страница 1 из 1
  • 1
Форум Studio AD » Сайтостроение » Общий форум по Php » Делаем "просмотры" новостей (Вопрос а не урок)
Делаем "просмотры" новостей
Aleko
Дата: Воскресенье, 18.07.2010, 17:04 | Сообщение # 1
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Вопрос собственно к WRC. Ты ведь написал своё двигло под блог, скажи, как ты реализовал отлов повторных просмотров для постов? Я думаю сделать отдельную базу и вести учет айпишников. Хватит ли этого?

Бесплатные обои.
  
WRC
Дата: Понедельник, 19.07.2010, 11:20 | Сообщение # 2
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Quote (Aleko)
как ты реализовал отлов повторных просмотров для постов?

Собственно 2 решения я написал в своём блоге. Больше я ничего не придумал... у себя я в начале поставил отлов с помощью куков, но совершенно случайно обнаружил что в осле и опере это почему то не канает (я лазаю в мозилке)... и поэтому недавно поменял на сессии - хоть и не совершенно точно, но кроссбраузерно.
Quote (Aleko)
Я думаю сделать отдельную базу и вести учет айпишников.

Базу всего лишь для этого? бред... я даже для меню пожадничал базы...
И потом... просмотры это то, чего может быть очень много. Больше всего остального...
Лучше узнать как ограничить время жизни определённой сессии, а не всех как делает функция session_set_cookie_params() (перечитал весь нет, ничего стоищего не нашёл)
Ну а если такого не возможно то валяй... делай базу айпишников. Этого вполне хватит, но задолбаешься делать...


Устраняем баг при просмотре материала
  
Aleko
Дата: Понедельник, 19.07.2010, 20:58 | Сообщение # 3
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Да нет, базу сделать просто. У меня сейчас около 20 сложно связанных таблиц и нормально, всё летает - главное не тупить с проектированием базы а делать по уму. Другое дело что лишние запросы это плохо. Сессиями я делать не хочу так как накрутить будет легко - сессия держится пока не закроется окно браузера, затем только кука висит, которую можно легко стереть. По этому и нужна база. Ты кстати используешь сессионные куки или свои вешаешь, например при входе на сайт?

Бесплатные обои.
  
Aleko
Дата: Понедельник, 19.07.2010, 21:52 | Сообщение # 4
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
WRC, я сделал так:

Code
<?
function movies_stats_add($id){
  if(!preg_match("/^\d+$/",$id)){return false;}
  if(isset($_SESSION['movies_stats_'.$id])){return false;}
  $_SESSION['movies_stats_'.$id]='';
  require_once("sql.php");
  mysql_query("UPDATE movies SET hosts=hosts+1 WHERE id=".$id);
  return true;
  }

echo movies_stats_add(1);
?>

Логика такова что просмотром считается открытие страницы материала в течении одной сессии. То есть если вы просмотрели новость, потом закрыли браузер, снова его открыли и ещё раз просмотрели новость то к новости прибавится соответственно 2 запроса, я считаю такие запросы "легальными". В итоге не нужно пасти ip адрес и ронять базу раз в сутки - полный дзен.

Дабы зря не грузить сервак сначала я проверяю $id материала, затем проверяю, не просматривал ли пользователь эту новость в течение текущей сессии и только потом подрубаюсь к базе, вешаю сессию и увеличиваю значение хостов на 1.


Бесплатные обои.
  
WRC
Дата: Вторник, 20.07.2010, 11:45 | Сообщение # 5
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Quote (Aleko)
главное не тупить с проектированием базы а делать по уму.

Вот у меня была такая ошибка. Хотел как бы всё по быстрее сделать и сказать алилуя... А теперь каждый раз переписываю скрипт.
Quote (Aleko)
сессия держится пока не закроется окно браузера

Цитирую с сайта где я "учусь":
Quote
session_set_cookie_params(int lifetime [, string path [, string domain]]) - с помощью этой функции можно установить, как долго будет "жить" сессия, задав unix_timestamp определяющий время "смерти" сессии. По умолчанию, сессия "живёт" до тех пор, пока клиент не закроет окно браузера.

То есть если верить этому определению можно сменить метод сбрасывания сессии: закрытие браузера на время.
Quote (Aleko)
Ты кстати используешь сессионные куки или свои вешаешь, например при входе на сайт?

Я не понимаю о чём ты, но я использую:
Code
<?php
session_start();
$_SESSION['name']='значение';
?>

И расскажи ка мне что такое сессионные куки и свои вешалки, а то я знаю только сессии и куки :D
Quote (Aleko)
я сделал так:

Ну дак ведь моё решение на сессиях имеет такой же смысл.
Code
<?php
  session_start();
  if(!$_SESSION['movies_stats_'.$id]){
   require_once("sql.php");
   mysql_query("UPDATE movies SET hosts=hosts+1 WHERE id=".$id);
   $_SESSION['movies_stats_'.$id] = 1;
  }
?>

Но проблема всё ещё остаётся. Этим методом так же можно набить просмотры, правда закрытием и открытием браузера :D


Устраняем баг при просмотре материала
  
Aleko
Дата: Вторник, 20.07.2010, 15:36 | Сообщение # 6
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Сессии это те же самые куки. Прочитай про механизм сессий. Их жизнь обычно гарантируется до закрытия окна + несколько часов (в зависимости от настройки php.ini), именно поэтому я так и написал. Во время авторизации я вешаю свою куку дабы после перезагрузки компа пользователь не вводил логин и пароль заного. Могу выложить листинг моей авторзации.

Бесплатные обои.
  
WRC
Дата: Вторник, 20.07.2010, 16:34 | Сообщение # 7
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Quote (Aleko)
Сессии это те же самые куки. Прочитай про механизм сессий.

Это я знаю. Вообще сессии произошли от куков.
Quote (Aleko)
Их жизнь обычно гарантируется до закрытия окна + несколько часов (в зависимости от настройки php.ini), именно поэтому я так и написал.

То есть ты намекаешь что сессия обрабатываются в браузере? А для чего тогда path? Вполне логично было бы сохранять туда сессии. Ну лично я так думаю, без всяких умных текстов :D
Quote (Aleko)
Во время авторизации я вешаю свою куку дабы после перезагрузки компа пользователь не вводил логин и пароль заного. Могу выложить листинг моей авторзации.

Нет. Не нужно. Я уже подозреваю какая у тебя там форма. Я что то подобное задумал для добавления комментов.
А вот интересно, как на ucoz сделаны просмотры. Есть идеи? ;)
Всё таки на ucoz можно набивать просмотры, но очень очень постепенно. Допустим эту тему, я, в дальнейшем, раз десять уже посмотрел. Сейчас посмотрел и просмотр всё равно увеличился. Значит используется не база данных, а что то другое. Хотя не факт что их система работает на php.


Устраняем баг при просмотре материала
  
Aleko
Дата: Вторник, 20.07.2010, 21:12 | Сообщение # 8
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (WRC)
А вот интересно, как на ucoz сделаны просмотры

Очень просто. За хост считается уникальный ip. При просмотре новости с уникального ip он пишется в sql базу вместе с id материала. После чего материалу плюсуется хост. Раз в сутки или около того сервер дропает базу ip адресов и хосты зачисляются по новой. Я практически уверен что всё именно так, отличие может быть в том что отлавливается не только ip но ещё скажем разрешение экрана - так обычно делают. почитай по запросам "подсчет хостов".


Бесплатные обои.
  
WRC
Дата: Среда, 21.07.2010, 04:30 | Сообщение # 9
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
А я так не думаю. Я проверил во всех браузерах, и во всех на одну единицу хост повысился. Мож всё таки с браузером мутят? Ну ip уж точно отпадает. Ну если только они в базу ещё тип браузера забивают, тогда уж пусь, но зачем?

Устраняем баг при просмотре материала
  
Aleko
Дата: Среда, 21.07.2010, 08:10 | Сообщение # 10
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
WRC, затем что с одного ip может сидеть человек 300 одновременно.

Бесплатные обои.
  
WRC
Дата: Четверг, 22.07.2010, 02:50 | Сообщение # 11
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Лады... от дискуссий к делу. Я всё таки поменял своё отношение к базам, после того как придумал, как их можно легко удалять. Но всё же количество запросов резко увеличилось:
Code
<?php
//дана таблица "views" с полями "ip, post_id, delite_time"
$id = '[id элемента]';

//избавляемся от просроченных эелементов
mysql_query('DELETE FROM views WHERE delite_time<'.time());

//добавляем хост и элемент в views если в нём нет соответствующего элемента
$views_result = mysql_query('SELECT * FROM views WHERE ip="'.$_SERVER['REMOTE_ADDR'].'" AND post_id='.$id);
if(!$views_result){//не уверен что такое условие выдаст то что нужно но пусь пока так
  mysql_query('UPDATE blog SET reads=reads+1 WHERE id='.$id);
  mysql_query('INSERT INTO views (ip, post_id, delite_time) VALUES ("'.$_SERVER['REMOTE_ADDR'].'", '.$id.', '.(time()+86400).')'); //...+24 часа
}
?>

Теперь остаётся думать как уменьшить количество запросов.


Устраняем баг при просмотре материала
  
Aleko
Дата: Четверг, 22.07.2010, 03:07 | Сообщение # 12
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
WRC, в mysql есть механизм событий - можно повесить выполнение определенного запроса раз в 24 часа к примеру. )) читай гугл - я только так и живу.

Бесплатные обои.
  
Aleko
Дата: Четверг, 22.07.2010, 03:11 | Сообщение # 13
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
$views_result в твоем случае кстати всегда будет true. False будет только в том случае если с базой данных "физически" не удалось связаться. Нужно проверять так:
mysql_rows_affected($views_result)!=0


Бесплатные обои.
  
WRC
Дата: Четверг, 22.07.2010, 03:29 | Сообщение # 14
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Quote (Aleko)
mysql_rows_affected($views_result)!=0

за это спс... забил в шпоры)
Quote (Aleko)
в mysql есть механизм событий - можно повесить выполнение определенного запроса раз в 24 часа к примеру. )) читай гугл - я только так и живу.

а с этим, пока разбираюсь)


Устраняем баг при просмотре материала
  
Slimmi
Дата: Четверг, 22.07.2010, 06:09 | Сообщение # 15
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Ребята, я к вам подключаюсь :) Пишу свой двиг и тоже столкнулся с этой проблеммой <_<

Большие фотостатусы
  
Aleko
Дата: Пятница, 23.07.2010, 01:54 | Сообщение # 16
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Slimmi, обращайся) я пока в этом ушел не так далеко как в js и мне ещё интересно решать рядовые проблемы)

Бесплатные обои.
  
WRC
Дата: Пятница, 23.07.2010, 05:52 | Сообщение # 17
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Slimmi, мы отписались, теперь твой вариант :D
Quote (Aleko)
mssql_rows_affected


Устраняем баг при просмотре материала
  
Slimmi
Дата: Пятница, 23.07.2010, 06:06 | Сообщение # 18
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
WRC, твой вариант работает корректно с сессиями:
Code
<?php
   session_start();
   if(!$_SESSION['readsok']){
     setcookie(
       'reads',
       $_COOKIE['reads']+1,
       time()+900
     );
     $_SESSION['readsok']=1;
   }
   echo $_COOKIE['reads'];
?>

Я его пока юзаю :)


Большие фотостатусы
  
Slimmi
Дата: Пятница, 23.07.2010, 06:20 | Сообщение # 19
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Точнее я этот вариантнемного переделал:

Code
<?php
if (!$_SESSION['pbs'.$post['id']]) {
    mysql_query('UPDATE sd_posts SET post_view_count="'.($post['post_view_count']+1).'"WHERE id="'.$post['id'].'"');
    $_SESSION['pbs'.$post['id']]=1;
}
?>

Проверял локально работает нормально.
Количество просмотров зачисляется таким мпособом: открыл браузер, просмотрел +1 к просмотру. Открыл с др. браузера тоже +1. Закрыл браузер открыл данный пост +1 к просмотрам.


Большие фотостатусы

Сообщение отредактировал Slimmi - Пятница, 23.07.2010, 06:29
  
Slimmi
Дата: Пятница, 23.07.2010, 06:34 | Сообщение # 20
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Все варианты сходятся к одному. Думаю эта проблема решена. Меня волнует другае теперь проблема. Капча.. Я ща делаю капчу на основе kcapcha. У вас я вижу свои капчи. На какой основе они?

Большие фотостатусы
  
WRC
Дата: Пятница, 23.07.2010, 07:05 | Сообщение # 21
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Quote (Slimmi)
Я ща делаю капчу на основе kcapcha.

Эт что O_o капча на основе капчи xD
Quote (Slimmi)
На какой основе они?

Всё просто... работать нужно с сессиями... с начало разберись с самим кодом (смысле тот случайный код что будет на картинке), а потом уже приступай к картинке...
Скоро напишу пост в блоге про капчу: php + js)
Quote (Slimmi)
твой вариант работает корректно с сессиями

Лучше использовать пока это. На данный момент мне кажется что это самый качественный подсчёт хостов.


Устраняем баг при просмотре материала
  
Aleko
Дата: Пятница, 23.07.2010, 11:29 | Сообщение # 22
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (WRC)
mssql_rows_affected

Это для mssql - другая программа) я юзаю mysql, как и ты)

Вот код моей капчи:

Code
<?

// Возвращает изображение с проверочным кодом и создает у текущего пользователя
// сессионную переменную captcha с его копией.
$width = 80; // Ширина изображения
$height = 36; // Высота изображения
$font_size = 11; // Размер шрифта
$let_amount = 5; // Количество символов, которые нужно набрать
$font = "captcha.ttf"; //Путь к шрифту
$letters = array('2','3','4','5','6','7','8','9','A','a','w','v','B','C','D','E','F','G','H','K','L','M','N','P','R','S','T','U','X','Y','Z'); // используемые символы
$colors = array("10","40","70","100","130","160","190"); // используемые цвета
$linesnum = 4; // количество линий на изображении
$dotsnum = 100; // количество точек на изображении

$src = imagecreatetruecolor($width,$height);   
$fon = imagecolorallocate($src,255,255,255);
imagecolortransparent($src, $fon);
imagefill($src,0,0,$fon);
imagestring($src,3,rand(1,$width-35),rand(1,$height-12),'DA.AM',imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],rand(90,100)));
while($linesnum--){imageline($src,rand(0,$width),rand(0,$height),rand(0,25),rand(0,25)+$font_size,imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],rand(80,100)));}
while($dotsnum--){imagesetpixel($src,rand(10,$width-10),rand(10,$height-10),imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],rand(30,90)));}  
for($i=0;$i < $let_amount;$i++){
    $color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],rand(20,40));  
    $letter = $letters[rand(0,sizeof($letters)-1)];
    $size = rand($font_size*2-3,$font_size*2+2);
    $x = ($i+0.6)*$font_size +rand(1,5);
    $y = (($height*2)/3) + rand(2,5);        
    $cod[] = $letter;
    imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter);
    }
$_SESSION['captcha'] = implode("",$cod);
header ("Content-type: image/png");
imagepng($src);

?>

А вот так я её проверяю:

Вешаем сессию с кодоп капчи, посылаем форму с ней же пользователю и ждем ответа. Сверяем код возвратившийся от пользователя и код в сессии, если всё ок - идем дальше.

Code
if(isset($_SESSION['captcha']) && isset($_POST['captcha']) && strtoupper($_SESSION['captcha'])==strtoupper($_POST['captcha'])){...}


Бесплатные обои.
  
Slimmi
Дата: Пятница, 23.07.2010, 11:56 | Сообщение # 23
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Aleko, ты ещё хотел написать код авторизации. Я примерно понимаю как это.. Но все же хочется взглянуть на готовую. Просто у меня будет админка и нужно к ней закрыть доступ :)

Ещё вопрос ты как ЧПУ делал? Все прописывал через .htaccess или передаешь параметры .htaccess с помошью php?


Большие фотостатусы
  
WRC
Дата: Пятница, 23.07.2010, 12:04 | Сообщение # 24
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Quote (Aleko)
mysql_rows_affected

Пишет что тип нет такой функции... потом в гугле mysql_rows_affected ввёл и выдало - возможно вы искали mssql_rows_affected

Slimmi, что то я один не в теме: скажи его php сайт :D


Устраняем баг при просмотре материала

Сообщение отредактировал WRC - Пятница, 23.07.2010, 12:05
  
Slimmi
Дата: Пятница, 23.07.2010, 13:36 | Сообщение # 25
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Aleko, спасибо за капчу :) Юзаю :D
Но я тебе ещё посоветую очищать сесию капчи, после каждого ввода кода безопасности, не важно корректный он или нет.


Большие фотостатусы
  
WRC
Дата: Пятница, 23.07.2010, 13:36 | Сообщение # 26
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Поставил себе отлов хостов методом базы... скорость соединения с сервером в странице материала резка упала :(

Устраняем баг при просмотре материала
  
WRC
Дата: Пятница, 23.07.2010, 13:38 | Сообщение # 27
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Quote (Slimmi)
Но я тебе ещё посоветую очищать сесию капчи, после каждого ввода кода безопасности, не важно корректный он или нет.

Дак значение сессии по идее с каждым обновлением изменяется. Смысл отчищать?


Устраняем баг при просмотре материала
  
Slimmi
Дата: Пятница, 23.07.2010, 14:04 | Сообщение # 28
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Quote (WRC)
Смысл отчищать?

Quote (http://captcha.ru/articles/algorithm/)
Важно очищать сессию после каждой проверки (неважно, успешной или нет). Не стоит полагаться на то, что при обновлении страницы скрипт картинки сгенерит новый текст — бот может просто не запрашивать картинку, а вводить один и тот же ответ, который в самом начале прочитал и сообщил боту сам злоумышленник.

А вообще советую почитать теорию здесь.


Большие фотостатусы
  
Aleko
Дата: Пятница, 23.07.2010, 17:46 | Сообщение # 29
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (Slimmi)
Но я тебе ещё посоветую очищать сесию капчи

Мысль!
Quote (WRC)
Поставил себе отлов хостов методом базы...

Может криво написал что то? давай код страницы.
Quote (WRC)
по идее с каждым обновлением изменяется

Не факт.


Бесплатные обои.
  
WRC
Дата: Суббота, 24.07.2010, 13:36 | Сообщение # 30
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Ну я со словом "резко" немного преувеличил)
Сам посмотри как главная грузится и страница материала...
Вроде страница немного медленнее, или это просто изо того что я так хочу думать. Показалось видать. Сделал так:
Code
mysql_query('DELETE FROM views WHERE delite_time<'.time());
$views_result = mysql_query('SELECT * FROM views WHERE ip="'.$_SERVER['REMOTE_ADDR'].'" AND post_id='.$full['id']);
if(!mysql_result($views_result,0)){
  mysql_query('UPDATE blog SET reads=reads+1 WHERE id="'.$full['id'].'"');
  mysql_query('INSERT INTO views (ip, post_id, delite_time) VALUES ("'.$_SERVER['REMOTE_ADDR'].'", '.$full['id'].', '.(time()+86400).')');
}


Устраняем баг при просмотре материала
  
Aleko
Дата: Воскресенье, 25.07.2010, 20:13 | Сообщение # 31
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
WRC, ну во первых http://www.mysql.ru/docs/man/UNION.html почитай, пригодится, во вторых ты проверяешь старые записи каждый раз а мог бы раз в час хотя бы. В итоге будет 2 запроса вместо четырех:

Code
if(mysql_result(mysql_query("SELECT COUNT(*) FROM views WHERE ip='$_SERVER[REMOTE_ADDR]' AND post_id=$full[id]"),0) == 0){ // получаем количество строк
  mysql_query("begin"); // открываем поток
  mysql_query("UPDATE blog SET reads=reads+1 WHERE id=$full[id]");
  mysql_query("INSERT INTO views (ip, post_id, delite_time) VALUES ('$_SERVER[REMOTE_ADDR]',$full[id],".(time()+86400).")");
  mysql_query("commit"); // закрываем поток
  }


Бесплатные обои.
  
Slimmi
Дата: Среда, 28.07.2010, 09:42 | Сообщение # 32
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Ребята, подскажите, как сделать редирек такого вида: mysite.ru/go?othersite ?

Большие фотостатусы
  
DSC
Дата: Среда, 28.07.2010, 11:28 | Сообщение # 33
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
ты хочешь сделать так как в юБлогах?

aka Latro
  
UnderShot
Дата: Среда, 28.07.2010, 11:56 | Сообщение # 34
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
Slimmi, на страницу mysite.ru/go.html ставишь iframe, скриптом получаешь location.search, вставляешь в src ifram`а, и все.

Очень важная тема!
Filmzona — онлайн фильмы.
  
DSC
Дата: Среда, 28.07.2010, 12:27 | Сообщение # 35
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
UnderShot, чёрт... ^_^ ты меня опередил...)

aka Latro
  
WRC
Дата: Среда, 28.07.2010, 12:33 | Сообщение # 36
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Quote (UnderShot)
на страницу mysite.ru/go.html ставишь iframe, скриптом получаешь location.search, вставляешь в src ifram`а, и все.

O_o чтото почему то мне это в голову не пришло...
Я делал так:
В начале скрипта пишем:
Code
$reg_go = preg_match("#^/go\?(.+)$#i",$_SERVER['REQUEST_URI'],$preg_go);
if($reg_go){
  header('Location: '.$preg_go[1]);
}

И в htaccess прописать:
Code
RewriteEngine on
RewriteRule ^go?(.+)$ / [L]

Но конечно лучше использовать способ UnderShot'a


Устраняем баг при просмотре материала
  
Slimmi
Дата: Среда, 28.07.2010, 12:53 | Сообщение # 37
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
UnderShot, меня интересует php.

Большие фотостатусы
  
Slimmi
Дата: Среда, 28.07.2010, 12:55 | Сообщение # 38
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Quote (DSC)
ты хочешь сделать так как в юБлогах?

Нет.


Большие фотостатусы
  
Aleko
Дата: Четверг, 29.07.2010, 18:05 | Сообщение # 39
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (Slimmi)
Ребята, подскажите, как сделать редирек такого вида: mysite.ru/go?othersite ?

Так реализовано на моем сервере:

Файл go.php :

Code
<?
header("HTTP/1.1 303 See Other");
header("X-Robots-Tag: noindex, nofollow", true);
header ("Location: ".$_SERVER["QUERY_STRING"]);
exit;
?>

запись в .htaccess для сокращения кода:

Code
RewriteRule ^(\w+)$ $1.php [L]

использование :

http://da.am/go?http://studioad.ru


Бесплатные обои.
  
Slimmi
Дата: Пятница, 30.07.2010, 05:58 | Сообщение # 40
говорун
Группа: Модераторы
Пользователь №: 5
Сообщений: 287
Получено оценок: 38
Ещё вопрос. А как сделать разделение по несколько страниц, К примеру в блоге выводится на одной странице 5 запесей.

Большие фотостатусы
  
WRC
Дата: Пятница, 30.07.2010, 12:19 | Сообщение # 41
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Slimmi, это ведь элементарные вещи, которые тебе уже давно должны сразу приходить в голову.
Допустим материалы выводятся следующим циклом:
Code
while($date = аррэй(запрос)){
echo 'тратата';
}

Теперь добавим несколько переменных и условие к содержимому в цикле:
Code
$i = 0;
$str = $_GET['str'];//с какого материала начинать
$numstr = 5;//количество материалов на одной странице
while($date = аррэй(запрос)){
$i++;//порядковый номер материала
if($i>$str && $i<=($str+$numstr)){
echo 'тратата';
}
//вводим в адр. строку index.php?str=5 и материалы будут
//высвечиваться с порядковыми номерами от 6 до 10
}

Думаю понятно объяснил)


Устраняем баг при просмотре материала

Сообщение отредактировал WRC - Пятница, 30.07.2010, 12:20
  
Aleko
Дата: Пятница, 30.07.2010, 13:55 | Сообщение # 42
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
WRC, вообще то это обычно делается не так)) Используется для постраничного вывода оператор LIMIT n,n в mysql

Бесплатные обои.
  
WRC
Дата: Пятница, 30.07.2010, 13:58 | Сообщение # 43
говорун
Группа: Проверенные
Пользователь №: 223
Сообщений: 149
Получено оценок: 11
Aleko, а да... но про лимит я узнал после того как написал блог)

Устраняем баг при просмотре материала
  
Форум Studio AD » Сайтостроение » Общий форум по Php » Делаем "просмотры" новостей (Вопрос а не урок)
  • Страница 1 из 1
  • 1
Поиск:
© Studioad.ru 2006 · 2010. Использование материалов форума на сторонних ресурсах без прямой обратной ссылки строго запрещено. Хостинг от uCoz.