Come aggiungere ai vostri programmi un contatore di utenti (online)
In questa breve e semplice guida spiegherò come aggiungere in maniera molto semplice (Certo ho fatto tutto io ) un contatore di utenza nei vostri programmi .net
PHP create un file chiamato user count in formato php e inserite al suo interno:
è consigliabile cambiare l'user agent di default<?php
function agent($browser) {
$useragent = $_SERVER['HTTP_USER_AGENT'];
return strstr($useragent,$browser);
}
if(agent("UserCounterAgent") != FALSE) {
//$Add = addslashes($_GET["add"]); //Parametro add
$Add = $_POST['add'];
$file = fopen("UserCount.txt","a+"); //a+ lettura e scrittura
$UserCount = fgets($file); //Il numero di utenti è uguale al contenuto del
fclose($file); //Chiude
$file2 = fopen("UserCount.txt","w+"); //w+ lettura e scrittura
if ($Add == 1){ //Se add è = ad 1
$UserCount++; // Incrementa il numero utenti
echo "Aggiunto!";
}elseif ($Add == 0){ //Altrimenti
$UserCount--;//Decrementa il numero utenti
echo "Rimosso!";}
elseif ($Add == 2){
$UserCount = 0;
echo "Resettato!";
}
fwrite($file2, $UserCount); //Scrive il numero utenti del file
fclose($file2); //Chiude
}
else
{echo("Bad UserAgent");}
?>
Caricatelo via ftp in un vostro spazio web assieme ad un altro chiamato UserCount però con estensione txt e come testo scriveteci uno zero ( 0 )
Andate nel vostro programma in vb.net e create una nuova classe, chiamatela come volete cancellate tutto e inseriteci:
Imports System.Net
Imports System.IO
Imports System.Text
Public Class UserCounter
Private _UserCounterUrl As String
Private _UserNumberUrl As String
Private _UserAgent As String
Private _DirectLink As String
Private WithEvents _OwnerForm As Form
Public Event Update()
Public Event Load()
Private Sub AddOnOpen() Handles _OwnerForm.Load
Send(CommandType.Add)
End Sub
Private Sub RemoveOnClose() Handles _OwnerForm.FormClosing
Send(CommandType.Remove)
End Sub
Public Sub New(ByVal UserCounterUrl As String, ByVal UserNumberUrl As String, ByVal UserAgent As String, ByVal OwnerForm As Form)
_UserCounterUrl = UserCounterUrl
_UserNumberUrl = UserNumberUrl
_UserAgent = UserAgent
_OwnerForm = OwnerForm
RaiseEvent Load()
End Sub
Private Sub SendData(ByVal Add As Integer)
Dim request As HttpWebRequest = CType(WebRequest.Create(_UserCounterUrl), HttpWebRequest)
request.UserAgent = _UserAgent
request.Method = "Post"
request.ContentType = "application/x-www-form-urlencoded"
Dim Post As String = ("add=" & Add)
Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
request.ContentLength = byteArray.Length
Dim DataStream As Stream = request.GetRequestStream()
DataStream.Write(byteArray, 0, byteArray.Length)
DataStream.Close()
Dim Response As HttpWebResponse = request.GetResponse()
DataStream = Response.GetResponseStream()
Dim reader As New StreamReader(DataStream)
Dim ServerResponse As String = reader.ReadToEnd()
reader.Close()
DataStream.Close()
Response.Close()
If ServerResponse.ToString.Contains("Aggiunto!") Then
ElseIf ServerResponse.ToString.Contains("Rimosso!") Then
ElseIf ServerResponse.ToString.Contains("Bad UserAgent") Then
MsgBox("User agent errato!")
End If
End Sub
Dim WC As New Net.WebClient
Public Function GetUserNumber()
Return WC.DownloadString(_UserNumberUrl)
RaiseEvent Update()
End Function
Public Sub Send(ByVal C As CommandType)
If C = CommandType.Add Then
SendData(1)
ElseIf C = CommandType.Remove Then
SendData(0)
ElseIf C = CommandType.Reset Then
SendData(2)
End If
End Sub
End Class
Public Enum CommandType
Add
Remove
Reset
End Enum
A questo punto inizializzate un nuovo oggetto (Nuovo UserCounter) nella vostra classe principale (Form1 di default) in questo modo:
Ovviamente modificando le parti in rosso, dove i primi tre parametri sono stringhe, mentre l'ultimo è un form.Dim UserCounter As New UserCounter("Url/UserCount.php", "Url/UserCount.txt", "UserCounterAgent", FormPrincipale (Me))
A questo punto la classe gestirà automaticamente tutto, aggiungendo e rimuovendo gli utenti al momento dell'apertura e della chiusura del programma,ma non se il programma verrà terminato dal task manager, infatti consiglio periodicamente di azzerare il contatore.
Ricavare il numero utenti (Se dovete eseguire operazioni aritmetiche sarebbe buona norma convertirlo in tipo integer o long)
UserCounter.GetUserNumber()
Altri Comandi utili:
Incrementare di uno il numero utenti:
UserCounter.Send(CommandType.Add)
Decrementare di uno il numero utenti:
UserCounter.Send(CommandType.Remove)
Azzerare il numero utenti:
UserCounter.Send(CommandType.Reset)
Gli eventi
Gli eventi che è possibile utilizzare sono due:
Load () che viene attivato alla fine dell'inizializzazione dell'oggetto
Update Che viene attivato al richiamo della funzione GetUserNumber
Non ho intenzione di dare assistenza se non per problemi tecnici, curiosità e simili, nella guida ho dato tutte le informazioni per permettere ad un utente con una minima conoscenza del linguaggio e delle sue basi.
Se non riuscite a seguire la guida studiate almeno le basi del linguaggio e tornate qui prima di intasare il thread (o i miei messaggi privati) con richieste di aiuto.
Ultima modifica: