2017-12-05 2 views
0

Ich wurde beauftragt, ein Benutzer-Tracking-System in PHP zu erstellen und die Informationen in einer MySQL-Datenbank zu speichern. Die Einschränkungen, die ich habe, ist, dass der Code, den ich erstelle ich in einer PHP-Datei sein muss und in der Form "require ('filename.php');" auf allen Seiten, die verfolgt werden. Das Problem, das ich habe, ist mit den Sitzungen und macht die Benutzer einzigartig. Das Ziel besteht darin, dass, wenn ein Benutzer eine der Seiten verlässt, er dem Benutzer eine Nummer gibt, die in der Datenbank zum Verknüpfen zwischen Tabellen verwendet wird. Ich suche nach Anleitungen, um sicherzustellen, dass die Sitzung beim Zurückrufen der Tracking-Seite übernommen wird (wenn der Benutzer zur nächsten Seite geht) und um die Benutzerzahl für verschiedene Personen nur dann zu erhöhen, wenn die Seite aktualisiert wird.PHP und mySQL Unique User Tracking

Hier ist der Code, die ich bisher haben:

<?php 
$mins = 30; 
ini_set("session.gc_maxlifetime", $mins * 60); 
session_start(); 

//Change for database 
$serv = "xxx"; 
$username = "xxx"; 
$pass = "xxx"; 
$db = "xxx"; 

$conn = mysqli_connect($serv,$username,$pass,$db); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

//getuserID 
//Check what the user count is at and set users id number 

$checkSQL = "SELECT MAX(UserID) from User"; 
$result = mysqli_query($conn,$checkSQL); 
while($row = mysqli_fetch_array($result, MYSQLI_NUM)) 
{ 
$highest = $row[0]; 
//echo $highest; 
} 
$UserID = $highest + 1; 
$_SESSION["UserID"] = $UserID; 
echo "The session user id: "; 
echo $_SESSION["UserID"]; 

//to make a list of all the pages a user has gone to 
//Page tracker for user 
$pagetrack = array(); 
array_push($pagetrack, $page); 
$_SESSION["pageT"] = $pagetrack; 
$arrlength = count($_SESSION["pageT"]); 
for ($i = 0; $i<$arrlength; $i++){ 
echo $_SESSION["pageT"][$i]; 
} 

//There are other functions that don't require sessions 
?> 

Jede mögliche Anleitung geschätzt werden viel würde. Wenn irgendjemand irgendwelche Online-Tutorials kennt, die ähnlich zu diesem Thema sind, würde das ebenso geschätzt werden.

Prost.

+0

Haben Sie Google Analytics berücksichtigt verwenden? Es macht all das Zeug für dich. – kloddant

+0

@gluodant Das Projekt erfordert alles, was Google Analytics bietet. Es gibt nur ein paar Details zu verfolgen, Browser, Gerät, welche Seiten die Benutzer besuchen. Also ist nur eine einfache Lösung notwendig, aber dieser Teil hat mich jetzt ratlos – sammcd75

+0

... wenn Sie einen selbst brauen müssen ... Sie müssen es planen, schreiben Sie auf, was Sie unbedingt brauchen, und starten Sie einfach Plug-n-tuckern in den Bits. Diese Frage ist ein bisschen breit, da es so viel zu decken gibt und sehr viele Möglichkeiten, um darüber zu sprechen. Ich denke, ein erster Schritt ist ... was funktioniert nicht richtig, wie du es getan hast? – IncredibleHat

Antwort

0

Ich denke, ich habe die Antwort gelöst. durch dieses mit

<?php 
$mins = 30; 
ini_set("session.gc_maxlifetime", $mins * 60); 
if (session_status() == PHP_SESSION_NONE) { 
session_start(); 
} 

//Change for database 
$serv = "xxx"; 
$username = "xxx"; 
$pass = "xxx"; 
$db = "xxx"; 

$conn = mysqli_connect($serv,$username,$pass,$db); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
//getuserID 
//Check what the user count is at and set users id number 
if(!isset($_SESSION["UserID"])){ 
$checkSQL = "SELECT MAX(UserID) from User"; 
$result = mysqli_query($conn,$checkSQL); 
while($row = mysqli_fetch_array($result, MYSQLI_NUM)) 
{ 
$highest = $row[0]; 
//echo $highest; 
} 
$UserID = $highest + 1; 
$_SESSION["UserID"] = $UserID; 
echo "The session user id: "; 
echo $_SESSION["UserID"]; 
} 
else{ 
$UserID = $_SESSION["UserID"]; 
echo $UserID; 
} 

Es ist ein bisschen chaotisch, aber ich glaube, es funktioniert, ich brauche als nächstes auf dem Kollision Problem zu umgehen, dass @AlexHowansky in den Kommentaren