创建一个允许用户输入数据的PHP文件,然后它将添加到我的数据库中

时间:2013-03-21 16:03:51

标签: php html database phpmyadmin

我正在尝试创建一个允许“客户”添加信息的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.");
  ?>

1 个答案:

答案 0 :(得分:2)

最重要的是,存储信用卡信息不仅是一个可怕的坏主意(特别是没有看似任何加密),而且还反对PCI Security Standards,如果您想要实际处理这些数字,这将是一个问题存储很长时间。

其次,代码容易受到SQL injection的攻击,并且不仅会使您的一般用户的数据和交易面临风险,而且还会使这种情况下的信用卡号码受到影响。

如果您不了解SQL数据的信息安全最佳实践和正确的编码标准和/或最终用户的财务详细信息,请不要出于与商业相关的原因构建Web应用程序。

但要回答您的整体问题,您必须将$ _POST数据传递到您的数据库,例如$ lastname - &gt;你的陈述中的$ _POST ['lastname']。但同样,不要只是传入这些数据,或者至少使用参数化查询和一些健全性检查,使用正则表达式或其他方法来防止SQL注入,如我之前的链接所述。