2017-09-15 156 views
0

我目前正在研究一些網絡表單。 這個表格應該將收集的數據發送到web服務器上的txt文件,但不知何故,它給了我錯誤。通過PHP發送HTML表單數據到網絡服務器

形式:

<form action="my_webserver_path_to_script.php" name="form" method="post"> 
    <div> 
     <label for="name">Name</label> 
     <input name="name" type="text" id="name" placeholder="Your Name" required/> 
    </div> 
    <div> 
     <label for="city">City</label> 
     <input name="city" type="text" id="city" placeholder="Where do you live?" required/> 
    </div> 
    <div> 
     <label for="sex">Sex</label> 
     <select name="sex" id="sex" required> 
      <option value="" selected disabled hidden>Your sex</option> 
      <option value="man">Man</option> 
      <option value="woman">Woman</option> 
     </select> 
    </div> 
    <div style="margin-top: 30px; text-align: center;"> 
     <input class="button" type="submit" value="Join Us!"/> 
    </div> 
</form> 

腳本:

<?php 
    if(isset($_POST['name']) && isset($_POST['city']) && isset($_POST['sex'])) { 
     $data = $_POST['name'] . '-' . $_POST['city'] . '-' . $_POST['sex'] . "\n"; 
     $ret = file_put_contents('my_webserver_path_to_data.txt', $data, FILE_APPEND | LOCK_EX); 
     if($ret === false) { 
      die('There was an error writing this file'); 
      } 
      else { 
      echo "$ret bytes written to file"; 
     } 
    } 
    else { 
     die('no post data to process'); 
     } 
?> 

當我填寫的所有字段,然後點擊提交,跳轉到PHP地址,並打印「時出錯寫這個文件」。
我已閱讀:questions/35443812questions/14998961
通常,我不會在16:00和08:00之間作出迴應。
在此先感謝!

+0

數據是否寫入您的文件?也請確保您的.txt文件路徑正確 –

+1

顯示此錯誤是因爲您的if條件失敗:if($ ret === false)因此請檢查文件是否可寫 –

+0

不可以,數據不會寫入文件。路徑是100%正確的。 – Rahtid

回答

0

只需輸入php $ name = $ _POST ['name']; $ city = $ _POST ['city']; $ sex = $ _POST ['sex']; 。如果你輸入echo $ name;您可以看到數據

2

「文件寫入錯誤」主要是由託管提供程序中的權限設置不正確引起的。可能,您必須設置775權限才能寫入文件。此鏈接可能對您有用https://unix.stackexchange.com/questions/35711/giving-php-permission-to-write-to-files-and-folders

關於您的PHP代碼。我的建議是提高線#1與後續代碼:

<?php 
 
    if (isset($_POST['submit'])) { 
 
    } 
 
?>

問候, 埃德。

+0

我已經考慮過許可問題,但直到星期一才能檢查。你的意思是我應該用發送的行縮寫整個腳本? – Rahtid

+0

它*可以發送表單,而不需要他需要的所有輸入。明確檢查他需要什麼更好。雖然你可以使它更清潔一些:if(isset($ _ POST ['name'],$ _POST ['city'],$ _POST ['sex'])){' – ishegg

+0

所有的2個輸入,並選擇是必要的。我改變了你建議的路線。 – Rahtid

相關問題