我有一些PHP和HTML代码,应该从表单发送数据到我的MySQL数据库。但是,单击表单中的Submit(提交)后,页面将重新加载并且不会发生任何事情。没有回声或任何东西。 HTML与PHP文件位于同一个文件中。PHP MySQL没有提交或工作
PHP
<?php
if(isset($_POST['submit'])){
$usernamep = $_POST['usernameinput'];
$passwordp = $_POST['passwordinput'];
$servername = "localhost";
$username = "USERNAMECENSOR";
$password = "PASSWORDCENSOR";
$dbname = "database";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO accounts (username, password)
VALUES ('$usernamep', '$passwordp')";
// use exec() because no results are returned
$conn->exec($sql);
echo "Success";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
}
?>
HTML
<form method="POST" action="">
<input type="text" name="usernameinput"><br>
<input type="password" name="passwordinput"><br>
<input type="submit" class="button" value="Sign in">
</form>
注:我知道这个代码是目前受到SQL注入,密码没有加密。这是临时启动代码,试图让它首先运行。
现在缺少的是'name ='submit'' –
,最快的方式得到它的工作是**做正确的第一次**,经书。调用['password_hash'](https://secure.php.net/manual/en/function.password-hash.php)这么容易,你需要花更多的时间来写你的免责声明,而不是这样做,并避免该责任。同样,使用带有占位符值的预处理语句不仅是安全,正确的处理方式,而且还避免了一整类与SQL语法相关的错误,转义以及由于查询太难以一目了然而导致的错误。正确地做。不要找借口。 – tadman
**警告**:编写您自己的访问控制层并不容易,并且有很多机会使其严重错误。请不要在[Laravel](http://laravel.com/)等任何现代开发框架(http://codegeekz.com/best-php-frameworks-for-developers/)上编写自己的认证系统,内置了强大的[认证系统](https://laravel.com/docs/5.4/authentication)。除非这纯粹是一个学术项目,否则没有理由写这个代码。如果这是一个学术项目,没有理由采取捷径让它“工作”。 – tadman