我正在尝试创建一个允许“客户”添加信息的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.");
?>
答案 0 :(得分:2)
最重要的是,存储信用卡信息不仅是一个可怕的坏主意(特别是没有看似任何加密),而且还反对PCI Security Standards,如果您想要实际处理这些数字,这将是一个问题存储很长时间。
其次,代码容易受到SQL injection的攻击,并且不仅会使您的一般用户的数据和交易面临风险,而且还会使这种情况下的信用卡号码受到影响。
如果您不了解SQL数据的信息安全最佳实践和正确的编码标准和/或最终用户的财务详细信息,请不要出于与商业相关的原因构建Web应用程序。
但要回答您的整体问题,您必须将$ _POST数据传递到您的数据库,例如$ lastname - &gt;你的陈述中的$ _POST ['lastname']。但同样,不要只是传入这些数据,或者至少使用参数化查询和一些健全性检查,使用正则表达式或其他方法来防止SQL注入,如我之前的链接所述。