2016-11-22 41 views
0

我在這個網站上看到很多類似的問題,但我還沒有找到我的代碼的解決方案。我確實使用if(isset($ _ POST ['submit'])){}和if語句來配合它來試圖阻止我的腳本插入空的表單字段數據,但它還沒有工作。只是一張紙條;我意識到我的代碼中存在安全漏洞。我只是試圖保持它簡單,所以它會更容易爲大家幫幫我:)下面是我有:MySQL和PHP代碼允許空的表單字段數據

<body> 

    <?php 

    if (isset($_POST['submit'])) { 

    $dbc = mysqli_connect('localhost', 'username', 'password', 'bcd_email_app') 
    or die('Error connecting to MySQL server'); 

    $query = "INSERT INTO email_subscribers (name, username, email)" . 
    "VALUES ('$name', '$username', '$email')"; 

    mysqli_query($dbc, $query) 
    or die('Error querying database'); 

    echo 'Thanks for subscribing '. $username .'!!<br />'; 
    echo '<a href="index.php">Go Back</a>'; 

    mysqli_close($dbc); 

    $name = $_POST['name']; 
    $username = $_POST['username']; 
    $email = $_POST['email']; 

    $output_form = false; 

    //checking that all form fields have been filled out and if not displaying the form with sticky data 
    if (empty($name) && (empty($username) && (empty($email)))) { 
     echo 'Please enter your information for all fields. <br />'; 
     $output_form = true; 
    } 
    if (empty($name) && (!empty($username) && (!empty($email)))) { 
     echo 'Please enter your name. <br />'; 
     $output_form = true; 
    } 
    if (!empty($name) && (empty($username) && (!empty($email)))) { 
     echo 'Please enter your username. <br />'; 
     $output_form = true; 
    } 
    if (!empty($name) && (!empty($username) && (empty($email)))) { 
     echo 'Please enter your email address. <br />'; 
     $output_form = true; 
    } 
    if (empty($name) && (empty($username) && (!empty($email)))) { 
     echo 'Please enter your name and username. <br />'; 
     $output_form = true; 
    } 
    if (empty($name) && (!empty($username) && (empty($email)))) { 
     echo 'Please enter your name and email address. <br />'; 
     $output_form = true; 
    } 
    if (!empty($name) && (empty($username) && (empty($email)))) { 
     echo 'Please enter your username and email. <br />'; 
     $output_form = true; 
    } 
} else { 
    $output_form = true; 
} 
if ($output_form) { 

    ?> 

形式標記在這裏

</body> 

我也想說,如果命名& & &名電子郵件&不空這樣的:

if (isset($_POST['submit'])) && (!empty($_POST['name'])) && (!empty($_POST['username'])) && (!empty($_POST['email']))) {...} 

無線提交後,這沒有做任何事情。有解決方案嗎?我完全錯了嗎?大聲笑

在此先感謝您的幫助!

+0

爲什麼你不需要輸入字段? 此外表格標記丟失? – Mitch

+0

''你已經完成 – Irvin

+0

驗證客戶端的輸入字段 – user3040610

回答

0

你怎麼能指望,如果你將其插入到數據庫後進行驗證,以不插空的數據?

首先驗證數據,並在數據爲空時顯示錯誤,並且只有在驗證成功時纔將其插入數據庫。

+1

這實際上非常有幫助!我最終創建了另一個,如果在空字段檢查結束時進行檢查,以確保沒有任何字段爲空,並且沒有任何字段連接到數據庫。似乎到目前爲止工作很好。謝謝!! – artwired

0

我使用strlen

if (strlen($_POST['name']) > 0 and strlen($_POST['email']) > 0){ 
    //do stuff 
} 

if (strlen($_POST['name']) < 1){ 
    //do other stuff 
} 
+0

以及爲什麼它更好然後是空的? – 2oppin

+0

我遇到空白不匹配的情況。我不記得確切的情況。我只是不喜歡這個想法,因爲var被設置,它只是設置爲無。它可能是相同的使用空的,我剛剛發現更多的成功與strlen – bart2puck

+0

考慮這一點:strlen(0) ,我在說空虛不isset。 – 2oppin

相關問題