2016-05-02 12 views
0

私はSublime3を使ってログインフォームと登録フォームのコードを書いています。私はMysql PDOを使用してXAMPPにデータベースを作成し、ログインの検証がデータベースを介して行われるようにコードにリンクする必要があります。 以下は私がデータベース用に書いたコードです。しかし、新しいユーザー名を使用してサインアップすると自動的にテーブルが作成されません。サインアップ中に入力したデータはデータベースに保存されません。レジスタXAMPPでデータベース(MySQL PDO)を作成し、PHPコードと接続します

<?php 
    session_start(); 
    require_once("../includes/dbconfig.php"); 

    try{ 
     $uname = $_POST["username"]; 
     $pword = $_POST["password"]; 
     $first_name = $_POST["firstname"]; 
     $middle_name = $_POST["middlename"]; 
     $last_name = $_POST["lastname"]; 
     $user_type = $_POST["user_type"]; 

     $dbh = new PDO($dsn, $user, $password); 
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     $sql = "INSERT INTO users (username, password, first_name, middle_name, last_name, user_type) 
       VALUES (:username, :password, :first_name, :middle_name, :last_name, :user_type)"; 
     $stmt = $dbh->prepare($sql); 
     $stmt->bindValue(':username', $uname); 
     $stmt->bindValue(':password', $pword); 
     $stmt->bindValue(':first_name', $first_name); 
     $stmt->bindValue(':middle_name', $middle_name); 
     $stmt->bindValue(':last_name', $last_name); 
     $stmt->bindValue(':user_type', $user_type); 
     $stmt->execute(); 

    } 
    catch (PDOException $e) 
    { 
     echo 'PDO Exception Caught.'; 
     echo 'Error with the database: <br />'; 
     echo 'SQL Query: ', $sql; 
     echo 'Error: ' . $e->getMessage(); 
    } 
?> 

のためのデータベース接続用のphpMyAdminで書かれ コード

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `username` varchar(255) NOT NULL, 
    `password` varchar(255) NOT NULL, 
    `first_name` varchar(255) NOT NULL, 
    `middle_name`varchar(255), 
    `last_name` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `username` (`username`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

コード

<?php 
    $dsn = 'mysql:host=localhost;dbname=ecs;'; 
    $user = 'root'; 
    $password = ''; 
    try 
    { 
     $dbh = new PDO($dsn, $user, $password); 
    } 
    catch (PDOException $e) 
    { 
     echo 'Connection failed: ' . $e->getMessage(); 
    } 
?> 

コードは、あなたは私が間違っているのを教えすることはできますか?それはXAMPPのコードかインストールの変更ですか?

+0

**プレーンテキストパスワードを保存しないでください!**パスワードのセキュリティを処理するには、PHPの[組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)を使用してください。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。ハッシュする前に[パスワードを逃さないでください](http://stackoverflow.com/q/36628418/1011527)、または他のクレンジングメカニズムを使用していることを確認してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

+0

'NOT NULL'カラム定義を提供する場合は、そのカラムに' DEFAULT'値も与えなければなりません。 –

答えて

0

テーブルにuser_typeの列が表示されないので、問題の原因と思われます。その列を作成して再試行するか、PHPコードから削除できますか?また、あなたのユーザーパスワードは@Jay Blanchardの言葉で暗号化してください。

関連する問題