diff --git a/clientarea.php b/clientarea.php
index b7f7e1d..6449ed7 100644
--- a/clientarea.php
+++ b/clientarea.php
@@ -2,7 +2,7 @@
 
 session_start();
 define('IN_SYS', true);
-require_once("core.php");
+require_once "core.php";
 
 include_once "{$ROOT}/library/email.class.php";
 $section = empty($_GET["s"]) ? "main" : $_GET["s"];
@@ -12,6 +12,9 @@ if (!is_file($section_page)) {
 }
 
 $objDB = objDB();
+
+$dbpdo = DBPDO::getInstance($dbconfig);
+
 $user = get_userinfo();
 
 $controller = "{$ROOT}/clientarea/controllers/{$section}.php";
diff --git a/clientarea/controllers/main.php b/clientarea/controllers/main.php
index f6b246c..a3cadfd 100644
--- a/clientarea/controllers/main.php
+++ b/clientarea/controllers/main.php
@@ -7,6 +7,5 @@ if (!defined('IN_SYS')) {
 }
 
 if (!isUserLoggedIn()) {
-    setMsg("msg_notify", "You need to login before accessing the Client Area.", "warning");
     redirect("clientarea", "login");
 }
diff --git a/clientarea/controllers/tickets.php b/clientarea/controllers/tickets.php
index e092b5a..502ea32 100644
--- a/clientarea/controllers/tickets.php
+++ b/clientarea/controllers/tickets.php
@@ -14,6 +14,33 @@ if (!isUserLoggedIn()) {
 $err = getMsg("errors");
 $data = getMsg("form_data");
 
+function getTickets()
+{
+    // DB_HOST, DB_USER, DB_PASSWORD, DB_NAME
+    echo "getTickets()";
+    $stmt = $dbpdo->prepare(
+        "SELECT * FROM tickets"
+    );
+    $sql = 'SELECT * FROM `tickets`';
+    $rs = $pdo->query($sql);
+    $data = $rs->fetchAll(); //取出所有结果
+    print_r($data);
+    // $sql = 'UPDATE t1 SET t1.`id1`=11 WHERE t1.`id1`=1';
+    // $rs = $pdo->query($sql);
+    // // $stmt->bind_param("s", $email);
+    // $stmt->execute();
+    // // $stmt->store_result();
+    // // return $stmt->num_rows;
+    // $result = $stmt->get_result();
+
+    // // while ($row = $result->fetch_assoc()) {
+    // //     // do something with $row
+    // // }
+    // return $result;
+}
+
+print_r(getTickets());
+
 $tickets = [
     "total" => 10,
     "pages" => 4,
@@ -24,21 +51,21 @@ $tickets = [
             "department" => "Saturday, August 11th, 2018 (04:50)",
             "subject" => "Invoice Payment Confirmation",
             "status" => "",
-            "lastupdated" => ""
+            "lastupdated" => "",
         ],
         [
             "date" => "Friday, August 10th, 2018 (12:00)",
             "department" => "Friday, August 10th, 2018 (12:00)",
             "subject" => "Customer Invoice",
             "status" => "",
-            "lastupdated" => ""
+            "lastupdated" => "",
         ],
         [
             "date" => "Tuesday, April 3rd, 2018 (00:51)",
             "department" => "Tuesday, April 3rd, 2018 (00:51)",
             "subject" => "Your password has been reset",
             "status" => "",
-            "lastupdated" => ""
-        ]
-    ]
+            "lastupdated" => "",
+        ],
+    ],
 ];
diff --git a/clientarea/controllers/tickets_add.php b/clientarea/controllers/tickets_add.php
new file mode 100644
index 0000000..d869c3f
--- /dev/null
+++ b/clientarea/controllers/tickets_add.php
@@ -0,0 +1,19 @@
+<?php
+
+if (!defined('IN_SYS')) {
+    // exit('禁止访问');
+    header("Location: ../../clientarea.php");
+    exit;
+}
+
+if (!isUserLoggedIn()) {
+    setMsg("msg_notify", "You need to login before accessing the Tickets Add page.", "warning");
+    redirect("clientarea", "login");
+}
+
+$err = getMsg("errors");
+$data = getMsg("form_data");
+
+$ticket_types = [
+    "技术支持","销售财务","管理员信箱"
+];
\ No newline at end of file
diff --git a/clientarea/views/tickets.php b/clientarea/views/tickets.php
index b26a4be..c260a42 100644
--- a/clientarea/views/tickets.php
+++ b/clientarea/views/tickets.php
@@ -13,7 +13,7 @@ if (!defined('IN_SYS')) {
             <div class="panel panel-default">
                 <div class="panel-heading">
                     <span class="panel-title">Support Tickets</span>
-                    <a class="btn btn-default btn-xs pull-right" href="<?php echo setRouter('clientarea', 'tickets'); ?>">New Ticket</a>
+                    <a class="btn btn-default btn-xs pull-right" href="<?php echo setRouter('clientarea', 'tickets_add'); ?>">Add Ticket</a>
                 </div>
                 <div class="panel-body">
                     <div class="table-responsive">
diff --git a/clientarea/views/tickets_add.php b/clientarea/views/tickets_add.php
new file mode 100644
index 0000000..e51c8e3
--- /dev/null
+++ b/clientarea/views/tickets_add.php
@@ -0,0 +1,48 @@
+<?php
+if (!defined('IN_SYS')) {
+    // exit('禁止访问');
+    header("Location: ../../clientarea.php");
+    exit;
+}
+?>
+
+<div class="container">
+    <div class="row">
+        <div class="col-md-12">
+            <?php echo (getMsg("msg_notify")); ?>
+            <div class="panel panel-default">
+                <div class="panel-heading">
+                    <span class="panel-title">Tickets Add</span>
+                    <a class="btn btn-default btn-xs pull-right" href="<?php echo setRouter('clientarea', 'tickets'); ?>">Tickets List</a>
+                </div>
+                <div class="panel-body">
+                    <form action="" method="POST">
+                        <div class="form-group">
+                            <label for="ticket-type">Type: <sup>*</sup></label>
+                            <select name="ticket-type" id="ticket-title" class="form-control <?php echo (isset($err['ticket_type_err'])) ? 'is-invalid' : ''; ?>">
+                                <?php foreach ($ticket_types as $key => $value) {?>
+                                    <option value="<?php echo $key; ?>"><?php echo $value; ?></option>
+                                <?php }?>
+                            </select>
+                            <span class="text-warning"><?php echo isset($err["ticket_type_err"]) ? $err["ticket_type_err"] : ""; ?></span>
+                        </div>
+                        <div class="form-group">
+                            <label for="ticket-title">Title: <sup>*</sup></label>
+                            <input type="text" name="title" id="ticket-title" value="<?php echo ($data['title']); ?>" class="form-control <?php echo (isset($err['content_err'])) ? 'is-invalid' : ''; ?>" placeholder="Title">
+                            <span class="text-warning"><?php echo isset($err["title_err"]) ? $err["title_err"] : ""; ?></span>
+                        </div>
+                        <div class="form-group">
+                            <label for="password">Content: <sup>*</sup></label>
+                            <textarea name="content" id="ticket-content" value="<?php echo ($data['content']); ?>" class="form-control <?php echo (isset($err['content_err'])) ? 'is-invalid' : ''; ?>" rows="10" maxlength="5000" placeholder="Content"></textarea>
+                            <span class="text-warning"><?php echo isset($err["content_err"]) ? $err["content_err"] : ""; ?></span>
+                        </div>
+                        <div class="form-group">
+                            <button type="submit" name="do_add_tickets" class="btn btn-primary">Add</button>
+                        </div>
+                    </form>
+                </div>
+                <div class="panel-footer"></div>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/core.php b/core.php
index 0bf0fc0..e186600 100644
--- a/core.php
+++ b/core.php
@@ -8,6 +8,7 @@ $ROOT = __DIR__;
 include_once "{$ROOT}/data/config.php";
 include_once "{$ROOT}/library/language.php";
 include_once "{$ROOT}/library/functions.php";
+include_once "{$ROOT}/library/dbpdo.php";
 
 $rooturl = $_SERVER['HTTP_HOST'];
 $domain = preg_replace('/^www\./', '', $rooturl);
diff --git a/data/config.php b/data/config.php
index ebea12a..0b1d002 100644
--- a/data/config.php
+++ b/data/config.php
@@ -34,6 +34,15 @@ $admin = [
     "password" => "admin",
 ];
 
+$dbconfig = [
+    'host' => 'bv2g0ksp.hk1027lan.dnstoo.com',
+    'username' => 'gcop2h_f',
+    'password' => 'gdwst6ob',
+    'dbname' => 'gcop2h',
+    'charset' => 'utf8',
+    'port' => '3306',
+];
+
 $config = [
     "apiUsername" => "1",
     "apiPassword" => "1",
diff --git a/data/demo.sql b/data/demo.sql
index ed621f4..d5f428e 100644
--- a/data/demo.sql
+++ b/data/demo.sql
@@ -5,56 +5,52 @@ START TRANSACTION;
 SET time_zone = "+00:00";
 
 
-CREATE TABLE IF NOT EXISTS `users` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `name` varchar(255) NOT NULL,
-  `email` varchar(255) NOT NULL,
-  `username` varchar(255) NOT NULL,
-  `password` varchar(255) NOT NULL,
-  `website` varchar(255) NOT NULL,
-  `image` varchar(255) NOT NULL,
-  `created_at` int(11) NOT NULL,
-  `reset_code` char(32) NOT NULL,
-  `is_active` tinyint(4) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=100;
-
+CREATE TABLE IF NOT EXISTS `users`(
+    `id` INT(11) NOT NULL AUTO_INCREMENT,
+    `name` VARCHAR(255) NOT NULL,
+    `email` VARCHAR(255) NOT NULL,
+    `username` VARCHAR(255) NOT NULL,
+    `password` VARCHAR(255) NOT NULL,
+    `website` VARCHAR(255) NOT NULL,
+    `image` VARCHAR(255) NOT NULL,
+    `created_at` INT(11) NOT NULL,
+    `reset_code` CHAR(32) NOT NULL,
+    `is_active` TINYINT(4) NOT NULL,
+    PRIMARY KEY(`id`)
+) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 100;
 
 INSERT INTO `users` (`id`, `name`, `email`, `username`, `password`, `website`, `image`, `created_at`, `reset_code`, `is_active`) VALUES
 (1, 'Administrator', 'support@uiisc.com', 'admin', '$2y$10$g6SsReRUJDV0IANO7ZBamOGNQ7sE7zayFiXOC6sgU0lPjxq1b4yuu', 'http://uiisc.com', '5de69dbb55cc3623871b98adc74628081558340869.png', 1550143252, '', 1)
 
+CREATE TABLE IF NOT EXISTS `emails`(
+    `id` INT(11) NOT NULL AUTO_INCREMENT,
+    `date` VARCHAR(255) NOT NULL,
+    `subject` VARCHAR(255) NOT NULL,
+    `body` VARCHAR(255) NOT NULL,
+    `user_id` INT(11) NOT NULL,
+    `is_active` TINYINT(4) NOT NULL,
+    PRIMARY KEY(`id`)
+) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 100;
 
-CREATE TABLE IF NOT EXISTS `emails` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `date` varchar(255) NOT NULL,
-  `subject` varchar(255) NOT NULL,
-  `body` varchar(255) NOT NULL,
-  `user_id` int(11) NOT NULL,
-  `is_active` tinyint(4) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=100;
+CREATE TABLE IF NOT EXISTS `tickets`(
+    `id` INT(11) NOT NULL AUTO_INCREMENT,
+    `date` VARCHAR(255) NOT NULL,
+    `department` VARCHAR(255) NOT NULL,
+    `subject` VARCHAR(255) NOT NULL,
+    `status` TINYINT(4) NOT NULL,
+    `lastupdated` VARCHAR(255) NOT NULL,
+    `user_id` INT(11) NOT NULL,
+    PRIMARY KEY(`id`)
+) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 100;
 
-
-CREATE TABLE IF NOT EXISTS `tickets` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `date` varchar(255) NOT NULL,
-  `department` varchar(255) NOT NULL,
-  `subject` varchar(255) NOT NULL,
-  `status` tinyint(4) NOT NULL,
-  `lastupdated` varchar(255) NOT NULL,
-  `user_id` int(11) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=100;
-
-
-CREATE TABLE IF NOT EXISTS `products` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `date` varchar(255) NOT NULL,
-  `department` varchar(255) NOT NULL,
-  `subject` varchar(255) NOT NULL,
-  `status` tinyint(4) NOT NULL,
-  `lastupdated` varchar(255) NOT NULL,
-  `user_id` int(11) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+CREATE TABLE IF NOT EXISTS `products`(
+    `id` INT(11) NOT NULL AUTO_INCREMENT,
+    `date` VARCHAR(255) NOT NULL,
+    `department` VARCHAR(255) NOT NULL,
+    `subject` VARCHAR(255) NOT NULL,
+    `status` TINYINT(4) NOT NULL,
+    `lastupdated` VARCHAR(255) NOT NULL,
+    `user_id` INT(11) NOT NULL,
+    PRIMARY KEY(`id`)
+) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 100;
 
diff --git a/library/dbpdo.php b/library/dbpdo.php
new file mode 100644
index 0000000..2bced35
--- /dev/null
+++ b/library/dbpdo.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * 数据库pdo连接
+ */
+class DBPDO
+{
+    private static $pdo;
+
+    private function __construct()
+    {
+        //code
+    }
+    private function __clone()
+    {
+        //code
+    }
+    /**
+     * 获取实例化的PDO,单例模式
+     * @return PDO
+     */
+    public static function getInstance($dbConf)
+    {
+        if (!(self::$pdo instanceof PDO)) {
+            $dsn = "mysql:host=" . $dbConf['host'] . ";port=" . $dbConf['port'] . ";dbname=" . $dbConf['dbname'] . ";charset=" . $dbConf['charset'];
+            try {
+                self::$pdo = new PDO($dsn, $dbConf['username'], $dbConf['password']); // , array(PDO::ATTR_PERSISTENT => true, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); // 保持长连接
+                self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+            } catch (PDOException $e) {
+                print "Error:" . $e->getMessage() . "<br/>";
+                die();
+            }
+        }
+        return self::$pdo;
+    }
+}