know yourselves. information, computer, 7 wonders, various.

Tuesday, April 21, 2020

PHP_Part 15_সেশন





সেশন
পিএইচপি সেশন ( PHP Session)
কম্পিউটারে অপনি যে কোন অ্যাপ্লিকেশন নিয়ে কাজ করার সময় বারবার  খোলেন বা বন্ধ করেন,  এটির সমসত্ম রেকর্ড কম্পিউটারে  থাকে । এর প্রতিটিই হচ্ছে একটি করে সেসন। ওয়েব সার্ভারের ক্ষেত্রে সার্ভার কম্পিউটার এরকম কোন রের্কড রাখতে পারে না। সার্ভার প্রথমত আপনাকে চিনতে পারে না, দ্বিতীয়ত কে কাজ করছে  সেটি বুঝতে পারে  না । এই সমস্যার সমাধান দিয়েছে PHP Session . তবে এটি ইউজারের জন্য অস্থায়ীভাবে তথ্য সংরক্ষণ করে। স্থায়ীভাবে রাখতে চাইলে database এ সেভ করে রাখতে হয়। এটি প্রতিটি ইউজারের জন্য আলাদা আলাদা ID তৈরী করে । এটি পিএইচপি সেশন  session_start()ফাংশন দিয়ে শুরু করতে হয় এবং <html>tag  এর প্রথমে রাখতে হয়।
যেমনঃ       <?php session_start(); ?>
 <html>
 <body>
 </body>
 </html>
এই কোডটি সার্ভারের সাহায্যে ইউজারের সেসন তৈরী করবে এবং এই সেশনকে একটা ইউজার ID দিয়ে  তার তথ্য সেভ করা শুরু  করবে।
সেশন ভ্যারিয়েবল সংরক্ষণ
সেশন তথ্য সংরক্ষণ ও উদ্ধারের উপায় হল ভ্যারিয়েবল $_SESSION ব্যবহার করা । নিচের মত কোডিংসহ একটি ফাইল তৈরী করে  htdocs এর মধ্যে একটি নাম দিয়ে রাখুন।
<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=".$_SESSION['views'];
?>
</body>
</html>
Pageviews = 1
নিচের উদাহরণটি ( page কতবার দেখা হয়েছে তা দেখার জন্য) তৈরী করা হয়েছে। এটি করার জন্য isset() ফাংশনটি ব্যবহার করা হয়। এই ফাংশনটি চেক করে  দেখবে  ‘views’ ভ্যারিয়েবল আগে থেকেই সেট করা আছে কিনা । যদি ‘views’ variable  সেট করা থাকে তাহলে আমরা  counter বাড়াতে পারি।  আর যদি না থাকে তাহলে "views" variable  তৈরী করব এবং এখানে  ১ সেট করে দেব।
<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>
একটা সেশন মুছে দেওয়া:
সেশনের কোন  ডেটা মুছে ফেলতে unset() or the session_destroy() function ব্যবহার করা হয়।
 unset() function নির্দিষ্ট একটা সেশন ভ্যারিয়েবল মুছে ফেলতে ব্যবহৃত হয়।
<?php
unset($_SESSION['views']);
?>
একটা সেশনকে সম্পূর্ণভাবে মুছে ফেলতে session_destroy() function ব্যবহৃত হয়।
<?php
 session_destroy();
?>
session_destroty ( ) ফাংশনটি কল করার মাধ্যমে আপনি চাইলে সেশনটিকে সম্পূর্ণরূপে ধ্বংস করে দিতে পারেন। উল্লেখ্য, session_destroy ( ) ফাংশনটি আপনার সেশনটিকে রিসেট করবে এবং আপনি আপনার সংরক্ষণকৃত সেশন ডেটাগুলো হারিয়ে ফেলবেন।
পিএইচপি এরর হ্যান্ডলার
যখন পিএইচপি স্ক্রিপ্ট লিখবেন বা কোন ওয়েব এপ্লিকেশন তৈরী করবেন তখন error handling এর একটি  গুরম্নত্বপূর্ণ ভূমিকা থাকে। যদি এরর (ভূল) চেকিং কোডে কোন ঘাটতি থাকে তাহলে আপনার প্রোগ্রামটি আর বেশী ভাল হবে না এবং নিরাপত্তাজনিত ঝুকি থাকবে।
এই টিউটোরিয়ালে এরর চেকিং এর কিছূ প্রচলিত পদ্ধতি নিয়ে আলোচনা করা হবে। যেমন-
“die()” statements
Custom error and error triggers
Error reporting
“DIE()” স্টেটমেন্ট ব্যবহার করে এরর হ্যান্ডল করা
এটা একটা ছোট কোড যেটা টেক্সক্ট ফাইল খুলবে
<?php
$file=fopen("welcome3.txt","r");
?>
যদি ফাইলটির কোন অসিত্মতই না থাকে তাহলে ব্রাউজারে নিচের মত প্রদর্শন করবে।

ইউজারকে উপরের মত মেসেজ থেকে মুক্তি দিয়ে নিজের মত বোধগম্য মেসেজ দিতে পারেন। যেমন-
<?php
if(!file_exists("welcome3.txt"))
{
die("File not found");
}
else
{
$file=fopen("welcome3.txt","r");
}
?>
এবার যদি ফাইলটি না পায় তাহলে এই মেসেজ দেখাবে।

এই কোডটি উপরের কোডের চেয়ে ভিন্ন। এটা একটা সমাধান পদ্ধতি এতে Error হলে স্ক্রিপ্ট বন্ধ হয়ে যাবে। এ পদ্ধতি ব্যবহার করা অনেক সময় সঠিক নয়।
কাস্টম এরর হ্যান্ডলার তৈরী করা
এখানে আমরা একটা পিএইচপি ফাংশন তৈরী করবো। সেটা এরর হলে যেন Call করা যায়। এই ফাংশন কমপক্ষে দুটি (error level and error message) এবং সর্বোচ্চ পাঁচটি (optional file, line number and the error context)। প্যারামিটার থাকবে।
 (error_function(error_level.error_message.error_file.error_context)
Parameter
Description
error_level     
ইউজারকৃত ভুলের error report level সুনির্দিষ্ট করে। এখানে অবশ্যই একটা Value number থাকতে হবে। (বাধ্যতামূলক)
error_message
ইউজারকৃত ভুলের জন্য error message নির্দিষ্ট করে। (বাধ্যতামূলক)
error_file
ঐ ফাইলটির নাম উল্লেখ করে সেখানে ভুল হয়েছে। (বাধ্যতামূলক নয়)
error_line
ঐ ফাইলটির নাম উল্লেখ করে সেখানে ভুল হয়েছে। (বাধ্যতামূলক নয় )
error_context
একটা আরও উল্লেখ (Specifies an array)   করে সেখানে সব ভ্যারিয়েবল এবং তাদেও নাম থাকে। (বাধ্যতামূলক নয়)
এরর রিপোর্টিং এর Value
Value
Constant
Description
2
E_ARNING
run-time error স্ক্রিপ্টের Execution বন্ধ        হয় না।
8
E_NOTICE    
run-time notices
256
E_USER_ERROR
ইউজারকৃত মারাত্মক ভুল এটা E_ERROR এর  মত প্রোগ্রামনোট করে দেয় PHP function trigger_error ব্যবহার করে।
512
E_USER_WARNING
run-timewarnings generated by a call to trigger_error
1204
E_USER_NOTICE    
run-time warnings generated by a          call to trigger_error
4096
E_RECOVERABLE_ERROR
catchable fital error
8191
E_ALL
সব errors এবং warnings, শুধু    level             E_STRICT ছাড়া (E_STRICT PHP 6.0 এবং E_ALL এর অংশ হবে।)
এবার একটা ফাংশন তৈরী করব এরর হ্যান্ডল এর জন্য
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br />";
echo "Ending Script";
die();
}
এটা একটা error handling ফাংশন। যখন এটা চলবে তখন এটা একটা error level এবং মেসেজ পাবে এবং মেসেজ আউটপুটে দেখিয়ে স্ক্রিপ্ট শেষ করবে।
এরর হ্যান্ডলার সেট
পিএইচপিতে ডিফল্ড হিসাবে একটা error handler বিল্টইন থাকে। আপনি ইচ্ছা করলে এর পরিবর্তে নিজের মত error handler দিতে পারেন PHP তে। নিচের উদাহরণে দেখব কিভাবে এই নিজের তৈরী error handler ব্যবহার করতে হয়।
set_error_handler(“customError”);
যেহেতু error handler করার জন্য আমরা নিজের তৈরী ফাংশন ব্যবহার করতে চাই, তাই set_error_handler() এর একটা প্যারামিটার দরকার, ২য় আরেকটা প্যারামিটার যোগ করা যেতে পারে error level এর জন্য।
এরকম একটা উদাহরণ
<?php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr";
}
//set error handler
set_error_handler("customError");
//trigger error
echo($test);
?>
উপরের কোডের আউটপুট হবে এমন ---        Error: [8] Undefined variable:test

কোন ভুলকে TRIGGER করা
কোন স্ক্রিপ্ট যেখানে ইউজার ডেটা ইনপুট করতে পারে সেখানে trigger করা উপকারী, যখন ইউজার ভুল/অবৈধ ইনপুট করবে। trigger_eroor() function দিয়ে এটা করা হয় । এই উদাহরণে test ভ্যারিয়েবল যদি ১ এর চেয়ে বড় হয় তখন error হবে।
<?php
$test=2;
.if ($test>1)
{
trigger_error("Value must be 1 or below");
}
?>
আউটপুট: ব্রাউজারে নিচের মত প্রদর্শন করবে।

একটা error কে স্ক্রিপ্টের যেকোন জায়গায় করা যায় এবং আরেকটা প্যারামিটার যোগ করে নির্দিষ্ট করে দিতে পারেন। যে কোন error level টি trigger করা যাবে।

সমাভব্য error এর ধরন-
·         E_USER_ERROR
·         E_USER_WARNING
·         E_USER_NOTICE
উদাহরণ
যদি test ভ্যারিয়েবল এর মান ১ এর চেয়ে বেশী হয় এখানে E_USER_WARNING error টি হবে এবং এখন আমরা নিজের তৈরী error handler টি ব্যবহার করব।
<?php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br />";
echo "Ending Script";
die();
}
//set error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>
ব্রাজউারের নিচের মত ফলাফল পাওয়া যাবে।


এরর লগিং
PHP তে error_log() নামের একটা ফাংশন বিল্টইন আছে, এটা দিয়ে ইচ্ছা error log ( যে ভুলটি হবে তার তথ্য) টি পাঠাতে পারেন এমনকি নিজের মেইল ঠিকানাতেও।
ইমেইলের সাহায্যে এরর মেসেজ পাঠানো
<?php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br />";
echo "Webmaster has been notified";
error_log("Error: [$errno] $errstr",1,
" someone@example.com","From: webmaster@example.com");
}
//set error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>
ব্রাজউারের নিচের মত ফলাফল পাওয়া যাবে।

Error: [512] Value must be 1 or below Webmaster has been notified
এই কোডের কারণে এমন একটা মেইল পাবে

Error: [512] Value must be 1 or below


Substring
ফাংশন
বর্ণনা
substr(str,pos)
Returns the substring from the character in position pos to the end of the string.
substr(str,-len)
Returns the substring from len characters from the end of the string to the end of the string.
substr(str,pos,len)
Returns a len length substring beginning with the character in position pos.
substr(str,pos,-len)
Returns a substring beginning with the character in position pos and chopping off the last len characters of the string.
strstr(haystack,needle,before_needle)
If the third argument (before_needle) is false (default), then it returns the part of the haystack from the needle on.
If the third argument (before_needle) is true, then it returns the part of the haystack before the needle.
The needle can be a string or an integer (or a number that can be converted to an integer).
stristr(haystack,needle,before_needle)
Same as strstr(), but case insensitive.
strpos(haystack,needle)
Finds the position of the first occurrence of a specified needle in a haystack (string).
The needle can be a string or an integer (or a number that can be converted to an integer).
strrpos(haystack,needle)
Finds the position of the last occurrence of a specified needle in a haystack (string).
The needle can be a string or an integer (or a number that can be converted to an integer).
str_replace()
Replaces all occurrences of one string with another string.




Comparing Strings
ফাংশন
বর্ণনা
strcmp()
Compares two strings. Returns < 0 if str1 is less than str2, > 0 if str1 is greater than str2, and 0 if they are equal.
strcasecmp()
Like strcmp() but case insensitive.
strlen()
Returns the length of a string.


Previous Post                                                                                           Next Post

  বিস্তারিত জানতে নিচের বইটি সংগরহ করে নিন।

Book Name: Mastering Microsoft  Word
Writer: Bappi Ashraf
Published By: Gyankosh Prokashani
Amount of Pages: 464
First Publish: October-2004
Last Edition: We've February-2015 edition. Future edition may be existed!
Book Price: BDT 350 (30% Discount)
 The writer of this book has told that he has written this book with the concept of "teach yourself". On the other hand, Web Design is a thing which is interesting to learn. He has also told that the book is full of fan and enjoyment so that a person can learn Web Design by himself by playing with the example projects of this book.  Book's CD Link below... 

 cd

RELATED POST LINKS BELOW ********************************************