簡體   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