Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-03-2004, 22: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) ? 1 : 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"] == 1 && $row["retrys"] < $success_num
                
&& $row["success_flag"] < 0)
            
//successo con successo precedente
            
$retrys = $row["retrys"] + 1;
        else if(!
$success && $row["last_result"] == 0 && $row["retrys"] < $fail_num
                 
&& $row["fail_flag"] < 0)
            
//insuccesso con insuccesso precedente
            
$retrys = $row["retrys"] + 1;
        else if(
$success && $row["last_result"] == 1 && $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"] == 0 && $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 22:32.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2004, 09: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, 13: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, 14: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, 15: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, 19: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, 19: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, 19: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, 19: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, 20: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, 20: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, 20: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, 06: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, 07: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, 08: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, 14: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, 11: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, 17: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 17:50.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2004, 17: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, 18: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


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
HEO Space ha rilasciato una nuova immagi...
La missione Artemis III sarebbe in ritar...
Apple apre Music Hall, una sala concerto...
Adobe arriva su Gemini e Claude: nuove f...
Non solo Fideuram: quasi 2 milioni di it...
I lettori CD di fascia alta potrebbero s...
Tutto il meglio di Amazon weekend: 5 nov...
Proscenic P15+ a 113€ su Amazon: scopa e...
TP-Link Wi-Fi 6 a 59,99€ e Tenda 4G03 Pr...
Un quasi top di gamma a 461€: lo smartph...
Roborock Saros 20 Neo e Flow Complete: 3...
Mac mini si trasforma: chip a 2 nanometr...
Su Amazon c'è un super TV Samsung...
La Cina ha rilasciato un satellite dallo...
Il satellite LINK è rientrato nel...
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: 22:00.


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