フォームからMySQLデータベースにデータを送信するPHPとHTMLコードがあります。ただし、フォームで[送信]をクリックすると、ページがリロードされ、何も起こりません。エコーや何もありません。 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インジェクションの対象となり、パスワードが暗号化されていない知っています。最初に動作させるために、一時的な開始コードです。
ことがあなたの送信ボタンを作ることができ、それが働いて得るために最速の方法は、**本を読んで、**適切に初めてそれを行うには '名= '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