J'utilise un formulaire Unity en conjonction avec PHP pour envoyer des données à une base de données, je peux entrer avec succès des informations et il atteint la base de données mais le problème est qu'il envoie également les données sont vides. J'essaie d'empêcher cela en utilisant la méthode isset mais cela ne semble pas fonctionner. Quelqu'un peut-il vérifier cela pour moi?PHP envoyant des informations vierges à la base de données
Image de données atteignant la base de données
Image sous forme d'unité
<?php
if(!isset($_POST['usernamePost'], $_POST['passwordPost'], $_POST['emailPost']))
{
echo "This is not working";
}
else
{
//Enter the data into the database
$username = filter_var($_POST['usernamePost'], FILTER_SANITIZE_STRING);
$password = filter_var($_POST['passwordPost'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['emailPost'], FILTER_SANITIZE_STRING);
//variable for connection
$servername = "localhost";
$server_username = "root";
$server_password = "";
$dbName = "ontrigger_game";
try
{
//connection to the database
$dbhandle = mysqli_connect($servername, $server_username, $server_password)
or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";
//select a database to work with
$selected = mysqli_select_db($dbhandle, $dbName)
or die("Could not select database");
$sql = "INSERT INTO users (username, password, email)
VALUES ('".$username."','".$password."','".$email."')";
if(!mysqli_query($dbhandle, $sql))
{
die('Error: ' . mysqli_error());
}
echo "1 record added";
//close the connection
mysqli_close($dbhandle);
}
catch (Exception $ex)
{
}
}
?>
être à des injections sql carefull ... – fred727
** ** Jamais stocker les mots de passe en texte clair. Au lieu de cela, utilisez ['password_hash()'] (http://us3.php.net/manual/fr/function.password-hash.php) et ['password_verify()'] (http://us3.php.net /manual/en/function.password-verify.php). Si vous utilisez une version de PHP antérieure à la version 5.5, n'utilisez ** pas ** MD5 ou SHA1 pour hacher les mots de passe. Au lieu de cela, vous pouvez utiliser [ce pack de compatibilité] (https://github.com/ircmaxell/password_compat). –
'FILTER_SANITIZE_STRING' ne protège pas contre les attaques [** injection SQL **] (https://en.wikipedia.org/wiki/SQL_injection). Vous devez utiliser des instructions préparées avec des paramètres liés, via [** mysqli **] (https://secure.php.net/manual/fr/mysqli.prepare.php) ou [** PDO **] (https : //secure.php.net/manual/fr/pdo.prepared-statements.php) pilotes. [** Cet article **] (https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) a de bons exemples. –