繁体   English   中英

PHP表单上传到MySQL数据库

[英]PHP Form upload to MySQL Database

PHP初学者在教程中工作。 我正在尝试从PHP表单到MySQL数据库进行简单的上传。 表单正确上传,但每次页面刷新时,它都会重复上一次上传,从而创建重复的条目。 你可以在这里看到我的工作页面。

您可以看到我正在尝试收到评论“谢谢!产品已添加!” 在提交时吐在桌子上方,但我承认当我点击“提交”时我对确切发生的事情感到困惑...现在它总是显示确认消息! 我已经在下面的表单中包含了PHP代码。

提前致谢!

麦克风

<div id="form">

<h1 class="green">UPLOAD TO TABLE 'manufacturer'</h1>


<?php

$con = mysql_connect($host,$user,$pass);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("thenally_productdump", $con);

$sql="INSERT INTO manufacturer (manu_name, manu_product_type, manu_product_description, manu_website)
VALUES
('$_POST[manufacturer]','$_POST[product]','$_POST[description]','$_POST[website]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "Thank you! Product Added!";

mysql_close($con);

?> 

<form action="" method="post">
<table>
    <tr>
    <td class="form-table-left"><b>Manufacturer: </b> </td>
    <td class="form-table-right"><input type="text" name="manufacturer" size=50></td>
    </tr>

    <tr>
    <td class="form-table-left"><b>Product Type:</b></td>
    <td class="form-table-right"><input type="text" name="product" size=50></td>
    </tr>

    <tr>
    <td class="form-table-left"><b>Product Description: </b></td>
    <td class="form-table-right"><textarea name="description" rows=5 cols=40></textarea></td>
    </tr>

    <tr>
    <td class="form-table-left"><b>Manufacturer Website: </b></td>
    <td class="form-table-right"><input type="text" name="website" value="http://" size=50></td>
    </tr>

    <tr>
    <td class="submit"><input type="submit" name="submit" value="Add Product !"></td>
    </tr>

    </table>
    </form>

</div>

您尚未检查POST是否确实发生过。 这意味着每次加载页面时都会触发表单处理代码,即使没有提交表单也是如此。 PHP中的基本一体化表单处理具有以下结构:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  ... a post has taken place, process the form
}

... display the form/errors/etc....

正如Brad的评论中所述,你对sql注入攻击很开放。 在您执行将代码放入面向公众的网站的任何操作之前,您最好先学习安全编码实践,否则您的网站会很快陷入瘫痪。

迈克 - 只要您的页面加载,php块中的所有内容都将执行。 因此,如果你看一下回声线,你会注意到它总会执行并打印出成功文本。 你需要做几件事:

  1. 测试您的输入以查看表单是否已正确提交。 您可以在此测试以确保所有必填字段都包含内容。 如果他们不这样做,那么你会再次显示表格。 如果它们是正确的,那么您将显示成功消息。 您可以使用strlen简单地测试输入,以查看变量是否已填充长度> 0的变量。 或者你可以使用isset()。

  2. 你真的需要马上考虑安全问题。 我知道你刚刚学习了这个教程示例,但是如果你只是像你那样插入值,那么很容易让某人对你的数据库进行注入攻击。 您需要查看mysql_real_escape_string的手册页。

在插入数据库之前添加此项

if(isset($_POST['submit'])){
//then do the insert 
}

不是说安全......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM