নমস্কার! শুভ অপরাহ্ন! স্বাগত জানাচ্ছি ওয়ার্ডপ্রেস নিয়ে আজকের ব্লগে। আজ আমরা শিখব ওয়ার্ডপ্রেসে ডেটা Sanitizing কিভাবে করতে হয়। দীর্ঘ বিরতির পর ওয়ার্ডপ্রেস ডেভেলপমেন্ট নিয়ে এটা প্রথম ব্লগ এবং নিঃসন্দেহে আজকের টপিক অনেক গুরুত্বপূর্ণ।
আপনি যখন ওয়ার্ডপ্রেস রিপোজিটোরি কিংবা বিভিন্ন মার্কেটপ্লেস টার্গেট করে থিম এবং প্লাগিন ডেভেলপমেন্ট করবেন তখন ইউজারের থেকে প্রাপ্ত ডেটা ডেটাবেজে সংরক্ষণ এবং তা পরবর্তীতে ইউজারকে প্রদর্শন উভয় ব্যাপারেই আপনাকে সর্তক থাকতে হবে।
ডেটা Sanitizing এর জন্য ওয়ার্ডপ্রেসের নেটিভ কিছু ফাংশন রয়েছে। আজ আমরা এগুলার ব্যবহার নিয়ে আলোচনা করব। তাহলে চলুন মূল টপিকে প্রবেশ করা যাক।
Sanitizing কি?
স্বাভাবিক ভাবেই প্রশ্ন আসতে পারে Sanitizing কি। সাধারণত আমরা যখন এইচটিএমএল ফর্ম কিংবা অন্যকোন উপায়ে ইউজারের থেকে ডেটা ইনপুট নিই তখন ইউজার যে সব সময় আপনার কাঙ্খিত ডেটা ইনপুট করবে এমন নয়। হ্যাকার থেকে শুরু করে যেকেউ এক্সিকিউটেবল কোয়েরি ইনপুট করে আপনার ডেটাবেজ এক্সেস সহ পুরো সাইট হ্যাক করে ফেলতে পারে। তাই ইউজারের থেকে প্রাপ্ত ডেটা ডেটাবেজে যোগ করার আগে তা Sanitizing এর মাধ্যমে পরিস্কার পরিছন্ন করে নেওয়া হয়।
যেমন আপনি যদি ওয়ার্ডপ্রেস ড্যাসবোর্ড থেকে উইজেড টাইটেল লেখার সময় কোন এইচটিএম ট্যাগ ইউজ করেন তাহলে দেখবেন টাইটেল সেভ হবার আগেই অটোমেটিকালি টেক্স ব্যাতিত বাকি সব ট্যাগ রিমুভ হয়ে গিয়েছে।
ওয়ার্ডপ্রেসে ডেটা Sanitizing
একেক ধরণের ডেটা sanitize করার জন্য ওয়ার্ডপ্রেস আলাদা আলাদা ফাংশন রয়েছে। চলুন অতি প্রয়োজনীয় কয়েকটি ফাংশনের ব্যবহার দেখা যাক।
sanitize_email()
ইমেইল এড্রেসে ব্যবহার করা যাবেনা এমন সব ক্যারেক্টার এই ফাংশন রিমুভ করে দেয়। নিচের কোডটুকু লক্ষ্য করুন।
<?php echo sanitize_email("skjoy bd@gmail.com"); ?>
উপরের কোডে আমরা যে ইমেইল এড্রেস দিয়েছি তা কিন্তু ভ্যালিড না। কারণ skjoy এবং bd এর মাঝখানে একটা হোয়াইট স্পেস রয়েছে। এই কোড রান করালে আউটপুট আসবে
// Output
“skjoybd@gmail.com”
sanitize_email() ফাংশন দিয়ে ইমেইল এড্রেস টা ফিল্টার করাবার পর অটোমেটিকালি কিন্তু হোয়াইট স্পেস টা রিমুভ হয়ে গেল। আশাকরি স্যানিটাইজ কেন করা প্রয়োজন বুঝতে পেরেছেন।
sanitize_file_name()
ফাইলের নামে যদি এক কোন ক্যারেক্টার থাকে যা ফাইল প্রসেসিং সহ নানান কাজে সমস্যা তৈরী করতে পারে তাহলে তা sanitize_file_name() ফাংশনের মাধ্যমে রিমুভ করা যায়। ওয়ার্ডপ্রেসের মিডিয়া আপলোডার এই ফাংশন ব্যবহার করে ফাইলের নাম স্যানিটাইজ করবার জন্য। কোড সহ উদাহরণঃ
<?php echo sanitize_file_name("_profile pic--1_.png"); ?>
উপরের কোডটুকু রান করালে আউটপুট আসবে।
// Output
“profile-pic-1_.png”
পরিবর্তনটুকু লক্ষ্য করবেন। আমাদের ইনপুট দেওয়া ফাইলের নামের প্রথমে একটা আন্ডারস্কোর ছিল। তারপর একটা হোয়াইট স্পেস এবং দুইটা ড্যাস। অথচ স্যানিটাইজ করার পর আউটপুটে প্রথম থেকে আন্ডারস্কোর রিমুভ হয়ে হয়েছে, হোয়াইট স্পেসের স্থলে একটি ড্যাস দিয়ে পরিবর্তিত হয়েছে এবং দুইটা ড্যাস থেকে একটা বাদ দিয়ে দেওয়া হয়েছে।
sanitize_key()
ওয়ার্ডপ্রেসের অপশন, মেটাডেটা সহ নানান স্থানে KEY ব্যবহার করা হয়। যার কম্বিনেশন হল ছোট হাতের অক্ষর, ড্যাস এবং আন্ডারস্কোর। sanitize_key() ফাংশন ব্যবহার করে KEY টাইপের ভ্যালুকে স্যানিটাইজ করা যায়। কোড সহ উদাহরণঃ
<?php echo sanitize_key("https://Skjoy.info"); ?>
উপরের কোডটুকু রান করালে আউটপুট আসবে।
// Output
“httpsskjoyinfo”
এখানে sanitize_key() ফাংশন আমাদের দেওয়া ইনপুটের মধ্যে থাকা বড় হাতের অক্ষরকে ছোট হাতের অক্ষরে পরিবর্তন এবং বাকি সব ইনভ্যালিড ক্যারেক্টারকে রিমুভ করে দিয়েছে।
sanitize_text_field()
UTF-8 ক্যারেক্টার সেট এর অর্ন্তগত নয় এমন সব ক্যারেক্টারকে এই ফাংশন রিমুভ করে। এছাড়া ট্যাব, লাইন ব্রেক, অতিরিক্ত হোয়াইট স্পেস রিমুভ সহ স্পেশাল ট্যাগকে বৈধ্য ক্যারেক্টারে এনকোড করে। কোড সহ উদাহরণঃ
<?php echo sanitize_text_field("<b>Bold<</b>"); ?>
উপরের কোডটুকু রান করালে আউটপুট আসবে।
// Output
“Bold<”
ওয়ার্ডপ্রেসে উইজেড টাইটেল সানিটাইজের জন্য এই ফাংশন ব্যবহার করে।
sanitize_title()
ওয়ার্ডপ্রসের পোষ্ট টাইটেল স্যানিটাইজের জন্য এই ফাংশন ব্যবহার করা হয়। এটি স্ট্রিং ডেটা থেকে পিএইচপি এবং এইচটিএমএল ট্যাগ রিমুভ করে এবং হোয়াইট স্পেসকে ড্যাসে পরিবর্তন করে দেয়। কোড সহ উদাহরণঃ
<?php echo sanitize_title("Sanítizing, Escaping and Validating Data in WordPress"); ?>
কোডটুকু রান করালে আউটপুট আসবে।
“sanitizing-escaping-and-validating-data-in-wordpress”
sanitize_title() ফাংশন এখানে í ক্যারেক্টারকে i তে রুপান্তর করে দিয়েছে। এছাড়া বড় হাতের অক্ষরকে ছোট হাতের অক্ষর এবং হোয়াইট স্পেসকে ড্যাসে পরিবর্তিত করেছে। জেনে রাখা ভাল, টাইটেল স্যানিসাইজ করতে এই ফাংশন ব্যবহার হয়না। এটি ব্যবহার হয় টাইটেল থেকে স্লাগ জেনারেট করবার জন্য। টাইটেল স্যানিটাইজের জন্য sanitize_text_field() ফাংশন ব্যবহার করতে হবে।
ওয়ার্ডপ্রেসে ডেটা Sanitizing নিয়ে এটায় ছিল আজকের ব্লগ। যেকোন সমস্যায় জানাতে ভুলবেন না। ওয়ার্ডপ্রেস নিয়ে আরো বিস্তারিত লেখা রয়েছে ওয়ার্ডপ্রেস বিভাগে।
আজ এপর্যন্ত। ভাল থাকবেন। কথা হবে পরবর্তী ব্লগে। ফেসবুকে আমাকে পাবেন এখানে। হ্যাপি কোডিং।