পিএইচপি একটি স্থানীয় ফাইল একটি পংক্তি সংরক্ষণ করুন?

এই পোস্টে আমার গুরু সিরিজের দ্বিতীয় এক.

আমার থিম Tweaker প্রোগ্রামিং যদিও, আমি এই সমস্যার জুড়ে এসেছিল. আমি আমার পিএইচপি প্রোগ্রামের মধ্যে আমার সার্ভারে একটি স্ট্রিং ছিল (tweaked স্টাইলশীট, আসলে), এবং আমি ব্যবহারকারী একটি ফাইল তার কম্পিউটারে এটি সংরক্ষণ বিকল্প দিতে চেয়েছিলেন. আমি এই একটি সাধারণ সমস্যা ছিল করেছি হবে, এবং সব সাধারণ সমস্যার Googling দ্বারা সমাধান করা যেতে পারে. কিন্তু, দেখ এবং দেখ, আমি শুধু একটি সন্তোষজনক সমাধান খুঁজে পাইনি. আমি আমার নিজের পাওয়া, এবং আমি এটা এখানে শেয়ার করে চিন্তা, ভবিষ্যতের সব Google বিশেষজ্ঞদের সুবিধার জন্য এখনো যাতায়াত করতে.

আমরা সমাধান ঢোকা আগে, এর সমস্যা কি বুঝতে দিন. সমস্যা দুটি কম্পিউটারের মধ্যে শ্রম বিভাজন হয় — এক সার্ভার, যেখানে আপনার ওয়ার্ডপ্রেস ও পিএইচপি দৌড়াচ্ছে; অন্যান্য যেখানে দেখার স্থান গ্রহণ করা হয় ক্লায়েন্টের কম্পিউটার. আমরা বলছি স্ট্রিং সার্ভারে হয়. আমরা ক্লায়েন্টের কম্পিউটারে একটি ফাইল-এ সংরক্ষণ করতে চাই. এটা একমাত্র উপায় একটি HTML উত্তর হিসেবে স্ট্রিং পরিবেশন করে থাকে.

এক নজরে, এই একটি প্রধান সমস্যা মনে হচ্ছে না. সব পরে, সার্ভার নিয়মিত গ্রাহকদের স্ট্রিং এবং তথ্য পাঠাতে — যে আমরা ব্রাউজারে কিছু দেখতে কিভাবে, আপনি কি পড়া হয় সহ. এটা পংক্তি সংরক্ষণ করতে চায় যে ঠিক কোন পিএইচপি প্রোগ্রাম ছিল যদি, এটা একটা সমস্যা হবে না. আপনি শুধু সার্ভারে একটি ফাইল স্ট্রিং ডাম্প এবং ফাইল পরিবেশন করা যেতে পারে.

আপনি সমগ্র বিশ্বের আপনার সার্ভারে ফাইল করতে স্ট্রিং ডাম্পিং একটি উপায় দিতে চান না কিন্তু যদি আপনি কি করবেন? ভাল, আপনি ভালো কিছু করতে পারে:

<?php
header('Content-Disposition: attachment; filename="style.css"');
header("Content-Transfer-Encoding: ascii");
header('Expires: 0');
header('Pragma: no-cache');
print $stylestr ;
?>

সুতরাং, শুধু স্ট্রিং $ stylestr নির্ণয় করে যে আপনার foo.php মধ্যে এই কোড করা এবং আপনি করা হয়. কিন্তু আমাদের সমস্যা আমরা ওয়ার্ডপ্রেস প্লাগইন কাঠামোর মধ্যে কাজ করছে যে হয়, এবং হেডার ব্যবহার করতে পারবেন না() কল. আপনি যে কাজ করার চেষ্টা করা হলে, আপনি যে হেডার ইতিমধ্যে শহরবাসী সম্পন্ন করা হয় বলছে ত্রুটি বার্তা পাবেন. এই সমস্যার জন্য, আমি ব্যবহার যে প্লাগিন এক প্রতিভাধর সমাধান পাওয়া. যা এক ভুলে গেছেন, কিন্তু আমি এটা একটি সাধারণ কৌশল অনুমান. সমাধান একটি খালি আইফ্রেম সংজ্ঞায়িত এবং পিএইচপি ফাংশন লিখতে হবে কি তার উৎস সেট করতে হয়. আইফ্রেম একটি পূর্ণ এইচটিএমএল সোর্স আশা যেহেতু, আপনি অনুমতি দেওয়া হয় (আসলে, কৃতজ্ঞ) হেডার দিতে() নির্দেশ. কোড স্নিপেট ভালো কিছু দেখায়:

<iframe id="saveCSS" src="about:blank" style="visibility:hidden;border:none;height:1em;width:1px;"></iframe>
<script type="text/javascript">
var fram = document.getElementById("saveCSS");
<?php echo 'fram.src = "' . $styleurl .'"' ;
?>

এখন প্রশ্ন হল, উৎস কি হওয়া উচিত? অর্থাৎ, $ styleurl কি? পরিষ্কারভাবে, এটা আপনার সার্ভারে একটি স্ট্যাটিক ফাইল হতে যাচ্ছে না. আর এই পোস্টের উদ্দেশ্য এটা সব সময়ে সার্ভারে একটি ফাইল হতে হবে তা নয় যে প্রদর্শন করা হয়. এটি একটি দুই অংশ উত্তর. আপনি আপনার ওয়ার্ডপ্রেস কাঠামোর মধ্যে কাজ করছে যে মনে আছে, এবং আপনি একা দাড়িয়ে পিএইচপি ফাইল করতে পারবেন না. আপনি কি করতে পারেন একমাত্র জিনিস বিদ্যমান পিএইচপি ফাইল আর্গুমেন্ট যোগ হয়, অথবা প্লাগিন আপনার তৈরিকৃত. আপনাকে প্রথমে না তাই নিম্নরূপ একটি বাটন জমা:

<form method="post" action="<?php echo $_SERVER["REQUEST_URI"]?>">
<div class="submit">
<input type="submit" name="saveCSS" title="Download the tweaked stylesheet to your computer" value="Download Stylesheet" />
</div>

বাটন নাম অ্যাট্রিবিউট উল্লেখ্য যে “saveCSS.” এখন, কোড অফ অংশে যে জমা হ্যান্ডলগুলি, আপনি ভালো কিছু করতে:

<?php
if (isset($_POST['saveCSS']))
$styleurl = get_option('siteurl') . '/' . "/wp-admin/themes.php?page=theme-tweaker.php&save" ;

?>

এই কমান্ডের সাহায্যে আপনি আপনার আইফ্রেম উৎস হিসেবে দিতে হবে $ styleurl হয়, অগ্রবর্তী. এটা আপনার pluging পৃষ্ঠা URL হিসাবে একই উল্লেখ্য, আপনি যোগ পরিচালিত ছাড়া “?রক্ষা” এটা শেষে. পরের কৌতুক যে যুক্তি এবং ক্যাপচার এটা হ্যান্ডেল করতে হয়. যে জন্য, আপনি ওয়ার্ডপ্রেস API 'ফাংশন ব্যবহার, add_action হিসাবে:

<?php
if (isset($_GET['save'] ))
add_action('init', array(&$thmTwk, 'saveCSS'));
else
remove_action('init', array(&$thmTwk, 'saveCSS'));
?>

এটি আপনার প্লাগইন এর init অংশ একটি ফাংশন saveCSS যোগ. এখন আপনি এই ফাংশন সংজ্ঞায়িত আছে:

<?php
function saveCSS() {
header('Content-Disposition: attachment; filename="style.css"');
header("Content-Transfer-Encoding: ascii");
header('Expires: 0');
header('Pragma: no-cache');
$stylestr = "Whatever string you want to save";
ob_start() ;
print $stylestr ;
ob_end_flush() ;
die() ;
}
?>

এখন আমরা প্রায় বাড়িতে বিনামূল্যে. বুঝতে কেবল জিনিস আপনি যে হয় করা ডাই প্রয়োজন(). আপনার ফাংশন মরা না হলে, এটা আপনার সংরক্ষণ ফাইলে ওয়ার্ডপ্রেস উত্পন্ন স্টাফ বাকি আউট বমি হবে, আপনার স্ট্রিং $ stylestr এটি সংযোজন.

এটা জটিল চেহারা হতে পারে. ভাল, আমি এটা একটু জটিল অনুমান, কিন্তু আপনি তা বাস্তবায়ন এবং এটা চলমান পেতে একবার, আপনি পারেন (এবং কি) এটি সম্পর্কে ভুলবেন. অন্তত, আমি কি. আমি এটা এখানে পোস্ট করা কেন, তাই পরবর্তী সময় আমি প্রয়োজন যে এটা করতে, আমি এটি খোঁজা করতে পারেন.

মন্তব্য