চলুন পিএইচপি শেখা যাক ধাপে ধাপে [পর্ব-১৫] :: md5 function

চলুন পিএইচপি শেখা যাক ধাপে ধাপে

php

হ্যালো টিউনার ভাইয়ারা সবাই কেমন আছেন সবাই??? আমি ভাল নেই। এই জিপি ইন্টারনেট দিয়ে ইন্টারনেট চালালে কি ভাল থাকা যায়?? ইন্টারনেট এর স্পিড দেখে আমার মাথা ঘুরে যাচ্ছে :), আর অনেক দিন পর টিউন টা করার জন্য আমি দুঃখিত। পড়ার এত পরিমান চাপ যে আমি বলে বোঝাতে পারবনা। আর আমার মা আমার ল্যাপটপ টা কোথায় যেন লুকিয়ে রেখেছিলেন যাতে আমি খুজে না পাই। অনেক অনেক বার চাইলাম তারপর দিল মাত্র ১ঘন্টার জন্য 🙁 , আমার কথা বাদ দিন, আপনাদের প্র্যাকটিস কেমন হচ্ছে??? আমি গতপর্বে একটা পরীক্ষা দেবার জন্য প্রশ্ন দিয়েছিলাম আপনাদের জন্য। কেন জানিনা আপনারা কেউ আমার পরীক্ষার উত্তর দেননি 🙁
আমি খুব মর্মাহত আপনাদের এরকম পরীক্ষা না দেয়াতে :(, মানে বিনা পরীক্ষায় আপনারা সবাই ফেল :D। তাহলে পরীক্ষার উত্তর দিয়েই আমি আজকের টিউনটা শুরু করি।
আমি আপনাদের এমন একটা কোড লিখতে বলেছিলাম যেখানে ১ জন ইউজারের লগিন ইনফরমেশন থাকবে। অর্থাৎ একটা ইউজারনেম এবং একটা পাসওয়ার্ড থাকে। আর একটা ফরম থাকবে যেখানে ইউজার তার ইনফরমেশন গুলো দিবে। আর লগিন করা মাত্র সেখানে দেখাবে "Thanx for login".আর ভুল করলে দেখাবে Password wrong। পাসোয়ার্ড না লিখলে দেখাবে Please write your username & password। তাহলে প্রোগ্রাম টা কেমন হবে?? আমি নিচে প্রোগ্রাম টা লিখে দিলাম।

<form action="tutorial.php" method="POST">
	Userame: <input type="text" name="username"><br />
	Password: <input type="password" name="password"><br />
	<input type="submit" value="login">
</form>

<?php
	$username = 'techtunes';
	$password = '12345';

	if(isset($_POST['username'])&& isset($_POST['password'])&& !empty($_POST['username'])&& !empty($_POST['password'])){
		if($_POST['username']==$username && $_POST['password']==$password){
		echo'Thanx for login';
		}else{echo'Password wrong';}
	}
	else{
	echo 'Please write your username & password';
	}
?>

প্রোগ্রাম টা রান করান এবং চেষ্টা করুন লগিন করার। আমি ইউজারনেম হিসাবে দিয়েছি techtunes আর পাসওয়ার্ড হিসাবে দিয়েছি 12345, এখন গবেষনা শুরু করেদিন 🙂
.
.
.
.

আজ আমরা যে বিষয় টা শিখব সেটা হল function। আমি function নিয়ে অলরেডি একটা পোষ্ট করে ফেলেছি। কিন্তু অনেকে অভিযোগ করেছেন যে এটা তারা বুঝতে পারেন নি। তাই function চেনার বা লিখার সহজ উপাই আপনাদের শিখিয়ে দিই। function এর ফরমেট টা হবে ঠিক এরকমঃ function()। মানে আমরা যেই function ব্যবহার করব সেই function এর নাম তারপর (), আর ব্র্যাকেটের মধ্যে লিখব function এর যে কাজ করতে হবে সেটা। এখনো যদি বুঝতে না পারেন তাহলে আমার সাথেই থাকুন আর আমার প্রত্যেকটা টিউন ফলো করুন। তাহলে ক্লিয়ার হয়ে যাবেন।

আজ আমরা নতুন যে function টা শিখব সেটা হল md5 function। আসলে এইটা আমারদের অনেক অনেক কাজে লাগবে। তবে আমার মনে হয় সবচেয়ে বেশি কাজে লাগবে আমাদের ওয়েব সাইটের সিকিউরিটিতে। চলুন এর সম্পর্কে ধারনে নেয়া যাক।

মনে করুন অনেক কষ্ট করে একটা ভাল মানের ওয়েব সাইট বানালেন। ওয়েব সাইটটা ফেসবুকের মত। মানে ইউজারের অনেক তথ্য আপনার ডাটাবেজে থাকবে। মনে করুন আপনার ডাটাবেজে ১কোটি ইউজারনেম আর পাসওয়ার্ড আছে। এখন কোন এক হ্যাকার আপনার ওয়েব সার্ভার হ্যাক করল। যখন আপনার ডাটাবেজ চেক করবে তখন তারা আপনার সংরক্ষিত সকল ডাটা তারা দেখতে পাবে। যেমন তারা আপনাদের ইউজারনেম আপনাদের পাসওয়ার্ড সব তারা জেনে যাবে। তাহলে কি হবে ভাবতে পারছেন??? আপনার ইউজার দিন দিন বাড়ার বদলে কমে যাবে। ইউজার মনে করবে আপনার ওয়েব সাইটটা একেবারে ফালতু। কারন আপনার ওয়েব সাইটের একাউন্টের সকল পাসওয়ার্ড অন্য কেউ জেনে গেছে।

তাহলে এরকম সমস্যা নিরাসনে আপনি কি পদক্ষেপ নিতে পারেন??? হ্যা আমি আজ আপনাদের এমন একটা বুদ্ধি দিব যেটা তে এরকম হ্যাক হওয়া থেকে বাঁচতে পারবেন। আপনার পাসওয়ার্ড আর অন্যান্য ইনফরমেশন গুলোকে আপনার ডাটাবেজে সরাসরি স্টোর না করে অন্যরকম ভাবে স্টোর করে রাখা গেলে হ্যাকার ভাইয়ারা কিন্তু আপনার স্টোর করা ইনফরমেশন গুলো বুঝতে পারবেনা। আর এই অন্যরকম করে ব্যবহার করার জন্য আপনাদের যেই function টা ব্যবহার করতে হবে সেটা হল md5 function। হয়ত আপনাদের বুঝাতে পেরেছি। আরও ভাল ভাবে বুঝানোর জন্য আপনাদের একটা উদাহরন দেয়া যাক। মনে করুন আপনার পাসওয়ার্ড 12345, যদি পাসওয়ার্ড ডাটাবেজে 12345 লিখা থাকে তাহলে আপনার ডাটা বেজ হ্যাক হওয়ার সাথে সাথে সকল পাসোয়ার্ড হ্যাকাররা জেনে যাবে। কিন্তু যদি পাসোয়ার্ড টা ডাটাবেজে যদি 827ccb0eea8a706c4c34a16891f84e7b শো করে তাহলে হ্যাকাররা কি বুঝতে পারবে এটা কি???? আমার মনে হয় ১ টা পাসোয়ার্ড বের করতে হ্যাকারদের ১০ বছর লেগে যাবে। এখন হয়ত আপনারা বুঝতে পারছেন যে md5 function টা কি কাজে আমাদের লাগবে। মানে md5 এর কাজ ইউজারদের দেয়া ইনফরমেশনকে বদলে দেয়া।

এবার আসি md5 function এর ব্যবহার এ। প্রথমে আমরা md5 function দিয়ে কোন ভ্যালুকে প্রিন্ট করা শিখি। চলুন একটা প্রোগ্রাম লিখা যাক।

<?php
$password = '12345';
$password_md5 = md5($password);
echo $password_md5
?>

বাহ কি সহজ তাইনা এটা লিখা। আমি এর অর্থ টাও বলে দিচ্ছি। প্রথমে আমরা বলে দিচ্ছি $password এর মান 12345, তারপর 12345 এর মান md5 function ব্যবহার করে বদলে দিচ্ছি। তারপর আমরা প্রিন্ট করছি $password_md5 মান মানে আমাদের পাসোয়ার্ড এর মান। আমি জানি আপনারা অনেক বেশি ট্যালেন্ট আমার চেয়ে। তাই আপনাদের এটা বোঝার সমস্যা হবার কোন সম্ভাবনাই নেই। তারপরও যদি সমস্যা হয় তাহলে আমাকে জানাবেন।

হুম এখন আমি জানি আপনাদের মাথায় কি প্রশ্ন ঘুর ঘুর করছে। আপনারা ভাবছেন,

প্রশ্নঃ যদি এরকম হাবি-জাবি লিখা আমাদের ডাটাবেজে স্টোর হয় তাহলে পরে যখন ইউজার লগিন করবে তখন সে পাসোয়ার্ড দিবে 12345, তাহলে এটা আমাদের ডাটাবেজের স্টোর করা পাসোয়ার্ড থেকে আলাদা তাহলে কি পাসোয়ার্ড ভুল দেখাবে???

উত্তরঃ হ্যা!!! যদি আপনারা আপনার লিখা প্রোগ্রামটা মডিফাই না করেন তাহলে তাহলে ভুল তো দেখাবেই!!

প্রশ্নঃ তাহলে উপায়???

উত্তরঃ আমি থাকতে কেন আপনারা উপায় খুজতে যাবেন??? আমি একটা প্রোগ্রাম লিখে দিচ্ছি দেখুন তো কিছু বুঝেন কিনা 🙂

মনে করুন ইউজার এর দেয়া পাসওয়ার্ড আপনার ডাটাবেজে সেভ করেছেন। আপনার সত্যিকার পাসয়ার্ড 12345 এবং সেভ হওয়া পাসোয়ার্ড 827ccb0eea8a706c4c34a16891f84e7b। এবার আমরা চেক করব 12345 কে md5 করলে 827ccb0eea8a706c4c34a16891f84e7b আসে কিনা। তাহলে চলুন প্রোগ্রাম লিখাযাক।

<form action="tutorial.php" method="POST">
<input type="password" name="password">
<input type="submit" value="login">
</form>

<?php
$password_md5= '827ccb0eea8a706c4c34a16891f84e7b';

if (isset($_POST)){
	$password = md5($_POST['password']);
	if(!empty($password)){
	if($password==$password_md5){
		echo 'You can login!!! ';
		}else{
			echo 'Wrong password!!!';
			}
		}
	}
?>

এখন আপনি পাসোয়ার্ড 12345 দিলে লগিন করবে। যদিও আপনার ডাটা বেজে 827ccb0eea8a706c4c34a16891f84e7b দিয়ে সেভ করা আছে।
আসলে অনেক সহজ। খুব কঠিন না। আপনাদের কাছে কত টা সহজ লাগছে বুঝতে পারছি না। কিন্তু আমার কাছে অনেক সহজ লাগতেছে 😀

আমি কিন্তু সহজ করে md5 এর ব্যবহার দেখানোর জন্য ছোট্ট একটা প্রোগ্রাম লিখেছি। আপনারা কিন্তু এরকম সহজ প্রোগ্রাম লিখবেন না। আপনাদের কাজ হবে আগের টিউটোরিয়াল গুলোর সাহায্য নিয়ে md5 ব্যবহার করে আগের মত ইউজারনেম আর পাসোয়ার্ড দিয়ে লগিন এপ্লিকেশন তৈরি করা। আমি জানি আমার টিউটোরিয়াল যারা ফলো করছেন তারা সকলেই পারবেন। তারপরো বেশি বেশি প্র্যক্টিস করবেন প্লিজ। না পারলে আমি আপনাদের সাথেই আছি।

সবাই ভাল থাকবেন। আগামী আবারো দেখা হবে ইনশাআল্লাহ্‌। সেই পর্যন্ত সবাই ভাল থাকবেন।

ধন্যবাদ সবাইকে।

Level 2

আমি ড়িত কথা। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 4 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 28 টি টিউন ও 274 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

Level 0

Thanks.

হালার কবে যে পি এইচ পি হিজ্ঞা দ্যাশের বিশাল ডেভেলপার হমু, , , এহনো জাভা গুতাই :O

Donnobad upnake continue rakar jomno….

আপনাকেও ধন্যবাদ।

Level 0

Thank’s Brother Rabbi ,your tunes helps me a lot, Please Continue it.Waiting for your next tuts.

    @SHAKIL: Asole apnar nijer sekhar issai apnake sobceye besi help korce. Amar tune ta theke hoito samanno help paccen. Thanx for comment

আচ্ছা, হ্যাকার যদি আমার ডেটাবেস থেকে পাসওয়ার্ড বের করে এর উপর md5 function চালায় তবে কি হবে?
যেমন আপনার উদারনের মতো করে বলি,
$password_md5= ‘827ccb0eea8a706c4c34a16891f84e7b’;
echo”Your password is :”.”$password_md5″;

Your password is : 12345
তাহলে কি সে orginal password পেয়ে গেল না ?

Dhonnobad Bhaia, apnar poroborti tuner jonno opekkha korchhi.

Level 0

অনেকদিন পরে টিউনের জন্য ধন্যবাদ

Level 0

অনেকদিন পরে হলেও একটা কাজের টিউনের জন্য ধন্যবাদ

    @manik232: Hmm asolei tune ta onek kajer. Jara miss korecen tara asolei miss korcen. Thanx for comment 🙂

সুন্দর হচ্ছে একটু গুছিয়ে ( গুরুত্বপূর্ণবিষয় highlight করে ) লিখুন । ধন্যবাদ ১৫তম পর্বের জন্য

Level 0

rabbi vai,
donnobad apnar dara amra php samporke jante parchi…

Level 0

@Devsteam: Thanks For সুন্দুর পোষ্ট

Level 0

মনে অনেক কষ্ট রাব্বি ভাই সবার কমেন্টে রিপ্লেদেয় কিন্তু আমার কমেন্টে কোন….রিপ্লে নাই!!!

আর কোন টিউন হচ্ছে না কেন ? আমরা পিএইচপি এর ওপর আরও টিউন চাই……প্লীজ !

    @Dark Prince: Vaia apnader sathe aro ønek dur jete cai. But jehetu ami student tai amar exam er karone tune likhte parcina. 6 tarikh theke amar test exam. Doa korben jate exam valo vabe sesh kore apnader majhe firte pari. Thanx 🙂

Level 0

ami bojtacina html and php te dokar por amr akta code tik vave ran korce na…..jai hok ami loging korar por ‘thanks for loging’ astace na.@রাব্বি
r akta quesition amra je ”username” $ ”password” database store koreci ata xampp ar kon folder a save hoy.

Level 0

code for highlighting test:

[/code]

Level 0

sorry for the previous useless comment 😀

btw, I solved this md5 verification by the following of the previous assignment solution and it works. wow….

Level 0

Hi Rabbi, I could not understand well your last program, but If I follow the previous assignment, I can write the code for ID and Pass verification using md5 function. Anyway, the tunes are cool….