2010-08-19 2 views
2

Привет, я создаю базовый счетчик, который добавляет +1 каждый раз, когда кто-то обращается к веб-сайту. Проблема заключается в том, что каждый пользователь добавляет 1 каждый раз, когда кто-то переходит на другую страницу на сайте, а не когда человек впервые появляется на сайте, делая данные очень неточными (например, один пользователь, который обращается к сайту, может перейти на 8 разных страниц, поэтому добавление 8 к счетчику, входящее в 1). Есть ли способ обнаружить, когда пользователь обращается к сайту при первой начальной загрузке?Проверьте, если первый раз кто-то отправляется на сайт asp.net?

Я использую asp.net 3.5 в C#.

+0

Не могли бы вы прояснить ситуацию? Вы хотите рассчитывать каждый раз, когда новый пользователь приходит на ваш сайт? Что, если они вернутся на следующий день, когда их текущая сессия закончилась? Вы считаете их во второй раз? –

+0

Да, в этом случае он должен определить, сколько раз сайт посещается, даже если он является одним и тем же человеком на новом сеансе. Событие Session_Start выглядит довольно неплохо. – loyalpenguin

+0

Session_Start работает хорошо, за исключением того, что он только увеличивает счетчик, когда кто-то . Можно ли подсчитывать пользователей, не прошедших проверку подлинности? – loyalpenguin

ответ

3

Попробуйте использовать событие session_start в Global.asax.cs

protected void Session_Start(object sender, EventArgs e) 
    { 
      //Increment your counter here 

    } 

Это добавит к счетчику для каждого пользователя, первый раз, когда они попали на страницу вашего сайта. Затем, как только сеанс браузера завершится (по умолчанию 20 минут бездействия на вашем сайте), в следующий раз при попадании на ваш сайт произойдет еще один прирост. Время ожидания настраивается.

Если вы хотите сделать это в первый раз, они НИКОГДА не попадут на ваш сайт, то подход к cookie, упомянутый некоторыми другими плакатами, сделает это. Но помните, что у вас нет способа узнать, является ли он одним и тем же пользователем, одним и тем же компьютером - думаю, интернет-кафе.

Редактировать: Ваши комментарии о анонимных пользователях: Какие у вас настройки авторизации? например

<!-- Allow access to anonymous (unauthenticated) users. --> 
<authorization> 
    //probably shouldn't do this in particular, but you might want to look at your settings 
    <allow users="*" /> 
</authorization> 
+0

Если сеанс отключен, это не сработает. –

+1

Правда. Не отключать сеанс. Он включен по умолчанию, поэтому это было бы хорошей причиной, чтобы не отключать его. –

+1

@Chuck, сеанс - это серверная концепция, что вы подразумеваете под «если сеанс отключен»? – rochal

2

Установить печенье. Проверьте файл cookie, если он присутствует, затем не увеличивайте счет.

Если пользователю необходимо войти в систему, вы можете подсчитать, сколько раз они заходят в систему.

+3

Это не будет работать, если файлы cookie отключены :) –

+0

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

+0

@James - правда, но кто сейчас отключает свои куки? Большинство современных сайтов зависят от файлов cookie. –

0

Храните IP-адрес всех посетителей, но сохраняйте уникальные IP-адреса.

+1

Не будет точным. Маршрутизатор может маскировать n количество людей за IP-адресом. –

+0

Верно, но здесь нет ничего точного, если вы не получите людей, чтобы они подписались с их именами ... или еще лучше паспортные номера, поскольку имена не уникальны. Это все еще общее решение. –

1

Вы не хотите регистрироваться по IP-адресу самостоятельно, потому что любой, кто находится за брандмауэром, будет отображаться как один и тот же IP-адрес.

Я думаю, что печенье - это путь сюда. Когда пользователь сначала отправляется на ваш сайт, установите cookie. Для любого запроса после этого только увеличивайте счетчик, если файл cookie отсутствует. Использование Session_Start даст вам подобное поведение, но выключение cookie сеанса может привести к тому, что вы будете отслеживать одного и того же человека несколько раз.

Если бы вы могли расширить свою цель, то это поможет определить правильное решение.

+0

Если второй пользователь приходит на сайт на том же компьютере, скажем, в интернет-кафе, они не будут учитываться, потому что cookie все равно будет там. В вопросе говорится, что они хотят увеличивать счетчик «+1 КАЖДЫЙ РАЗ какой-то доступ к сайту» («Мои колпачки»). В этом случае сессия - это именно то, что требуется –

+0

@ Daniel - не если они используют cookie сеанса. –

+0

@Chuck, для этого нужно работать, Сессии не должны быть отключены, и в этом случае нет необходимости в файле cookie. Все это можно сделать в событии Session_Start. На сайте не нужно существование cookie, чтобы сказать, что пользователь не просматривает сайт. Событие Session_Start сообщает им, что без необходимости писать одну строку кода доступа к файлу cookie. –

0

Использование Google Analytics. Очень полное отслеживание ваших пользователей, бесплатно (в некоторой степени).

Смежные вопросы