2017-09-06 2 views
1

Ich verwende ein Unity-Formular in Verbindung mit PHP, um Daten an eine Datenbank zu senden, kann ich erfolgreich Informationen eingeben und es erreicht die Datenbank, aber das Problem ist, sendet es auch die Daten, wenn die Felder sind leer.PHP senden leere Informationen an die Datenbank

Ich versuche, dies mit der Isset-Methode zu verhindern, aber es scheint nicht zu funktionieren. Kann jemand das für mich überprüfen?

Bild von Daten, die die Datenbank

enter image description here

Bild der Einheit Form erreicht

enter image description here

<?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) 
     { 

     } 
    } 
?> 
+0

zu SQL-Injektionen seien Sie vorsichtig ... – fred727

+0

** Nie ** speichern Passwörter im Klartext. Verwenden Sie stattdessen ['password_hash()'] (http://us3.php.net/manual/en/function.password-hash.php) und ['password_verify()'] (http://us3.php.net /manual/en/function.password-verify.php). Wenn Sie eine Version von PHP vor Version 5.5 verwenden, verwenden Sie ** nicht ** MD5 oder SHA1, um Passwörter zu hashen. Stattdessen können Sie [dieses Kompatibilitätspaket] (https://github.com/ircmaxell/password_compat) verwenden. –

+0

'FILTER_SANITIZE_STRING' schützt nicht vor [** SQL injection **] (https://en.wikipedia.org/wiki/SQL_injection) Angriffen. Sie sollten vorbereitete Anweisungen mit gebundenen Parametern verwenden, entweder über die [** mysqli **] (https://secure.php.net/manual/en/mysqli.prepare.php) oder [** PDO **] (https : //secure.php.net/manual/de/pdo.prepared-statements.php) Treiber. [** Dieser Post **] (https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) hat einige gute Beispiele. –

Antwort

2

Sie sollten auch mit der empty() Methode, wenn seine leeren überprüfen

if (!isset($_POST['usernamePost']) && empty($_POST['usernamePost'])) { 

// error message here 

} else { 

// What you want to do if not empty and is set. 

} 

Hinweis: Verwenden Sie den && Operator statt

das Komma
+1

Danke Jesse, mit der leeren() Methode gearbeitet – user2757842

Verwandte Themen