php form তৈরি করুন বা লিখুন/টেক্সট ফাইল যোগ করুন




php project (5)

আপনার কোডে "wr" হিসাবে কোনও ফাইল খোলা মোড নেই:

fopen("logs.txt", "wr") 

পিএইচপি ফাইল খোলা মোড http://php.net/manual/en/function.fopen.php সি হিসাবে একই: http://www.cplusplus.com/reference/cstdio/fopen/

নিম্নলিখিত প্রধান খোলা মোডগুলি পড়ার জন্য "আর", লেখার জন্য "w" এবং যোগ করার জন্য "a" আছে, এবং আপনি তাদের একত্রিত করতে পারবেন না। আপনি আপডেটের জন্য "+" মত অন্যান্য সংশোধনকারী যোগ করতে পারেন, বাইনারি জন্য "বি"। নতুন সি স্ট্যান্ডার্ডটি একটি নতুন স্ট্যান্ডার্ড সাবসাইফাইফায়ার ("x") যোগ করে, যা পিএইচপি দ্বারা সমর্থিত, যেটি যেকোনো "w" স্পেসিফায়ারে যোগ করা যেতে পারে ("wx", "wbx", "w + x" বা "w + bx" তৈরি করতে) "/" WB + X ")। ফাইলটি বিদ্যমান থাকলে এটি ওভাররাইট করার পরিবর্তে এই সাবস্পুইসিয়ারটি ফাংশনটি ব্যর্থ হয়।

এছাড়া, পিএইচপি 5.2.6, 'সি' প্রধান খোলা মোড যোগ করা হয়েছে। আপনি 'a', 'r', 'w' দিয়ে 'c' একত্রিত করতে পারবেন না। 'C' শুধুমাত্র লেখার জন্য ফাইলটি খোলে। ফাইল উপস্থিত না থাকলে, এটি তৈরি করা হয়। যদি এটি বিদ্যমান থাকে, এটি নষ্ট হয় না ('ওয়া' এর বিপরীতে), এবং এই ফাংশনটির কল ব্যর্থ হয় (যেমন 'x' এর ক্ষেত্রে)। 'c +' ফাইলটি পড়ার এবং লেখার জন্য খুলুন; অন্যথায় এটি 'সি' হিসাবে একই আচরণ আছে।

অতিরিক্তভাবে, এবং পিএইচপি 7.1.2 এ 'ই' বিকল্পটি যুক্ত করা হয়েছে যা অন্যান্য মোডের সাথে মিলিত করা যেতে পারে। এটি খোলা ফাইল ডিস্ক্রিপ্টরের উপর বন্ধ-অন-অ্যাক্টিভ ফ্ল্যাগ সেট করে। পিওএসইসি -২008-এ কনফিগার করা পিএইচপি তে কেবলমাত্র উপলব্ধ।

সুতরাং, আপনি যেভাবে বর্ণনা করেছেন তার জন্য, সেরা ফাইল খোলা মোড 'a' হবে। এটি শুধুমাত্র লেখার জন্য ফাইল খোলে। এটি ফাইল শেষে পয়েন্টার স্থাপন করে। যদি ফাইলটি বিদ্যমান না হয়, এটি এটি তৈরি করার প্রচেষ্টা করে। এই মোডে, fseek () কোন প্রভাব আছে, লেখা সবসময় সংযুক্ত করা হয়।

আপনার যা দরকার তা এখানে উপরে দেওয়া হয়েছে:

fopen("logs.txt", "a") 

আমার একটি ওয়েবসাইট আছে যা প্রত্যেক সময় ব্যবহারকারী লগইন বা লগআউট করলে আমি এটি একটি পাঠ্য ফাইলে সংরক্ষণ করব।

আমার কোড তথ্য যোগ করার জন্য কাজ করে না অথবা যদি কোনও উপস্থিত থাকে তবে একটি টেক্সট ফাইল তৈরি করে .. এখানে নমুনা কোড

$myfile = fopen("logs.txt", "wr") or die("Unable to open file!");
$txt = "user id date";
fwrite($myfile, $txt);
fclose($myfile);

কিন্তু মনে হচ্ছে এটা আবার খুললে পরের লাইনে যুক্ত হবে না।

এছাড়াও। আমি মনে করি এটি একটি পরিস্থিতির মধ্যে একটি ত্রুটিও থাকবে যেমন ২ টি ব্যবহারকারী একই সময়ে লগইন করলে কি এটি পাঠ্য ফাইলটি খোলার এবং এটির পরে সংরক্ষণ করা প্রভাবিত করবে?


Answer #1

a মোড ব্যবহার করুন। এটা পরিশিষ্ট জন্য দাঁড়িয়েছে।

$myfile = fopen("logs.txt", "a") or die("Unable to open file!");
$txt = "user id date";
fwrite($myfile, "\n". $txt);
fclose($myfile);

Answer #2

এই কোডটি চেষ্টা করে দেখুন:

function logErr($data){
  $logPath = __DIR__. "/../logs/logs.txt";
  $mode = (!file_exists($logPath)) ? 'w':'a';
  $logfile = fopen($logPath, $mode);
  fwrite($logfile, "\r\n". $data);
  fclose($logfile);
}

আমি সবসময় এটি ভালো ব্যবহার করি, এবং এটি কাজ করে ...


Answer #3

কোডাইনিটারে আপনি FILE_APPEND পদ্ধতি ব্যবহার করতে পারেন

$logged_user_id = $this->session->userdata('user_id');
$insert_log = 'process => 'YOUR PROCESS STATUS TO LOG', user_id => '.$logged_user_id.',reg_at => '.date("d/m/Y h:i:sa");
$Dt = date('d-m-Y');    
file_put_contents(APPPATH."assets/logs/".$Dt."_log.txt", $insert_log.PHP_EOL , FILE_APPEND | LOCK_EX);

এই লগ তৈরি এবং দৈনন্দিন ভিত্তিতে তথ্য যোগ করা যাবে।


Answer #4

আপনি এটি OO উপায়, শুধু একটি বিকল্প এবং নমনীয় করতে পারেন:

class Logger {

    private
        $file,
        $timestamp;

    public function __construct($filename) {
        $this->file = $filename;
    }

    public function setTimestamp($format) {
        $this->timestamp = date($format)." » ";
    }

    public function putLog($insert) {
        if (isset($this->timestamp)) {
            file_put_contents($this->file, $this->timestamp.$insert."<br>", FILE_APPEND);
        } else {
            trigger_error("Timestamp not set", E_USER_ERROR);
        }
    }

    public function getLog() {
        $content = @file_get_contents($this->file);
        return $content;
    }

}

তারপরে এটি ব্যবহার করুন .. বলুন আপনার ব্যবহারকারীর নাম একটি সেশনে সংরক্ষিত আছে (আধা ছদ্ম কোড):

$log = new Logger("log.txt");
$log->setTimestamp("D M d 'y h.i A");

if (user logs in) {
    $log->putLog("Successful Login: ".$_SESSION["user_name"]);
}
if (user logs out) {
    $log->putLog("Logout: ".$_SESSION["user_name"]);
}

এই সঙ্গে আপনার লগ পরীক্ষা করুন:

$log->getLog();

ফলাফল ভালো:

Sun Jul 02 '17 05.45 PM » Successful Login: JohnDoe
Sun Jul 02 '17 05.46 PM » Logout: JohnDoe


github.com/thielicious/Logger





php