. . .
$password = md5($_POST['password']);
. . .
Moim zdaniem powinieneś przemyśleć zaprzestanie używania md5 do "maskowania" hasła użytkownika
What is better? Password_hash vs. SHA256 vs. SHA1 vs. md5
What different between md5() .vs. hash when saving password?
Secure hash and salt for PHP passwords
Kolejna sprawa, to "nie ufamy danym z formularza",
. . .
$email = $_POST['email'];
$authkey = $_POST['authkey'];
$password = md5($_POST['password']);
. . .
dobrze by było jakbyś wprowadził, jakąkolwiek walidację tych danych, ponieważ używasz ich bezpośrednio w zapytaniu sql. (SQL injection)
SQL injection
Zapytanie SQL to żądanie wykonania jakiejś czynności w bazie danych, zwykle jest to zapytanie ze strony internetowej pytającej o nazwę użytkownika i hasło. Ponieważ jednak większość stron nie wymaga podania żadnych danych poza nazwami użytkownika i hasłami, haker może wykorzystać pola formularzy do wysyłania własnych żądań, tzn. wstrzykiwania kodu SQL do bazy danych. Tym sposobem hakerzy mogą tworzyć, odczytywać, aktualizować, modyfikować i usuwać dane przechowywane w bazach danych, zwykle w celu pozyskania poufnych informacji, takich jak nr PESEL lub karty kredytowej czy inne dane finansowe.
. . .
$email = $_POST['email'];
$authkey = $_POST['authkey'];
$password = md5($_POST['password']);
$sql = "SELECT * FROM users "
."WHERE email='$email' AND password='$password' AND authkey='$authkey' ";
. . .
np.:
PHP Sanitize and Validate Input Fields via Filters - Sanitize filters
PHP Form Validation with example
Validate Form Data with PHP
Tworzenie w bezpieczny sposób zapytań sql np.:
How to bind SQL variables in PHP?
PHP mysqli_stmt_bind_param() Function
mysqli_stmt_bind_param
bym chciał żeby wyciągało dane z bazy o danych id
pobierz ID - użytkownika
. . .
$sql = "SELECT * FROM users WHERE email='$email' AND password='$password' AND authkey='$authkey' ";
$result = mysqli_query($conn, $sql,);
if ($result->num_rows > 0) {
$row = mysqli_fetch_assoc($result);
$_SESSION['user_id'] = $row['id']; // <= np.
$_SESSION['username'] = $row['username'];
$_SESSION['saldo'] = $row['saldo'];
. . .
a później np.:
. . .
$sql = "SELECT * FROM vps WHERE user_id='{$_SESSION['user_id']}' ";
// oczywiście tabela `vps` musi zawierać pole `user_id`
// takie same jak w tabeli `user`
$result = $conn->query($sql);
. . .