2013-02-21 17 views
11

पर PHP लिखने की फ़ाइल मैंने इस साइट के आसपास उत्तर के लिए खोज की है लेकिन कोई भी नहीं मिला।इनपुट से txt

मेरे पास एक फॉर्म है और मैं एक txt फ़ाइल में लिखे गए इनपुट की सामग्री प्राप्त करना चाहता हूं। इसे सरल बनाने के लिए मैंने बस एक साधारण रूप और एक स्क्रिप्ट लिखी लेकिन यह मुझे एक खाली पृष्ठ प्राप्त करता रहता है। यहाँ मैं

<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <form> 
     <form action="myprocessingscript.php" method="post"> 
     <input name="field1" type="text" /> 
     <input name="field2" type="text" /> 
     <input type="submit" name="submit" value="Save Data"> 
    </form> 
    <a href='data.txt'>Text file</a> 
</body> 

क्या मिल गया है और यहाँ मेरी PHP फ़ाइल

<?php 
$txt = "data.txt"; 
$fh = fopen($txt, 'w+'); 
if (isset($_POST['field1']) && isset($_POST['field2'])) { // check if both fields are set 
    $txt=$_POST['field1'].' - '.$_POST['field2']; 
    file_put_contents('data.txt',$txt."\n",FILE_APPEND); // log to data.txt 
    exit(); 
} 
    fwrite($fh,$txt); // Write information to the file 
    fclose($fh); // Close the file 
    ?> 
+1

करता है 'myprocessingscript.php' किसी भी आगे उत्पादन का उत्पादन? यदि आपका दूसरा स्निपेट पूरी PHP स्क्रिप्ट है तो एक रिक्त पृष्ठ वह है जो आपको प्राप्त करना चाहिए क्योंकि आप कोई आउटपुट नहीं बना रहे हैं। – acme

+0

यह भी सामान्य है कि आपको एक खाली पृष्ठ मिलता है, आप क्लाइंट को कुछ भी 'echo() 'ing नहीं कर रहे हैं। – Floby

उत्तर

33

आपका प्रपत्र इस तरह दिखना चाहिए:

<form action="myprocessingscript.php" method="POST"> 
    <input name="field1" type="text" /> 
    <input name="field2" type="text" /> 
    <input type="submit" name="submit" value="Save Data"> 
</form> 

और PHP

<?php 
if(isset($_POST['field1']) && isset($_POST['field2'])) { 
    $data = $_POST['field1'] . '-' . $_POST['field2'] . "\n"; 
    $ret = file_put_contents('/tmp/mydata.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'); 
} 

मैं /tmp/mydata.txt को पत्र लिखा है क्योंकि इस तरह से मैं अब बिल्कुल यह कहाँ है। data.txt का उपयोग करके उस फ़ाइल को वर्तमान कार्य निर्देशिका में लिखता है जिसे मैं आपके उदाहरण में कुछ भी नहीं जानता।

file_put_contents आपके लिए फाइलें खोलता है, लिखता है और बंद करता है। इसके साथ गड़बड़ मत करो।

अतिरिक्त पठन: file_put_contents

+0

मैंने इसे वापस 'data.txt' में बदल दिया है, लेकिन शेष यह एक साझा होस्ट पर – user2094841

+0

है, जहां आपके पास पहुंच नहीं है/tmp, आप mydata.txt कहां रखेंगे?मेरी निर्देशिका संरचना ~/www-root/ – cryptic0

+0

वास्तव में आपके द्वारा बिताए गए समय की सराहना करते हैं, फ्लॉबी। यह वास्तव में सुरुचिपूर्ण समाधान है और मुझे तीसरे पक्ष के फॉर्म प्रोसेसर द्वारा आवश्यक स्क्रिप्ट की एक टन को कुचलने की इजाजत दी गई है जैसे वर्डप्रेस प्लगइन्स के साथ उपलब्ध हैं। :) – Nathan

5

समस्या है आप अतिरिक्त <form> आप की वजह से कर रहे हैं, जो आपके डेटा GET विधि में चला जाता है, और आप में POST का उपयोग कर डेटा तक पहुंच रहे हैं।

<body> 
<!--<form>--> 
    <form action="myprocessingscript.php" method="POST"> 
+1

आपकी ईगल आंख के लिए +1: डी – acme

+0

@acme आपका स्वागत है। :) –

0

सम्भावित समाधान:

<?php 
$txt = "data.txt"; 
if (isset($_POST['field1']) && isset($_POST['field2'])) { // check if both fields are set 
    $fh = fopen($txt, 'a'); 
    $txt=$_POST['field1'].' - '.$_POST['field2']; 
    fwrite($fh,$txt); // Write information to the file 
    fclose($fh); // Close the file 
} 
?> 

आप से पहले करीब डी फ़ाइल स्क्रिप्ट को बंद किया गया था।

0

यदि आप file_put_contents का उपयोग करते हैं तो आपको fopen -> fwrite -> fclose करने की आवश्यकता नहीं है, file_put_contents आपके लिए यह सब कुछ करता है। आपको यह भी जांचना चाहिए कि क्या वेबसर्वर निर्देशिका में लिखने का अधिकार है जहां आप अपनी "data.txt" फ़ाइल लिखने का प्रयास कर रहे हैं।

आपके PHP संस्करण (यदि यह पुराना है) के आधार पर आपके पास file_get/put_contents फ़ंक्शन नहीं हो सकते हैं। जब आप स्क्रिप्ट निष्पादित करते हैं तो कोई त्रुटि दिखाई देने पर यह देखने के लिए अपने वेबसर्वर लॉग की जांच करें।

+0

मैंने देखा कि यह काम करता है अगर मैं इसे सर्वर पर व्यवस्थापक के साथ चलाता हूं, तो मैं अधिकार कैसे बदल सकता हूं? – user2094841

+0

यदि आपका वेबसर्वर उदाहरण के लिए अपाचे है: 'chown -R apache: apache dir_where_you_create_the_file' – Naryl

संबंधित मुद्दे