2017-08-15 19 views
-1

フォームから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インジェクションの対象となり、パスワードが暗号化されていない知っています。最初に動作させるために、一時的な開始コードです。

+1

ことがあなたの送信ボタンを作ることができ、それが働いて得るために最速の方法は、**本を読んで、**適切に初めてそれを行うには '名= 'submit'' –

+1

です。 ['password_hash'](https://secure.php.net/manual/en/function.password-hash.php)を簡単に呼び出すと、免責条項を書く時間がかかりました。その責任。同様に、プレースホルダー値でプリペアドステートメントを使用することは、安全で正しい方法で行われるだけでなく、SQL構文、エスケープ、クエリーに起因するエラーについて一見するのは難しいです。それを正しくしてください。言い訳をしないでください。 – tadman

+1

**警告**:独自のアクセスコントロールレイヤーを作成するのは簡単ではなく、間違った操作をする機会がたくさんあります。 [Laravel](http://laravel.com/)のような最新の[開発フレームワーク](http://codegeekz.com/best-php-frameworks-for-developers/)がある場合は、独自の認証システムを作成しないでください。強力な[認証システム](https://laravel.com/docs/5.4/authentication)が組み込まれています。純粋に学術的なプロジェクトでない限り、文字通りこのコードを書く理由はありません。それが学術的なプロジェクトであれば、それを「働かせる」ために短絡をとる理由はありません。 – tadman

答えて

2

あなたはname="submit"を追加し、submitボタンでname属性を欠いています。

<form method="POST" action=""> 
    <input type="text" name="usernameinput"><br> 
    <input type="password" name="passwordinput"><br> 
    <input type="submit" name="submit" class="button" value="Sign in"> 
</form> 
-1

フォームタグのアクションにphpファイルを含める必要があります。

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']?>"> 
    <input type="text" name="usernameinput"><br> 
    <input type="password" name="passwordinput"><br> 
    <input type="submit" class="button" value="Sign in"> 
</form> 
+0

同じPHPファイルを使用している場合、これは必要ありません。 –

+0

'action'の空白は' <?php echo $ _SERVER ['PHP_SELF']?> ' – Swellar

0

テストが間違っています。 「submit」という名前の入力はありません(属性name = submit)。

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
... 
} 

このような幅広いテストでは、名前付き送信は必要ありません。 HTMLフォームは、jQueryやJavaScriptを使用して別のイベントに投稿することさえできます。

0

PHPファイルでは、を使用します。 にはname="submit"が含まれていません。あなたは何が不足しているか

<input type="submit" name="submit" class="button" value="Sign in"> 
関連する問題