Buongiorno,
in un sito c'è il form di login(login.html) dove si collega l'utente e poi indirizzato a (login.php) e poi dashboard.php dove volevo inserire la frase "Benvenuto Nome (NomeUtente) il tuo session ID è session_id." (il Nome ora si inserisce manualmente nel form login poi dovrà prenderlo in automatico dal database)
mentre il NomeUtente me lo restituisce interno e anche la session_id il Nome no... mi restituisce solo il primo carattere. (stessa cosa per la e-mail)
la directory è
-login.html
-register.html
-php (cartella)
--login.php
--database.php
--register.php
--dashboard.php
--logout.php
poi ci sono anche css images e sql.
vi allego codici
login.html
<!DOCTYPE html>
<html>
<head>
<link rel="icon" href="images/logo.ico" />
<title>Login</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap">
<link rel="stylesheet" href="css/style-login.css">
</head>
<body>
<form method="post" action="php/login.php">
<img class="fotografia" src="images/logo.png" width="100" height="100" alt="Marchio"> <h1>Portale Web</h1>
<h2>Accedi</h2>
<input type="text" id="username" placeholder="Username" name="username" required>
<input type="password" id="password" placeholder="Password" name="password" required>
<input type="text" id="nome" placeholder="Nome" name="nome" required>
<input type="text" id="email" placeholder="E-mail" name="email" required>
<button type="submit" name="login">Entra</button>
</form>
</body>
</html>
register.html
<!DOCTYPE html>
<html>
<head>
<link rel="icon" href="images/logo.ico" />
<title>Registrazione</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap">
<link rel="stylesheet" href="css/style-registrazione.css">
</head>
<body>
<form autocomplete="on" method="post" action="php/register.php">
<h1>Registrazione Utente</h1>
<input type="text" id="username" placeholder="Username" name="username" maxlength="50" required>
<input type="password" id="password" placeholder="Password" value="1234" name="password" required>
<input type="text" id="nome" placeholder="Nome" name="nome" required>
<input type="text" id="email" placeholder="E-mail" name="email" required>
<button type="submit" name="register">Aggiungi</button>
</form>
</body>
</html>
login.php
<?php
session_start();
require_once('database.php');
if (isset($_SESSION['session_id'])) {
header('Location: dashboard.php');
exit;
}
if (isset($_POST['login'])) {
$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';
$nome = $_POST['nome'] ?? '';
$email = $_POST['email'] ?? '';
if (empty($username) || empty($password)|| empty($nome)) {
$msg = 'Inserisci username e password %s';
} else {
$query = "
SELECT username, password
FROM users
WHERE username = :username
";
$check = $pdo->prepare($query);
$check->bindParam(':username', $username, PDO::PARAM_STR);
$check->execute();
$user = $check->fetch(PDO::FETCH_ASSOC);
if (!$user || password_verify($password, $user['password']) === false) {
$msg = 'Credenziali utente errate %s';
} else {
session_regenerate_id();
$_SESSION['session_id'] = session_id();
$_SESSION['session_user'] = $user['username'];
$_SESSION['session_nome'] = $nome['nome'];
$_SESSION['session_email'] = $email['email'];
header('Location: dashboard.php');
exit;
}
}
printf($msg, '<a href="../login.html">torna indietro</a>');
}
register.php
<?php
require_once('database.php');
if (isset($_POST['register'])) {
$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';
$nome = $_POST['nome'] ?? '';
$email = $_POST['email'] ?? '';
$isUsernameValid = filter_var(
$username,
FILTER_VALIDATE_REGEXP, [
"options" => [
"regexp" => "/^[a-z\d.]{3,20}$/i"
]
]
);
$pwdLenght = mb_strlen($password);
if (empty($username) || empty($password)) {
$msg = 'Compila tutti i campi %s';
} elseif (false === $isUsernameValid) {
$msg = 'Lo username non è valido. Sono ammessi solamente caratteri
alfanumerici e l\'underscore. Lunghezza minina 3 caratteri.
Lunghezza massima 20 caratteri';
} elseif ($pwdLenght < 3 || $pwdLenght > 20) {
$msg = 'Lunghezza minima password 3 caratteri.
Lunghezza massima 20 caratteri';
} else {
$password_hash = password_hash($password, PASSWORD_BCRYPT);
$query = "
SELECT id
FROM users
WHERE username = :username
";
$check = $pdo->prepare($query);
$check->bindParam(':username', $username, PDO::PARAM_STR);
$check->execute();
$user = $check->fetchAll(PDO::FETCH_ASSOC);
if (count($user) > 0) {
$msg = 'Username già in uso %s';
} else {
$query = "
INSERT INTO users
VALUES (0, :username, :password, :nome, :email)
";
$check = $pdo->prepare($query);
$check->bindParam(':username', $username, PDO::PARAM_STR);
$check->bindParam(':password', $password_hash, PDO::PARAM_STR);
$check->bindParam(':nome', $nome, PDO::PARAM_STR);
$check->bindParam(':email', $email, PDO::PARAM_STR);
$check->execute();
if ($check->rowCount() > 0) {
$msg = 'Registrazione eseguita con successo <a href="../login.html">Vai alla Pagina di accesso</a> <a href="../register.html">Registra un altro Utente</a>';
} else {
$msg = 'Problemi con l\'inserimento dei dati %s';
}
}
}
printf($msg, '<a href="../register.html">torna indietro</a>');
}
dashboard.php
<?php
session_start();
if (isset($_SESSION['session_id']))
{ $session_user = htmlspecialchars($_SESSION['session_user'], ENT_QUOTES, 'UTF-8');
$session_id = htmlspecialchars($_SESSION['session_id']);
$session_nome = htmlspecialchars($_SESSION['session_nome']);
$session_email = htmlspecialchars($_SESSION['session_email']);
printf("Benvenuto %s (%s), il tuo session ID è %s. E-mail: %s", $session_nome, $session_user, $session_id, $email);
echo "<br>";
printf("%s", '<a href="logout.php">logout</a>');
echo "<br>";
echo "<br>";
} else {
printf("Effettua il %s per accedere all'area riservata", '<a href="../login.html">login</a>');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../css/style1.css">
<title> Dashboard <?= $session_user ?></title>
<h2> Benvenuto <?= $session_nome ?></h2>
<h3> questa è la tua mail: <?= $session_email ?></h3>
</head>
</html>
se può servire
database.php
<?php
$config = [
'db_engine' => 'mysql',
'db_host' => 'ftp.xxxxx',
'db_name' => 'my_arrigo',
'db_user' => 'xxxxx',
'db_password' => 'xxxxxxxxx',
];
$db_config = $config['db_engine'] . ":host=".$config['db_host'] . ";dbname=" . $config['db_name'];
try {
$pdo = new PDO($db_config, $config['db_user'], $config['db_password'], [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
]);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
exit("Impossibile connettersi al database: " . $e->getMessage());
}
Ho cercato ma non mi è sembrato che sia stata aperta una discussione sullo stesso argomento.
Vi ringrazio in anticipo per il vostro tempo dedicato.
Davide