| | |
C++ CGI Unique & Raw Hit Counter
Please support our C++ advertiser: Intel Parallel Studio Home
This code snippet actually contains a few nifty things. There are two functions, hasVisited() and main(). hasVisited() makes use of a very handy function for CGI programmers: getenv. You can see I use it to retrieve REMOTE_ADDR which is the person's IP address. In main() it gets the count from a file and increments if needed and outputs back to the same file. It then outputs a simple HTML page that the user sees.
#include <iostream> #include <fstream> #include <string> using namespace std; bool hasVisited() // Figure out wether unique hit or not // Returns true if ip address has visited { bool visited = false; string userIP = getenv("REMOTE_ADDR"); string nonUnique; ifstream input("iplist.cnt"); while (input) { // See if IP is in list getline(input, nonUnique); if (userIP == nonUnique) { visited = true; break; } } input.close(); if (visited == false) { // Add IP to list ofstream output("iplist.cnt", ofstream::app); output << userIP << endl; output.close(); } return (visited); } int main() { int uniqueHits; // Default in case no counter file exists int rawHits; ifstream in("counter.cnt"); if (!in) { uniqueHits = 0; rawHits = 0; } else { in >> uniqueHits; // 1st number = unique hits in >> rawHits; // 2nd number = raw hits in.close(); } bool visited = hasVisited(); rawHits++; if (!visited) uniqueHits++; ofstream out; out.open("counter.cnt"); out << uniqueHits << ' ' << rawHits; out.close(); cout << "Content-type: text/html" << endl << endl << "<HTML><BODY>" << endl << "This is a hit counter written in C++. <hr>" << endl << "Your IP address: " << getenv("REMOTE_ADDR") << "."; if (visited) cout << "(Not unique)"; else cout << "(Unique)"; cout << "<hr>" << endl << "Unique hits: " << uniqueHits << "<br>Raw hits: " << rawHits << endl; cout << "</BODY></HTML>" << endl; }
0
•
•
•
•
Has been taken care of, snippet modified to incorporate the change.
Thanks for notifying this, your help in the code snippet section is greatly appreciated.
Hope you find out more such bugs
Thanks for notifying this, your help in the code snippet section is greatly appreciated.
Hope you find out more such bugs

Similar Threads
- PHP hit counter (PHP)
- stat hit counter HELP (PHP)
- hit counter (Site Layout and Usability)
- Hit counter (JavaScript / DHTML / AJAX)
- Tut : Make Your-Self a IP Showing Siggy & hit counter (PHP)
| Thread Tools | Search this Thread |
api array based beginner binary c++ c/c++ calculator char char* class classes code compile compiler console conversion count delete deploy desktop directshow dll download dynamic dynamiccharacterarray email encryption error file forms fstream function functions game givemetehcodez google graph gui homeworkhelp homeworkhelper iamthwee ifstream input int integer java lib linkedlist linker linux list loop looping loops map math matrix memory news numbertoword output parameter pointer problem program programming project proxy python random read recursion recursive reference return rpg sorting string strings struct temperature template templates test text text-file tree unix url variable vector video visual visualstudio win32 windows winsock wordfrequency wxwidgets




