创建一个允许用户输入数据的PHP文件,然后将其添加到我的数据库中[关闭]
Posted
技术标签:
【中文标题】创建一个允许用户输入数据的PHP文件,然后将其添加到我的数据库中[关闭]【英文标题】:Creating A PHP file that will allow users to enter data and then it will added to my database [closed] 【发布时间】:2013-03-11 06:08:37 【问题描述】:我正在尝试创建一个 php 文件,该文件将允许“客户”添加信息,当添加和提交该信息时,该信息应添加到我的数据库中。但是,经过几次尝试,我无法将数据输入数据库。
这是用户可以查看表单的代码...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Payment</title>
<link rel="stylesheet" type="text/css" href="styleshoppingcart.css"/>
</head>
<body>
<p>Please Enter The Following Details</p>
<form method="post" action="outputty.php">
<p>
<label>Name:<input name="name" type="text"/></label>
</p>
<p>
<label>Last Name:<input name="lastname" type="text"/></label>
</p>
<p>
<label>Card Type:<input name="cardtype" type="text"/></label>
</p>
<p>
<label>Card Number:<input name="cardnumber" type="text"/></label>
</p>
<p>
<label>Expiry Date:<input name="expiry" type="text"/></label>
</p>
<p>
<label>Door Number Date:<input name="doornumber" type="text"/></label>
</p>
<p>
<label>Post Code:<input name="postcode" type="text"/></label>
</p>
<p>
<input type="submit" value="Submit Form"/>
<input type="reset" value="Clear Entries"/>
</p>
</form>
</body>
</html>
这里是 PHP 文件的代码,应该允许将数据输入到数据库中。
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>NBA Memorabilia | Orders</title>
<link rel="stylesheet" type="text/css" href="styleshoppingcart.css"/>
</head>
<body>
<h2>Orders</h2>
<?php
//Connect to database
$location = "localhost";
$username = "********";
$password = "********";
$database = "db?k1009076";
$conn=@mysql_connect("$location","$username","$password");
if (!$conn) die ("Error: Could not connect to database server.");
@mysql_select_db($database,$conn) or die ("Error: Could not open database.");
extract($_POST);
if (isset($name))
//Add new comment to database
@mysql_query("CREATE TABLE order (name VARCHAR(65),lastname VARCHAR(65),
cardtype VARCHAR(8), cardnumber VARCHAR(16), expiryVARCHAR(4),doornumber VARCHAR(10), postcode VARCHAR(10) )");
$insert = "INSERT INTO order (name,lastname, cardtype, cardnumber, expiry, doornumber, postcode)
VALUES ('$name','$lastname','$cardtype', '$cardnumber', '$expiry','$doornumber','$postcode')";
@mysql_query($insert) or die ("Could not add data to the table");
//Close connection to server
@$disconn=mysql_close($conn);
if (!$disconn) die ("Error: Unable to disconnect from database server.");
?>
【问题讨论】:
不要这样做,将卡号和付款详细信息存储在您自己的数据库中绝不是一个好主意。尤其是您正在编写的代码。它容易受到各种攻击。 另外,发布代码时不要留下您的 MySQL 连接详细信息,例如用户名和密码。 贴出Apache的错误日志。它会告诉你错误在哪里。 @user1879688 您是否尝试过一步一步做事,即删除所有内容,然后验证您是否可以连接到数据库。尝试隔离您的问题。你问的是问我说我的车有问题你能给我一些建议来修理它吗? @NicholasKing 是的,我已经做到了。它连接到数据库,然后转到我的代码行,它声明@mysql_query($insert) 或死亡(“无法将数据添加到表中”); 【参考方案1】:最重要的是,存储信用卡信息不仅是一个非常糟糕的主意(尤其是在没有任何加密的情况下),而且还违反了PCI Security Standards,如果您想实际处理您正在存储的这些数字,这将是一个问题很长一段时间。
其次,该代码容易受到SQL injection 的攻击,在这种情况下,不仅会危及您的一般用户的数据和交易,还会危及他们的信用卡号码。
如果您不了解信息安全最佳实践以及 SQL 数据和/或最终用户财务详细信息的正确编码标准,请不要出于商业相关原因构建 Web 应用程序。
但要回答您的整体问题,您必须将 $_POST 数据传递到您的数据库,例如$lastname -> $_POST['lastname'] 在您的声明中。但同样,不要只传递这些数据,或者至少使用参数化查询和一些使用正则表达式或其他方法的完整性检查来防止 SQL 注入,如我之前的链接中所述。
【讨论】:
以上是关于创建一个允许用户输入数据的PHP文件,然后将其添加到我的数据库中[关闭]的主要内容,如果未能解决你的问题,请参考以下文章