Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Nelle ultime settimane abbiamo provato la Corsair Vanguard Air 99 Wireless, una tastiera tecnicamente da gaming, ma che in realtà offre un ampio ventaglio di possibilità anche al di fuori delle sessioni di gioco. Flessibilità e funzionalità sono le parole d'ordine di una periferica che si rivolge a chi cerca un prodotto capace di adattarsi a ogni esigenza e ogni piattaforma
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-03-2004, 23:25   #1
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
[PHP] Funzione per autenticazione

Volevo condividere con voi questa funzione per l'autenticazione in PHP...

Innanzi tutto ecco quello che volevo garantire era una protezione dalla forza bruta...

Questo sono le due tabelle necessarie...
Codice:
#
# Table structure for table 'admins'
#

DROP TABLE IF EXISTS admins;
CREATE TABLE admins (
  Username varchar(30) NOT NULL default '',
  Password varchar(255) NOT NULL default '',
  PRIMARY KEY  (Username)
) TYPE=MyISAM;



#
# Table structure for table 'loginlog'
#

DROP TABLE IF EXISTS loginlog;
CREATE TABLE loginlog (
  IP varchar(30) NOT NULL default '',
  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
  last_result tinyint(1) unsigned NOT NULL default '0',
  banned tinyint(1) unsigned NOT NULL default '0',
  total_retrys int(10) unsigned NOT NULL default '1',
  retrys int(10) unsigned NOT NULL default '1',
  PRIMARY KEY  (IP)
) TYPE=MyISAM COMMENT='Tentativi login';
I file di utilità:
Codice PHP:
<?php
function db_open($dbhost$dbuser$dbpass$dbname, &$conn)

    
$conn=mysql_connect($dbhost$dbuser$dbpass)  
        or die(
"Errore nella connessione al database"); 
    
mysql_select_db($dbname$conn
        or die(
"Impossibile selezionare il database $dbname"); 


function 
do_query($query, &$results

    
$results mysql_query($query
        or die( 
"Errore: $query \n" .mysql_error()); 


function 
lock_tables($tables)  //NOMETABELLA [WRITE|READ] separati da virgola 

    
$tables "LOCK TABLES ".$tables.";"
    
do_query($tables$res); 


function 
unlock_tables() 

    
do_query("UNLOCK TABLES;"$res); 
}
?>
I dati di configurazione della funzione di login:
Codice PHP:
<?php
//tabella per il logging dei tentivi
$logtable "loginlog"
//tabella che contiene username e password
$authtable "admins";
//intervallo di controllo sui login falliti
$fail_interval "20 MINUTE";
//intervallo di controllo sui login corretti
$success_interval "2 MINUTE"
//non si possono fare più di fail_num login 
//errati nell'intervallo fail_interval
$fail_num 10;  
//non si possono fare più di success_num
//login corretti nell'intervallo success_interval
$success_num 10
//comunque non si possono fare più di total_num
//tentativi nell'intervallo fail_interval
$total_num 30
?>
Ed ecco la funzione:
Codice PHP:
<?php
function verify_user($username$password)
{
    require(
"login_config.inc.php"); //contiene la definizione dei dati per configurazione del login
    
require("dbaccess.inc.php"); //contiene i dati per la connessione
    
require("mysql.inc.php");
    require(
"main.inc.php"); //contiene la definizione di check_param (contro l'SQL injection)
    
if(!check_param($username) || !check_param($password))
        return 
0;
    
db_open($dbhost$dbusername$dbpassword$dbname$conn);
    
lock_tables("$authtable READ");
    
do_query("SELECT Username FROM $authtable WHERE Username = '$username' "
            
."AND Password = md5('$password');"$res);
    
$row mysql_fetch_assoc($res);
    
$success = ($row["Username"] == $username && mysql_num_rows($res) > 0) ? 0;
    
mysql_free_result($res);
    
unlock_tables();
    
lock_tables("$logtable WRITE");
    
do_query("DELETE FROM $logtable WHERE (NOW() - "
            
."DATE_ADD(Timestamp, INTERVAL $fail_interval)) > 0;"$res);
    
do_query("SELECT *, (NOW() - DATE_ADD(timestamp, INTERVAL $fail_interval)) "
            
."As fail_flag, (NOW() - DATE_ADD(timestamp, INTERVAL $success_interval)) "
            
."As success_flag FROM $logtable WHERE IP = '"
            
.$_SERVER["REMOTE_ADDR"]."';"$res);
    
$row mysql_fetch_assoc($res);
    
mysql_free_result($res);
    if(
$row["IP"] != $_SERVER["REMOTE_ADDR"])
        
//nuovo IP
        
do_query("INSERT INTO $logtable (IP, last_result, banned, timestamp) "
                
."VALUES('".$_SERVER["REMOTE_ADDR"]."', $success, 0, NOW());"$res);
    else if(
$row["banned"])
    {
        
//ip bannato
        
$success 0;
        
do_query("UPDATE $logtable SET timestamp = NOW() WHERE IP = '"
                
.$_SERVER["REMOTE_ADDR"]."';"$res);
    }
    else
    {
        
//ip non bannato, ma presente sulla tabella
        
$banned 0;
        
$time "'".$row["timestamp"]."'";
        
$last_result $success;
        if(
$row["fail_flag"] < 0)
            
$total_retrys $row["total_retrys"] + 1;
        else
            
$total_retrys 1;
        if(
$success && $row["last_result"] == && $row["retrys"] < $success_num
                
&& $row["success_flag"] < 0)
            
//successo con successo precedente
            
$retrys $row["retrys"] + 1;
        else if(!
$success && $row["last_result"] == && $row["retrys"] < $fail_num
                 
&& $row["fail_flag"] < 0)
            
//insuccesso con insuccesso precedente
            
$retrys $row["retrys"] + 1;
        else if(
$success && $row["last_result"] == && $row["retrys"] >= $success_num 
                
&& $row["success_flag"] < 0)
        {
            
//bannaggio di un ip, perchè ha superato il numero di successi
            
$banned 1;
            
$retrys $row["retrys"] + 1;
            
$success 0;
            
$time "NOW()";
        }
        else if(!
$success && $row["last_result"] == && $row["retrys"] >= $fail_num 
                
&& $row["fail_flag"] < 0)
        {
            
//bannaggio di un ip, perchè ha superato il numero di insuccessi
            
$banned 1;
            
$retrys $row["retrys"] + 1;
            
$success 0;
            
$time "NOW()";
        }
        else if(
$row["total_retrys"] >= $total_num && $row["fail_flag"] < 0)
        {
            
//bannaggio per aver superato il num. massimo di tentativi
            
$banned 1;
            
$retrys 0;
            
$success 0;
            
$time "NOW()";
        }
        else
        {
            
$retrys 1;
            
$time "NOW()";
        }
        
do_query("UPDATE $logtable SET last_result = $last_result, banned = $banned, "
                
."timestamp = $time, retrys = $retrys, total_retrys = $total_retrys "
                
."WHERE IP = '".$_SERVER["REMOTE_ADDR"]."';"$res);
        
//a questo punto se $banned è uguale a 1 si potrebbero
        //loggare i ban effettuati su un'altra tabella
    
}
    
unlock_tables();
    
mysql_close($conn);
    return 
$success;
}
?>
Cosa ne pensate ? Come la migliorereste ?

Ciao

Ultima modifica di cionci : 01-03-2004 alle 23:32.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 10:57   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Up
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 14:24   #3
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
adesso me la studio questa funzione ma sicuramente sarà una bomba questo script

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 15:00   #4
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
incomincio a chiederti delle cose:

nei file che includi non capisco le informazioni che ci devo mettere.
Forse sarà una domanda stupida ma che cosa è il check param???



~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 16:02   #5
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
ok tutto sistemato tranne che non so che devo fare nel file check_param, ho provato a vedere anche su php.net ma nisba.

Come funzione la trovo veramente fatta bene ... pensando che avrei solo fatto un controllo sull'utente e sulla pass.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 20:20   #6
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
check_param è una funzione definita in un'altro file. Da quello che ho capito cionci la usa per controllare che l'utente non tenti di fare alcuni giochetti strani con i parametri passati tramite form.

Sono curioso di veder questa funzione. Cosa controlli di solito in questi casi ?

Per ora l'unica cosa che mi viene in mente e l'utilizzo di qualche assert qua e la al posto di un qualche if.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 20:52   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
check_param per ora è molto semplice...non ci ho ancora pensato molto...
Codice PHP:
<?php
function check_param($param)
{
    if(!isset(
$param) || stristr($param";") || stristr($param"SELECT"
    || 
stristr($param"UPDATE") || stristr($param"INSERT")
    || 
stristr($param"DELETE") || stristr($param"CREATE"))
        return 
FALSE;
    return 
TRUE;
}
?>
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 20:55   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da VICIUS
Per ora l'unica cosa che mi viene in mente e l'utilizzo di qualche assert qua e la al posto di un qualche if.
Dove li metteresti ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 20:56   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Fenomeno85
nei file che includi non capisco le informazioni che ci devo mettere.
In dbaccess.inc.php devi definire queste variabili:

$dbhost
$dbusername
$dbpassword
$dbname
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 21:04   #10
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
Quote:
Originariamente inviato da cionci
In dbaccess.inc.php devi definire queste variabili:

$dbhost
$dbusername
$dbpassword
$dbname
scusa ma username e pass non sono passate??

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 21:13   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
No...$dbusername e $dbpassword, da mettere nel file dbaccess.inc.php, sono i dati per accedere al database... $username e $password sono quelli da verificare...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 21:20   #12
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
scusa ma io non devo collegarmi con quel utente al db???

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2004, 07:07   #13
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
ok ho capito quello che si deve fare con l'autenticazione ... mi stavo incasinando pensando che si doveva modificare la tabella dei grant

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2004, 08:41   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Fenomeno85
ok ho capito quello che si deve fare con l'autenticazione ... mi stavo incasinando pensando che si doveva modificare la tabella dei grant

~§~ Sempre E Solo Lei ~§~
Quella te la metti come ti pare a te...è per quello che non ho specificato il file dbaccess.inc.php...infatti contiene informazioni relativi alla connessione con il db che cambiano da server a server...

Avete capito come funziona ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2004, 09:52   #15
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da cionci
Dove li metteresti ?
Ci ho dato un'occhiata piu approfondita e non mi pare ci sia bisogno di qualche assert.
Il mio deve essere stato un riflesso condizionato visto che di solito metto delle assert un po ovunque

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2004, 15:14   #16
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
ma perchè success è sempre 0??? se provo con un utente inserito o meno nella tabella admin.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2004, 12:19   #17
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
uppete

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2004, 18:40   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
A me success non è sempre 0... Prova a fare un po' di debug...

Ultima modifica di cionci : 04-03-2004 alle 18:50.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2004, 18:56   #19
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
bo non so il perchè non vuole funzionare

comunque forse può essere utile ma aggiungerei nella funzione verify_user il controllo per l'eliminazione degli spazi facendo

$username = trim ($username);
$password = trim ($password);

adesso riprovo a controllare se non ho sbagliato qualcosa

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2004, 19:06   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sì...ma non in questo modo...io farei così.. Se ci sono spazi allora il login è sbagliato...

if($username != trim ($username) || $password != trim ($password))
return FALSE;
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
NVIDIA RTX PRO 4500 Server Edition: la s...
Core Ultra 200 HX Plus: Intel mette il t...
Starfield arriva su PS5: data ufficiale,...
iPad Air 13" (M4) scende di prezzo: -100...
Oracle annuncia Java 26 con il Java Veri...
OPPO Find N6 è ufficiale: sottile...
Influencer sotto controllo Agcom: arriva...
Scontro in OpenAI sul ChatGPT per adulti...
Apple Watch Series 11 a 349€ e altri int...
Starlink rinnova i piani residenziali in...
POCO X8 Pro e Pro Max ufficiali: potenza...
Jensen Huang propone i token come nuovo ...
Realme 16 Pro e 16 Pro+ tra i più...
Dall'enciclopedia all'algoritmo: Encyclo...
Il CEO di Epic Games Tim Sweeney ha comp...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v