使用PHP创建帐户到MySQL

时间:2016-01-08 21:41:29

标签: php html mysql database forms

我不喜欢PHP / MySQL,所以请原谅我的无知。 我在我的网站上有一个登录表单,我创建了一个用于创建帐户的表单,视觉上一切都很好,但是,我需要将数据发送到mysql中的客户帐户表。当我提交表单时,它似乎有效,创建ID 1,但所有其他字段都是空白的。

PHP:

// Copy all fees
List<Fee> difference = new ArrayList<>(allFees);

// Keep only fees that are different
difference.removeAll(paidfees);

&GT;

HTML:

<?php

$hostname="localhost";
$username="createaccount";
$password="******";
$dbname="Island_Web_Design";
$usertable="customer_accounts";
$connection = mysql_connect($hostname, $username, $password);
mysql_select_db($dbname, $connection);

$sql="INSERT INTO customer_accounts (firstname, lastname, email, password)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[email]','$_POST[password]')";


if (!mysql_query($sql,$connection))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);

提前谢谢。

2 个答案:

答案 0 :(得分:2)

对于初学者,您应该停止使用mysql_*函数来获取新代码。它已从最新版本(7)中的语言中删除。而是升级到mysqliPDO

Why shouldn't I use mysql_* functions in PHP?

其次,您应该防止代码中的SQL注入漏洞:

How can I prevent SQL-injection in PHP?

第三,您应该对密码进行哈希处理,以防止在您的应用程序中出现安全漏洞时泄露密码。

password_hash()

最后要回答您的问题:如果您没有告诉您的表单POST,则会提出GET请求。将表单更改为<form role="form" action="Create_Account.php" method="post">

您可以而且应该自己调试代码以解决这些问题。最简单的形式是在变量上使用var_dump();来查看是否包含您认为它们包含的内容。您还可以通过打开您喜欢的浏览器的开发人员工具来检查所做的请求。

您的代码可以/应该重写为:

<?php

$dbConnection = new PDO('mysql:dbname=Island_Web_Design;host=localhost;charset=utf8', 'createaccount', '******');

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $dbConnection->prepare('INSERT INTO customer_accounts (firstname, lastname, email, password) VALUES (:firstname, :lastname, :email, :password');

try {
    $stmt->execute([
        'firstname'=> $_POST[firstname],
        'lastname' => $_POST[lastname],
        'email' => $_POST[email],
        'password' => password_hash($_POST[password], PASSWORD_DEFAULT, ['cost' => 14]),
    ]);
} catch(\PDOException $e) {
    die('Error: ' . $e->getMessage());
}

echo "1 record added";

答案 1 :(得分:-3)

请不要这样做:

('$_POST[firstname]','$_POST[lastname]','$_POST[email]','$_POST[password]')

请阅读:Is SQL Injection possible with POST?

修复add method =“post”里面的形式应答,谢谢@jay