Login per gioco online

AkenStyle

Nuovo Utente
15 Feb 2018
11
0
1
26
Ciao a tutti. Ho creato all'interno di un videogioco un Login Form con 2 campi: Username + Password e poi il tasto Login. Da notare che questo Login Form è collegato a uno script in php.

Ora io voglio che un utente quando inserisce Username + Password, e poi preme il tasto Login. Lo script invia una richiesta al database MYSQL e va ad afferrare dalla tabella users, l'Username e la Password dell'utente.


Questo qui sotto è il codice per accedere alla tabella users, ma dopo che codice devo inserire per afferrare Username e Password?
PHP:
$get = mysql_query("SELECT * FROM users");
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
mi sembra, ma forse sbaglio, che tu sia un po' digiono sia di php che di mysql.
comunque dal form devi recuperare con $_POST i valori di user e pass, metterli nella query con un WHERE e verificare se esistono se esistono fai giogare altrimenti no
tra l'altro vedo che usi la vecchia funzione php mysql_query, le mysql_ffff sono obsolete, passa alle nuove mysqli_fffff
 

AkenStyle

Nuovo Utente
15 Feb 2018
11
0
1
26
be si io e da pochi giorni che sto studiando PHP, però la mia fortuna è che devo realizzare questo script per fare il login al gioco, quindi non dovrebbe essere lungo. Sto cercando di renderlo anche il più corto e semplice possibile da capire.

PHP:
<?php

//questo serve per connettersi al database
$connect = mysqli_connect("localhost", "username", "password", "nome_database") or die("Non connesso");

echo"Connesso";


//questo serve per connettersi alla tabella users del database
$get = mysqli_query($connect,"SELECT * FROM users");


//questo afferra username e password
$username = $_POST["username"];

$password = $_POST["password"];


//questo cripta la password
$password_hash = md5[$password];

?>
Va bene cosi? Oppure manca qualcosa?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
per fare quello che vuoi mancano diverse cose
ti schematizzo
PHP:
//questo serve per connettersi al database
$connect = mysqli_connect("localhost", "username", "password", "nome_database") or die("Non connesso");
//echo"Connesso"; //NON serve
//questo afferra username e password
$username = addslashes($_POST["username"]);//comunque da vewrificare se vuoto o meno
$password = $_POST["password"];
//questo cripta la password
$password_hash = md5($password);//attento le tonte non le []
//questo serve per connettersi alla tabella users del database e verifucare se l'utente è registrato
$get = mysqli_query($connect,"SELECT * FROM users WHERE username='$username' AND password='$password'");
//non so come hai chiamato i campi per l'user e pass
if(mysqli_num_rows($get)== 0){
    /*l'utente non è registrato
    non fai giocare
    e rimandi dove vuoui
    */
}else{
    /*l'utente è registrato
    fai giocare
    */
}
guarda che è solo un codice schematico solo per farti capire
 
  • Like
Reactions: AkenStyle

AkenStyle

Nuovo Utente
15 Feb 2018
11
0
1
26
ciao potresti spiegarmi questo codice?

PHP:
$username = addslashes($_POST["username"]);
$password = $_POST["password"];

cioè non riesco a capire cosa significa la scritta addslashes

e poi perchè i codici per username e password non sono identici? come nell'esempio sotto?

PHP:
$username = $_POST["username"];
$password = $_POST["password"];
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
l'addslashes è il minimo che si deve fare per cercare di impedire le crossinjection al db
come vedi nella query c'e un WHERE username='$username'...
se la variabile $username viene inputata sempilcemente come pinco la query viene trasmessa come
...WHERE username='pinco'...
e tutto va bene, ma un maleintenzionato potrebbe scrivere, esempio, nel campo di input del form
pallo' OR 1=1' per cui la query verrebbe trasmessa come
...WHERE username='pallo' OR 1=1''...
per cui l'utente non registrato accede anche se non si chiama pallo in quanto "oppure" 1 è uguale a 1 che è sempre vero, capito
l'addslshes agggginge uno slash davanti agli apici rendendolo come un carattere
pallo\' OR 1=1\'
...WHERE username='pallo\' OR 1=1\''...

non l'ho messo nell'input della password in quanto con la codifica md5 l'apice viene codificato trasformandosi in carattere rebdendo superfluo l'addslashes
spero di essere stato chiaro

comunque impara ad usare il manuale ufficiale
http://php.net/manual/en/manual.php
lo chiami e nella casella di ricerca (in questo caso) scrivi addslashes e trovi tutte le info sulla funzione
 
  • Like
Reactions: AkenStyle

AkenStyle

Nuovo Utente
15 Feb 2018
11
0
1
26
ok grazie 1000 per la spiegazione, senza il tuo aiuto ci avrei messo mesi a capirlo!