我有一些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