2014-01-27 30 views
0

嗨,我嘗試創建一個訂閱郵件列表小部件。它的工作類型,但在每次插入後不斷添加空行。我希望能夠讓用戶將他們的姓名和電子郵件地址添加到2個輸入中,然後單擊提交,然後將詳細信息保存到數據庫中,避免垃圾郵件和重複等。我的php表單不斷在mysql中複製行

這裏是我到目前爲止希望有人可以給我幾個指針非常新的PHP所以任何幫助表示讚賞謝謝!

<?php 
    // Connect to server and select database. 
    //mysql_connect("$subsc_hostname", "$subsc_username", "$subsc_password")or die("cannot connect"); 
    //mysql_select_db("$subsc_database")or die("cannot select DB"); 
    $mysqlconn= new PDO('mysql:dbname=' .$subsc_database . ';host=' . $subsc_hostname, $subsc_username, $subsc_password); 

    $subsc_name = $_POST['sub_FullName']; 
    $subsc_email = $_POST['sub_EmailAddress']; 

    // Insert data into mysql 
    $sql="INSERT INTO subscribers(subsc_name, subsc_email)VALUES('$subsc_name', '$subsc_email')"; 
    $result=mysql_query($sql); 

    // close connection 
    mysql_close(); 

    ?> 

    <form method="post" action=""> 
    <div class="form-group"> 
    <label>Full Name:</label> 
    <input class="form-control" type="text" name="sub_FullName" /> 
    <br> 
    <label>Email:</label> 
    <input class="form-control" type="text" name="sub_EmailAddress" /> 

     <div class="pull-right"> 
      <input type="submit" value="Subscribe" /> 
     </div> 

    </div> 
    </form> 
+2

在檢查用戶是否輸入了正確的電子郵件地址之前,您應該檢查用戶是否未嘗試對您的數據庫執行SQL注入。只要說... – Jivan

+0

sql =「'INSERT INTO subscribers VALUES('$ subsc_name','$ subsc_email');'只要表中只有兩個項目就行,大多數表都有一個主鍵。 –

+0

旁註:'ereg'和'mysql_ *'都是不推薦使用的函數。回到21世紀 –

回答

1

你可能想在你的文件移到最後}

} else { 
    mail($to, $subject, $message, $headers); 
    echo "<div class='alert alert-success alert-dismissable'><h4>Subscribed!</h4><p>Thanks $contact_name,<br /><br />you will start receiving emails via $contact_email very soon.</div>"; 

// FROM HERE 

    // Insert data into mysql 
    $sql="INSERT INTO subscribers(subsc_name, subsc_email)VALUES('$subsc_name', '$subsc_email')"; 
    $result=mysql_query($sql); 

// TO HERE 
    } 

爲了增加評論你的問題,你可能想看看輕量級框架,如Silex和數據庫抽象層,如Doctrine。使用這些工具,您可以極大地降低SQL注入的風險,並且無需手動編寫每個用戶提供的數據控制。

+0

感謝大家的建議,所以我已經剝離了一點,嘗試使用PDO,但可以使用它的幾個指針與我的舊連接字符串? – user3242538

+0

你可以看看mysqli_prepare:http://php.net/manual/en/mysqli.prepare.php。使用SQL注入保護查詢準備。請注意,您必須更新您的代碼使用mysqli函數而不是舊的mysql函數。 mysqli是PHP的最新MySQL實現,可以安全地在現代系統上使用。 – Biapy