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.
|
বিস্তারিত জানতে নিচের বইটি সংগরহ করে নিন।
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...