Ich versuche, Formulardaten mit mysqli, PHP einzufügen. Das Problem, mit dem ich festhalte, ist, dass es "?" wie die Form Werte in der Tabelle anstelle von was ich in das Formular eintippe? Ich weiß, dass ich irgendwo falsch liege, aber ich bin nicht in der Lage, es herauszufinden.Wie füge ich Formulardaten mit MySqli/PHP ein?
Meine zusätzliche Frage ist: Ist es sicher, mysqli Anweisungen wie diese zu verwenden, um Daten aus der Datenbank einzufügen oder auszuwählen, da ich denke, $ _POST wird eine Bedrohung für Injektionsangriffe ,. Ist es jetzt genug, was ich hier schreibe, um Angriffe zu verhindern, oder muss ich etwas mehr hinzufügen?
Alle Vorschläge wären von großer Hilfe.
Hier ist mein Code
index.php
<?php
session_start();
include('db.php');
?>
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<?php
if(isset($_POST['login']) && $_POST['login'] == 'Login') {
$loginEmail = $_POST['loginEmail'];
$loginPassword = $_POST['loginPassword'];
$query = $db->prepare("INSERT INTO dbname(password,email) VALUES ('?','?');");
$query->bind_param("ss",$loginEmail,$loginPassword);
$query->execute();
}
?>
<div id="login">
<strong>Login</strong>
<br/><br/>
<form action = "<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<table style="width:500px">
<tr>
<td><input type="text" name="loginEmail" placeholder = "Email" required/><br/></td>
</tr>
<tr>
<td><input type="password" name="loginPassword" placeholder = "Password" required/><br/></td>
</tr>
</table>
<input style="font-weight: bold; width: 70px; height: 25px; border-radius: 5px;" type="submit" name="login" value="Login"/>
</form>
</div>
</body>
</html>
db.php
<?php
$host = 'host';
$user = 'user';
$password = 'password';
$database = 'dbname';
$db = new mysqli($host, $user, $password, $database);
if($db->connect_errno > 0){
die('Unable to connect to database ['.$db->connect_errno.']');
}
?>
Sie haben Syntaxfehler in Ihrem vorbereiteten Anweisung und nicht auf Fehler zu überprüfen. Dann verwenden Sie Nur-Text für Passwörter. Wenn Sie leben oder beabsichtigen, damit zu leben, nicht. Verwende 'password_hash()'. –
Sie sollten keine Klartextpasswörter in Ihrer Datenbank speichern. Siehe [password_hash()] (http://php.net/manual/en/function.password-hash.php) und [password_verify()] (http://php.net/manual/en/function.password- verify.php) – RiggsFolly
@fred: meinst du password_hash ($ loginPassword)? –