Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c04f9ae

Browse files
authored
Add files via upload
1 parent cd8a9bb commit c04f9ae

File tree

6 files changed

+159
-0
lines changed

6 files changed

+159
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from flask import Flask
2+
from datetime import timedelta
3+
4+
app = Flask(__name__)
5+
app.secret_key = "secret key"
6+
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(minutes=30)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from flask import request, session
2+
3+
DNT_TRACK = True #False
4+
IGNORE_IPS = set(['127.0.0.1'])
5+
6+
def is_tracking_allowed():
7+
#print(request.headers)
8+
if 'DNT' in request.headers and request.headers['DNT'] == 1:
9+
return False
10+
if request.remote_addr in IGNORE_IPS:
11+
return False
12+
return True
13+
14+
def track_session():
15+
if 'track_session' in session and session['track_session'] == True:
16+
return True
17+
else:
18+
return False
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from app import app
2+
from flaskext.mysql import MySQL
3+
4+
mysql = MySQL()
5+
6+
# MySQL configurations
7+
app.config['MYSQL_DATABASE_USER'] = 'root'
8+
app.config['MYSQL_DATABASE_PASSWORD'] = 'root'
9+
app.config['MYSQL_DATABASE_DB'] = 'roytuts'
10+
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
11+
mysql.init_app(app)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import visitor
2+
from app import app
3+
from flask import jsonify
4+
5+
@app.before_request
6+
def do_something_when_a_request_comes_in():
7+
visitor.track_visitor()
8+
9+
@app.route('/')
10+
def home():
11+
return jsonify({'msg' : 'hello'})
12+
13+
14+
if __name__ == "__main__":
15+
app.run()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
You can go through the tutorial https://www.roytuts.com/python-flask-online-visitor-tracking-system/
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import config
2+
import pymysql
3+
from db import mysql
4+
from flask import request, session
5+
6+
def track_visitor():
7+
if config.is_tracking_allowed():
8+
if config.track_session():
9+
log_id = session['log_id'] if 'log_id' in session else 0
10+
no_of_visits = session['no_of_visits']
11+
current_page = request.url
12+
previous_page = session['current_page'] if 'current_page' in session else ''
13+
14+
if previous_page != current_page:
15+
ip_address = request.remote_addr
16+
requested_url = request.url
17+
referer_page = request.referrer
18+
page_name = request.path
19+
query_string = request.query_string
20+
user_agent = request.user_agent.string
21+
22+
sql = "INSERT INTO visits_log(no_of_visits, ip_address, requested_url, referer_page, page_name, query_string, user_agent) VALUES(%s, %s, %s, %s, %s, %s, %s)"
23+
24+
data = (no_of_visits, ip_address, requested_url, referer_page, page_name, query_string, user_agent,)
25+
26+
conn = None
27+
cursor = None
28+
29+
try:
30+
conn = mysql.connect()
31+
cursor = conn.cursor()
32+
33+
cursor.execute(sql, data)
34+
35+
conn.commit()
36+
37+
session.modified = True
38+
session['current_page'] = requested_url
39+
except Exception as e:
40+
print(e)
41+
finally:
42+
cursor.close()
43+
conn.close()
44+
else:
45+
ip_address = request.remote_addr
46+
requested_url = request.url
47+
referer_page = request.referrer
48+
page_name = request.path
49+
query_string = request.query_string
50+
user_agent = request.user_agent.string
51+
52+
sql = "INSERT INTO visits_log(ip_address, requested_url, referer_page, page_name, query_string, user_agent) VALUES(%s, %s, %s, %s, %s, %s)"
53+
54+
data = (ip_address, requested_url, referer_page, page_name, query_string, user_agent,)
55+
56+
conn = None
57+
cursor = None
58+
59+
session.modified = True
60+
61+
try:
62+
conn = mysql.connect()
63+
cursor = conn.cursor()
64+
65+
cursor.execute(sql, data)
66+
67+
conn.commit()
68+
69+
log_id = cursor.lastrowid
70+
71+
print('log_id', log_id)
72+
73+
if log_id > 0:
74+
session['current_page'] = requested_url
75+
session['track_session'] = True
76+
77+
sql = 'select max(no_of_visits) as next from visits_log limit 1'
78+
79+
conn = mysql.connect()
80+
cursor = conn.cursor(pymysql.cursors.DictCursor)
81+
82+
cursor.execute(sql)
83+
row = cursor.fetchone()
84+
85+
count = 0
86+
if row['next']:
87+
count += 1
88+
else:
89+
count = 1
90+
91+
sql = 'UPDATE visits_log set no_of_visits = %s WHERE log_id = %s'
92+
data = (count, log_id,)
93+
94+
cursor.execute(sql, data)
95+
96+
conn.commit()
97+
98+
session['no_of_visits'] = count
99+
session['current_page'] = requested_url
100+
101+
else:
102+
session['track_session'] = False
103+
except Exception as e:
104+
print(e)
105+
session['track_session'] = False
106+
finally:
107+
cursor.close()
108+
conn.close()

0 commit comments

Comments
 (0)