ভুল ধারণা ব্যবহারকারীর তথ্য php. চিন্তাহীনতা। আমরা ডাটাবেসে ব্যবহারকারীদের সম্পর্কে তথ্য সংরক্ষণ করি

চিন্তাহীনতা হল যখন আবেগ আপনাকে চিন্তা করা থেকে বিরত করে।

মজার aphorisms

চিন্তাহীনতা ব্যক্তিত্বের গুণ হিসাবে - একজনের কর্মের পরিণতি নিয়ে চিন্তা না করার প্রবণতা; অপ্রতুলভাবে চিন্তাশীলভাবে আচরণ করা, নির্বোধভাবে, চিন্তাহীনভাবে; গভীরভাবে এবং পুঙ্খানুপুঙ্খভাবে চিন্তা করতে অক্ষমতা, সঠিকভাবে কিছু বুঝতে।

এক কঠোর শীতে, পরিবারের জ্বালানী কাঠ ফুরিয়ে গেল। বাবা বাইরে গিয়েছিলেন, একটি মরা গাছ দেখতে পেয়ে কেটে ফেললেন। বসন্তে, তিনি একটি গাছের স্তূপ থেকে অঙ্কুর বের হতে দেখেছিলেন যা তিনি কেটেছিলেন। "আমি নিশ্চিত ছিলাম," বাবা বললেন, "এই গাছটি মারা গেছে।" তখন এত ঠাণ্ডা ছিল যে তুষারপাতের ফলে এর শাখাগুলি ফাটল, ভেঙে পড়ল এবং মাটিতে পড়ল, যেন এর শিকড়গুলিতে জীবনের একটি ফোঁটাও অবশিষ্ট নেই। এখন দেখছি এই কাণ্ডে জীবন তখনও ঝলমল করছিল।

এবং, তার ছেলের দিকে ফিরে তিনি বললেন: "এই পাঠটি মনে রেখো।" শীতকালে কখনো গাছ কাটবেন না। কখনই চিন্তাভাবনা থেকে, ভুল সময়ে বা আপনার মনের অবস্থা খারাপ হলে সিদ্ধান্ত নেবেন না। অপেক্ষা করুন। ধৈর্য ধরুন, খারাপ সময় কেটে যাবে। মনে রাখবেন বসন্ত ফিরে আসবে।

চিন্তাহীনতা মূর্খতা ও মূর্খতার কন্যা। এটি বিচক্ষণতার কোনো উপস্থিতির অনুপস্থিতি। চিন্তাশীলতা মানুষের প্রতি অমনোযোগীতা এবং অসম্মানের কথা বলে। আমরা যাকে ভালবাসি এবং সম্মান করি, আমরা যত্ন করি, আমরা উদ্বিগ্ন এবং উদ্বিগ্ন, তাই আমরা সমস্ত সূক্ষ্মতা, সমস্ত ছোট জিনিস যা তাকে ক্ষতি করতে পারে বা তার জীবনে হস্তক্ষেপ করতে পারে সে সম্পর্কে চিন্তা করি। যাকে আমরা সম্মান করি না, মূল্য দেই না, আমরা চিন্তাহীনতা দেখাই।

চিন্তাহীনতা মূর্খতা, মূর্খতা, মূর্খতা এবং মগজহীনতার সহযোগী।

লোকটি, কৌতূহল দেখিয়ে, সুন্দর ফ্লাইট পরিচারককে জিজ্ঞাসা করে: - মেয়ে, TU-154-2B এর অর্থ কী? -তুমি নিজেও ভাবতে পারো না? ঠিক আছে, টিইউ এর অর্থ হল যে প্লেনটি ডিজাইনার টুপোলেভ দ্বারা উত্পাদিত হয়েছিল, 150 হল কেবিনের আসন সংখ্যা এবং 4 হল ক্রু সদস্যের সংখ্যা। - আর 2বি? - আচ্ছা, আপাতদৃষ্টিতে চিন্তাহীনতা আপনার শক্তিশালী পয়েন্ট! এই মারিঙ্কা এবং আমি।

চিন্তাহীনতা হল যখন একজন ব্যক্তি না বুঝে বেঁচে থাকে যে তাকে প্রতিটি কাজের জন্য জবাব দিতে হবে। তার মনে এই চিন্তা আসে না যে তার কর্মের পরিণতি, বুমেরাং এর মতো, কর্মের নিয়ম অনুসারে তার কাছে ফিরে আসবে। ভাল এবং খারাপ উভয়ই অবশ্যই আবার ফিরে আসবে।

চিন্তাহীনতা আপনার চারপাশের লোকদের অসুবিধার কারণ করার একটি প্রমাণিত উপায়।

V. Schlachter বলেছেন যে আমরা প্রায়শই চিন্তাহীনতাকে বোকামি হিসাবে উপলব্ধি করি। এমনকি পশুত্বের জন্যও। উদাহরণস্বরূপ, ড্রাইভার একটি ব্যস্ত মোড়ে প্রবেশ করেছে। তিনি পাশের রাস্তায় দাঁড়িয়ে ট্রাফিক লাইট সবুজ হয়ে যাওয়ার অপেক্ষায় সবার জন্য যান চলাচল বন্ধ করে দেন। তবে তিনি এটি করেছিলেন, সম্ভবত, রাগের কারণে নয়, এবং এই কারণে নয় যে তিনি একজন বোকা, জঘন্য নৃশংস ছিলেন। তিনি কেবল তার দরিদ্র মাথাকে পরিণতি নিয়ে ভাবতে বিরক্ত করেননি। এখন সবাই তাকে (আরও প্রায়শই তার দিকে!) হংস করে এবং তাকে অনানুষ্ঠানিক শব্দভাণ্ডার থেকে সবচেয়ে অপ্রীতিকর উপাধি বলে।

"বিড়ালটিকে প্রচুর জল ছেড়ে দিন, আমি তিন দিনের জন্য চলে যাব," মা বলে। আর আমার ছেলে বিড়ালকে দেড় লিটারের প্লাস্টিকের বোতল নিয়ে আসে। পান, বিড়াল! একটি বিড়াল একটি বোতল খুলতে পারে না এবং এটি থেকে পান করতে পারে না তা তার ছেলের কাছেও ঘটে না। তারা আরো পানি চাইলেন- সে আরো এনেছে, সমস্যা কি? তিনি বোকামি থেকে এটি করেননি। এবং দুর্ভাগ্য বিড়াল জন্য ঘৃণা আউট না. চিন্তাহীনতা থেকে!

চিন্তাহীনতা বুদ্ধির চেয়ে অনেক আগে মনে আসে। এটা সবসময় দ্রুত রায় দ্বারা অনুষঙ্গী হয়.

শিক্ষক সর্বদা তার ছাত্রদের চিন্তাহীনতার বিরুদ্ধে সতর্ক করতেন, অর্থাৎ, মানুষের সম্পর্কে তাড়াহুড়ো করে সিদ্ধান্ত নেওয়ার বিরুদ্ধে এবং আরও বেশি করে তাড়াহুড়ো পরামর্শের বিরুদ্ধে। তিনি এটি বলেছিলেন: “যতক্ষণ না আপনি আপনার হৃদয় ও মনে অনুভব করেন যে আপনি সমস্যার মূলে প্রবেশ করেছেন এবং আপনি সঠিক কাজটি করছেন তাতে সামান্যতম সন্দেহও আপনাকে ছাড়বে না, আপনার সর্বোত্তম কাজটি নিষ্ক্রিয় হতে দিন এবং আপনার সবচেয়ে নিরাপদ। শব্দ নীরব। অন্যথায়, আপনার উপদেশ মানুষকে চিন্তাহীনতায় ভোগা কৃষকের ভাগ্যের পুনরাবৃত্তি করতে বাধ্য করবে।

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

চিন্তাহীনতা এমন লোকেদের শাস্তি যারা কেবল নিজের স্বার্থ নিয়ে চিন্তা করে।

পতাকাটি সৈনিককে জিজ্ঞাসা করে: - পারমাণবিক বিস্ফোরণ ঘটলে কী করা উচিত? "ফ্ল্যাশের দিকে আপনার পা দিয়ে শুয়ে পড়ুন এবং আপনার হাত দিয়ে নিজেকে ঢেকে রাখুন," তিনি উত্তর দেন। - ভুল। আপনাকে মেশিনগানের সাহায্যে আপনার বাহু সামনের দিকে প্রসারিত করতে হবে যাতে গলিত ধাতু সরকারী জারি করা বুটের উপর না পড়ে।

চিন্তাহীনতা একজন ব্যক্তিকে অনিশ্চয়তার পরিবেশে ঠেলে দেয়। যখন একজন ব্যক্তি কয়েক মিনিটের মধ্যে কী ঘটবে তা কল্পনা করতে পারে না, এর অর্থ হল সে সম্পূর্ণ অনিশ্চয়তার মধ্যে বাস করে।

আমার স্বামী একটি ব্যবসায়িক ট্রিপ থেকে ফিরে. বাড়িতে কেউ নেই। আমি আমার স্ত্রীকে অবাক করার জন্য লুকানোর সিদ্ধান্ত নিয়েছি। হঠাৎ তিনি দেখেন তার স্ত্রী কিছু লোকের সাথে অ্যাপার্টমেন্টে প্রবেশ করেছে। ওরা বেডরুমে যায়। দরজা বন্ধ হয়ে যায়, স্বামী চাবির হোলের কাছে দৌড়ে যায়। এবং সে তার স্ত্রীকে এই লোকটিকে চুম্বন করতে দেখে, সে তার সমস্ত কাপড় খুলে ফেলে, তারা দুজনেই নিজেকে বিছানায় ফেলে দেয়, সে তার জামাকাপড় খুলে ফেলে এবং তার প্যান্টিটি সামনের দরজার দিকে ফেলে দেয়, যেখানে স্বামী লুকিয়ে আছে, এবং তারা ঝুলে থাকে। হ্যান্ডেল, ভাল স্বামী এবং সমগ্র ওভারভিউ লক বন্ধ. এবং তারপরে স্বামী বিরক্তির সাথে ভাবেন: "আচ্ছা, এটি একটি দিনের অপচয়, আবার সম্পূর্ণ অনিশ্চয়তা রয়েছে!"

পিটার কোভালেভ

যারা কমবেশি সিরিয়াসলি পড়াশোনা করেছেন পিএইচপিজানেন যে একটি খুব দরকারী গ্লোবাল অ্যারে আছে পিএইচপিযা বলা হয় $_SERVER. এবং এই নিবন্ধে আমি এই অ্যারেতে সর্বাধিক জনপ্রিয় কী এবং তাদের মানগুলি বিশ্লেষণ করতে চাই, যেহেতু তাদের জ্ঞান কেবল একজন শিক্ষানবিশের জন্যও বাধ্যতামূলক। পিএইচপি প্রোগ্রামার.

আপনি শুরু করার আগে PHP-তে গ্লোবাল অ্যারে $_SERVER, আমি এখনই আপনাকে একটি ছোট ইঙ্গিত দেব। অন্তর্নির্মিত একটি মহান বৈশিষ্ট্য আছে পিএইচপি, যা বলা হয় phpinfo(). আসুন অবিলম্বে এর ব্যবহারের একটি উদাহরণ দেওয়া যাক:

phpinfo();
?>

এই সহজ স্ক্রিপ্টটি কার্যকর করার ফলে, আপনি বিভিন্ন সহ একটি বিশাল টেবিল দেখতে পাবেন পিএইচপি দোভাষী সেটিংস, সহ, শেষের কাছাকাছি মানগুলির একটি টেবিল থাকবে গ্লোবাল অ্যারে $_SERVER. এটি সমস্ত কী এবং তাদের সমস্ত সংশ্লিষ্ট মান তালিকাভুক্ত করবে। এটি কিভাবে আপনাকে সাহায্য করতে পারে? এবং সত্য যে যদি আপনি এই বা যে মান প্রয়োজন, এবং আপনি কি বলা হয় ভুলে যান, তারপর ফাংশন ব্যবহার করে phpinfo()আপনি সর্বদা এর নাম মনে রাখতে পারেন। সাধারণভাবে, আপনি এই স্ক্রিপ্টটি কার্যকর করবেন এবং আপনি অবিলম্বে আমাকে বুঝতে পারবেন।

এখন সবচেয়ে জনপ্রিয় এগিয়ে চলুন $_SERVER অ্যারের কীগুলিতে:

  • HTTP_USER_AGENT- এই কী আপনাকে ক্লায়েন্টের বৈশিষ্ট্যগুলি খুঁজে বের করতে দেয়। বেশিরভাগ ক্ষেত্রে, এটি অবশ্যই ব্রাউজার, তবে, সবসময় নয়। এবং আবার, যদি এটি একটি ব্রাউজার হয়, তাহলে কোনটি, আপনি এই ভেরিয়েবলে এটি সম্পর্কে জানতে পারেন।
  • HTTP_REFERER- সেই ফাইলটির পরম পথ রয়েছে ( পিএইচপি স্ক্রিপ্ট, HTML পৃষ্ঠা), যেখান থেকে আমরা এই স্ক্রিপ্টে স্যুইচ করেছি। মোটামুটিভাবে বলতে গেলে, ক্লায়েন্ট কোথা থেকে এসেছে।
  • SERVER_ADDR - আইপি ঠিকানাসার্ভার
  • REMOTE_ADDR - আইপি ঠিকানাক্লায়েন্ট
  • DOCUMENT_ROOT- সাইটের রুট ডিরেক্টরিতে শারীরিক পথ। এই বিকল্পের মাধ্যমে সেট করা হয় অ্যাপাচি সার্ভার কনফিগারেশন ফাইল.
  • SCRIPT_FILENAME- নামক স্ক্রিপ্টের শারীরিক পথ।
  • QUERY_STRING- একটি খুব দরকারী মান যা আপনাকে অনুরোধ সহ একটি স্ট্রিং পেতে দেয় এবং তারপর আপনি এই স্ট্রিংটি পার্স করতে পারেন।
  • REQUEST_URI- একটি আরও দরকারী মান যাতে কেবল অনুরোধটিই নয়, রুট থেকে কল করা স্ক্রিপ্টের আপেক্ষিক পথও থাকে। এটি প্রায়শই থেকে নকল অপসারণ করতে ব্যবহৃত হয় index.php, যে, যখন আমরা যেমন আছে URL: "http://mysite.ru/index.php"এবং" http://mysite.ru/"এক পৃষ্ঠায় নিয়ে যান, এবং ইউআরএলভিন্ন, তাই ডুপ্লিকেশন, যার উপর খারাপ প্রভাব পড়বে সার্চ ইঞ্জিন অপ্টিমাইজেশান. এবং সাহায্যে REQUEST_URIআমরা নির্ধারণ করতে পারি: সহ index.phpনাকি স্ক্রিপ্ট বলা হয়নি। এবং আমরা একটি পুনঃনির্দেশ করতে পারেন সঙ্গে index.php(যদি তিনি উপস্থিত ছিলেন REQUEST_URI) ছাড়া index.php. ফলস্বরূপ, এই ধরনের অনুরোধ পাঠানোর সময়: " http://mysite.ru/index.php?id=5", আমাদের কাছে একটি পুনঃনির্দেশ থাকবে৷ URL: "http://mysite.ru/?id=5"। অর্থাৎ, আমরা থেকে সরিয়ে দিয়ে নকল থেকে মুক্তি পেয়েছি URLএই index.php.
  • SCRIPT_NAME- বলা স্ক্রিপ্টের আপেক্ষিক পথ।

সম্ভবত এই সব উপাদান PHP-তে গ্লোবাল অ্যারে $_SERVERযেগুলো নিয়মিত ব্যবহার করা হয়। আপনাকে সেগুলি জানতে হবে এবং প্রয়োজনে সেগুলি ব্যবহার করতে সক্ষম হবেন।

বিষয়বস্তু

$user_info

loadUserSettings() এ $user_info-এর জন্য সংজ্ঞায়িত এই সমস্ত কী। কিছু স্ব-ব্যাখ্যামূলক, নিশ্চিত.

গ্রুপ

অ্যারে সমস্ত সম্ভাব্য সদস্য গোষ্ঠীগুলিও একজন ব্যবহারকারী সংযুক্ত। চাবি কোন ব্যাপার না. মান হল গ্রুপ, int হিসাবে স্যানিটাইজ করা হয়, ঠিক ক্ষেত্রে। এর মধ্যে রয়েছে:

  • প্রাথমিক গ্রুপ
  • পোস্ট গণনা গ্রুপ
  • অতিরিক্ত দল। এগুলি ডাটাবেসে কমা-ডিলিমিটেড স্ট্রিং হিসাবে সংরক্ষণ করা হয়।

সম্ভবত_রোবট

bool যদি বৈশিষ্ট্যটি সক্ষম করা থাকে তবে এজেন্ট একটি পরিচিত মাকড়সার সাথে মেলে এবং যদি অক্ষম করা হয় তবে একটি শিক্ষিত অনুমান করা যায়।

আইডি

int সদস্যের ডাটাবেস মান "id_member".!}

ব্যবহারকারীর নাম

নাম

স্ট্রিং তাদের প্রদর্শিত নাম।

ইমেইল

পাসওয়াড

ভাষা

হল_অতিথি

is_admin

থিম

শেষ_লগইন

int ইউনিক্স টাইমস্ট্যাম্প।

আইপি

$_SERVER["REMOTE_ADDR"]

ip2

$_SERVER["BAN_CHECK_IP"]

পোস্ট

int পোস্ট গণনা.

time_format

স্ট্রিং Strtftime() এর জন্য কাস্টম বিন্যাস।

সময়_অফসেট

int ফোরামের সময় থেকে ব্যবহারকারীর প্রতি ঘন্টা অফসেট।

অবতার

  • url:স্ট্রিং
  • ফাইলের নাম: স্ট্রিং
  • custom_dir: bool
  • id_attach: int

স্মাইলি_সেট

বার্তা

int তাদের পিএমের সংখ্যা।

অপঠিত_বার্তা

int তাদের অপঠিত প্রধানমন্ত্রীর সংখ্যা।

total_time_logged_in

বন্ধুদের

স্ট্রিং তাদের বন্ধুদের তালিকা কমা দ্বারা সীমাবদ্ধ।

উপেক্ষা বোর্ড

স্ট্রিং বোর্ডের তালিকা তারা উপেক্ষা করেছে কমা দ্বারা সীমাবদ্ধ করা হয়েছে।

উপেক্ষাকারী

স্ট্রিং ব্যবহারকারীদের তালিকা তারা কমা দ্বারা সীমাবদ্ধ উপেক্ষা করতে বেছে নিয়েছে।

  • SMF 1.1.x-এ শুধুমাত্র PMs উপেক্ষা করা হয়।
  • SMF 2.0.x এবং পরবর্তীতে, উপেক্ষা করা ব্যবহারকারীর পোস্টগুলিও লুকানোর জন্য এই বৈশিষ্ট্যটি উন্নত করা হয়েছে৷

সতর্কতা

int তাদের সতর্কতা পয়েন্ট।

অনুমতি

query_see_board

একটি প্রস্তুত এসকিউএল স্টেটমেন্টের অংশ হিসাবে তারা দেখতে পারে এমন সমস্ত বোর্ডের তালিকা।

query_wanna_see_board

একটি প্রস্তুত এসকিউএল স্টেটমেন্টের অংশ হিসাবে তারা যে বোর্ডগুলি দেখতে চায় তার তালিকা৷

mod_cache

is_mod

বুলিয়ান। বোর্ডগুলি ব্যতীত যেখানে সদস্য একজন মডারেটর তা মিথ্যা৷ এটা সবসময় সেট করা হয়.

দ্বিতীয় পাঠে আমরা আরও দুটি ক্লাস লিখব এবং স্ক্রিপ্টের অভ্যন্তরীণ অংশ সম্পূর্ণভাবে শেষ করব।

পরিকল্পনা

এই টিউটোরিয়াল সিরিজের লক্ষ্য হল একটি সাধারণ অ্যাপ্লিকেশন তৈরি করা যা ব্যবহারকারীদের নিবন্ধন, লগ ইন, লগ আউট এবং সেটিংস পরিবর্তন করতে দেয়। যে ক্লাসে ব্যবহারকারীর সমস্ত তথ্য থাকবে তাকে ব্যবহারকারী বলা হবে এবং এটি User.class.php ফাইলে সংজ্ঞায়িত করা হবে। যে ক্লাসটি ইনপুট/আউটপুটের জন্য দায়ী হবে তাকে বলা হবে UserTools (UserTools.class.php)।

ক্লাস নামকরণ সম্পর্কে একটু

সঠিক শিষ্টাচার হল এমন ফাইলগুলির নাম দেওয়া যা ক্লাসের মতো একই নামের সাথে একটি ক্লাস বর্ণনা করে। এটি ক্লাস ফোল্ডারে প্রতিটি ফাইলের উদ্দেশ্য নির্ধারণ করা সহজ করে তোলে।

ক্লাস ফাইলের নামের শেষে .class বা .inc যোগ করাও সাধারণ। এইভাবে আমরা ফাইলের উদ্দেশ্য পরিষ্কারভাবে সংজ্ঞায়িত করি এবং এই ফাইলগুলিতে অ্যাক্সেস সীমাবদ্ধ করতে .htaccess ব্যবহার করতে পারি।

ব্যবহারকারীর শ্রেণী (User.class.php)

এই ক্লাস প্রতিটি ব্যবহারকারীকে সংজ্ঞায়িত করবে। বৃদ্ধির সাথে এই অ্যাপ্লিকেশন"ব্যবহারকারী" এর সংজ্ঞা উল্লেখযোগ্যভাবে পরিবর্তিত হতে পারে। সৌভাগ্যবশত, OOP প্রোগ্রামিং অতিরিক্ত ব্যবহারকারীর বৈশিষ্ট্য যোগ করা সহজ করে তোলে।

কনস্ট্রাক্টর

এই ক্লাসে আমরা একটি কনস্ট্রাক্টর ব্যবহার করব - এটি এমন একটি ফাংশন যা ক্লাসের পরবর্তী অনুলিপি তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল করা হয়। এটি আমাদের প্রোজেক্ট তৈরি হওয়ার পরে স্বয়ংক্রিয়ভাবে কিছু বৈশিষ্ট্য প্রকাশ করতে দেয়। এই ক্লাসে, কনস্ট্রাক্টর একটি একক আর্গুমেন্ট নেবে: সহযোগী অ্যারে, যা আমাদের ডাটাবেসের ব্যবহারকারীদের টেবিল থেকে একটি সারি ধারণ করে।

প্রয়োজন_একবার "DB.class.php"; শ্রেণীর ব্যবহারকারী ( সর্বজনীন $আইডি; সর্বজনীন $ব্যবহারকারীর নাম; সর্বজনীন $হ্যাশডপাসওয়ার্ড; সর্বজনীন $ ইমেল;
সর্বজনীন $joinDate;
//যখন একটি নতুন বস্তু তৈরি করা হয় তখন কন্সট্রাক্টর বলা হয়// একটি যুক্তি হিসাবে DB সারির সাথে একটি সহযোগী অ্যারে নেয়। ফাংশন __construct($data) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[") ব্যবহারকারীর নাম"])) ? $data["username"] : ""; $this->hashedPassword = (isset($data["password"])) ? $data["password"] : ""; $this- >ইমেল = ($data["email"])? $data["email"] : "" $this->joinDate = (isset($data["join_date"])) $data[" join_date "] : "";)
পাবলিক ফাংশন সংরক্ষণ ($isNewUser = মিথ্যা) ( //একটি নতুন ডাটাবেস অবজেক্ট তৈরি করুন। $db = নতুন DB(); //যদি ব্যবহারকারী ইতিমধ্যে নিবন্ধিত থাকে এবং আমরা //শুধু তাদের তথ্য আপডেট করছি। if(!$isNewUser) ) (//ডেটা অ্যারে সেট করুন $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"email" => ""$this->email"");
//ডাটাবেসের সারি আপডেট করুন $db->update($data, "users", "id = ".$this->id); )অন্যথায় (//যদি ব্যবহারকারী প্রথমবারের জন্য নিবন্ধিত হয়। $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"" , "email" => ""$this->email"", "join_date" => """.তারিখ("Y-m-d H:i:s", time())""" id = $db; -> সন্নিবেশ ($ডেটা, "ব্যবহারকারী"); $this->joinDate = time() ) ) ?>

ব্যাখ্যা

কোডের প্রথম অংশ, ক্লাস জোনের বাইরে, নিশ্চিত করে যে ক্লাসটি ডাটাবেসের সাথে সংযুক্ত রয়েছে (যেহেতু ব্যবহারকারীর ক্লাসের একটি ফাংশন রয়েছে যার জন্য এই শ্রেণীর প্রয়োজন)।

"সুরক্ষিত" শ্রেণীর (1ম পাঠে ব্যবহৃত) ভেরিয়েবলের পরিবর্তে, আমরা সেগুলিকে "পাবলিক" হিসাবে সংজ্ঞায়িত করি। এর মানে হল যে ইউজার অবজেক্টের সাথে কাজ করার সময় ক্লাসের বাইরের যেকোনো কোডের এই ভেরিয়েবলগুলিতে অ্যাক্সেস থাকে।

কনস্ট্রাক্টর একটি অ্যারে নেয় যেখানে টেবিলের কলামগুলি কী। আমরা $this->variablename ব্যবহার করে একটি ক্লাস ভেরিয়েবল সংজ্ঞায়িত করি। এই শ্রেণীর উদাহরণে, আমরা প্রথমে একটি নির্দিষ্ট কী-এর মান বিদ্যমান কিনা তা পরীক্ষা করি। যদি হ্যাঁ, তাহলে আমরা সেই মানটিতে ক্লাস ভেরিয়েবল সেট করি। অন্যথায়, খালি স্ট্রিং. কোডটি স্বরলিপির সংক্ষিপ্ত রূপ ব্যবহার করে যদি:

$value = (3 == 4)? "A" : "B";

এই উদাহরণে আমরা 3টি চারের সমান কিনা তা পরীক্ষা করছি! যদি হ্যাঁ - তাহলে $value = "A", no - $value = "B"৷ আমাদের উদাহরণে, ফলাফল হল $value = "B"।

আমরা ডাটাবেসে ব্যবহারকারীদের সম্পর্কে তথ্য সংরক্ষণ করি

সংরক্ষণ ফাংশনটি ব্যবহারকারী অবজেক্টের বর্তমান মানগুলির সাথে ডাটাবেস টেবিলে পরিবর্তন করতে ব্যবহৃত হয়। এই ফাংশনটি আমরা প্রথম পাঠে তৈরি করা DB ক্লাস ব্যবহার করে। ক্লাস ভেরিয়েবল ব্যবহার করে, $ডেটা অ্যারে সেট করা হয়। যদি ব্যবহারকারীর ডেটা প্রথমবার সংরক্ষণ করা হয়, তাহলে $isNewUserকে $true (ডিফল্টরূপে মিথ্যা) হিসাবে পাস করা হয়। যদি $isNewUser = $true হয় তাহলে DB ক্লাসের insert() ফাংশন বলা হয়। অন্যথায়, আপডেট() ফাংশন বলা হয়। উভয় ক্ষেত্রেই, ব্যবহারকারী বস্তুর তথ্য ডাটাবেসে সংরক্ষণ করা হবে।

ক্লাস UserTools.class.php

এই ক্লাসে এমন ফাংশন থাকবে যা ব্যবহারকারীদের সাথে সম্পর্কিত: লগইন(), লগআউট(), চেক ইউজারনেমএক্সস্ট() এবং গেট()। কিন্তু এই অ্যাপ্লিকেশনের সম্প্রসারণের সাথে, আপনি আরও অনেক কিছু যোগ করতে পারেন।

//UserTools.class.php require_once "User.class.php"; প্রয়োজন_একবার "DB.class.php";
ক্লাস ইউজার টুলস(
// ব্যবহারকারীকে লগ ইন করুন। // ব্যবহারকারীর নাম এবং পাসওয়ার্ড ডাটাবেসের একটি সারির সাথে মেলে কিনা তা দেখতে প্রথমে পরীক্ষা করে। //যদি এটি সফল হয়, সেশন ভেরিয়েবল সেট করুন //এবং ব্যবহারকারী অবজেক্টের মধ্যে সংরক্ষণ করুন।
পাবলিক ফাংশন লগইন ($username, $password)
{
$hashedPassword = md5($password); $result = mysql_query("নির্বাচন করুন * ব্যবহারকারীদের থেকে যেখানে ব্যবহারকারীর নাম = "$ ব্যবহারকারীর নাম" এবং পাসওয়ার্ড = "$ হ্যাশডপাসওয়ার্ড""); if(mysql_num_rows($result) == 1) ( $_SESSION["user"] = সিরিয়ালাইজ(নতুন ব্যবহারকারী(mysql_fetch_assoc($result))); $_SESSION["login_time"] = time(); $_SESSION["logged_in "] = 1; সত্য ফেরত দিন; )অন্যথায় ( মিথ্যা ফেরত দিন; ) )
// ব্যবহারকারীকে লগ আউট করুন। সেশন ভেরিয়েবল ধ্বংস. সর্বজনীন ফাংশন লগআউট() ( আনসেট($_SESSION["ব্যবহারকারী"]); আনসেট($_SESSION["লগইন_টাইম"]); আনসেট($_SESSION["logged_in"]); session_destroy(); ) // কিনা দেখতে চেক করুন একটি ব্যবহারকারীর নাম বিদ্যমান। // সমস্ত ব্যবহারকারীর নাম অনন্য তা নিশ্চিত করার জন্য এটি নিবন্ধনের সময় বলা হয়৷ পাবলিক ফাংশন চেক ইউজারনেম এক্সিস্টস($ব্যবহারকারী নাম) ( $result = mysql_query("ব্যবহারকারীদের থেকে আইডি নির্বাচন করুন যেখানে username="$username""); if(mysql_num_rows($result) == 0) ( মিথ্যা ফেরত দিন; )else( true ফেরত দিন; )
}
// একটি ব্যবহারকারী পান // একটি ব্যবহারকারী বস্তু ফেরত দেয়। একটি ইনপুট পাবলিক ফাংশন get($id) ($db = new DB(); $result = $db->select("users", "id = $id") হিসাবে ব্যবহারকারীদের id নেয়; নতুন ব্যবহারকারী ($result) ফেরত দেয় );
?>

লগইন() ফাংশন

লগইন() ফাংশনটি নাম দ্বারা পরিষ্কার। এটি ব্যবহারকারীর আর্গুমেন্ট নেয় $username এবং $password এবং চেক করে যে তারা মেলে। যদি সবকিছু মিলে যায়, সমস্ত তথ্য সহ একটি ব্যবহারকারী অবজেক্ট তৈরি করে এবং সেশনে এটি সংরক্ষণ করে। দয়া করে মনে রাখবেন যে আমরা শুধুমাত্র PHP serialize() ফাংশন ব্যবহার করছি। এটি বস্তুর একটি সংরক্ষিত সংস্করণ তৈরি করে যা unserialize() ব্যবহার করে সহজেই আনসিরিয়ালাইজ করা যায়। এছাড়াও, লগইন সময় সংরক্ষণ করা হবে. এটি পরে ব্যবহারকারীদের সাইটে থাকার দৈর্ঘ্য সম্পর্কে তথ্য প্রদান করতে ব্যবহার করা যেতে পারে।

আপনি হয়তো লক্ষ্য করতে পারেন যে আমরা $_SESSION["logged_in"] 1-এ সেট করেছি। এটি ব্যবহারকারী লগ ইন করেছে কিনা তা আমাদের প্রতিটি পৃষ্ঠায় সহজেই পরীক্ষা করতে দেয়। শুধুমাত্র এই পরিবর্তনশীল চেক করা যথেষ্ট।

লগআউট() ফাংশন

এছাড়াও একটি সহজ ফাংশন. পিএইচপি আনসেট() ফাংশন মেমরিতে ভেরিয়েবল সাফ করে, যখন session_destroy() সেশন মুছে দেবে।

checkUsernameExists() ফাংশন

যে কেউ ইংরেজি জানে তারা সহজেই ফাংশন বুঝতে পারবে। এটি কেবল ডাটাবেসকে জিজ্ঞাসা করে যে অনুরূপ লগইন ব্যবহার করা হয়েছে কিনা।

get() ফাংশন

এই ফাংশনটি ব্যবহারকারীর অনন্য আইডি নেয় এবং DB ক্লাস ব্যবহার করে ডাটাবেসে একটি ক্যোয়ারী করে, যথা সিলেক্ট() ফাংশন। এটি বেশ কয়েকটি ব্যবহারকারীর তথ্য সহ একটি সহযোগী অ্যারে নেবে এবং একটি নতুন ব্যবহারকারী অবজেক্ট তৈরি করবে, অ্যারেটি কনস্ট্রাক্টরের কাছে প্রেরণ করবে।

আমি এটি কোথায় ব্যবহার করতে পারি? উদাহরণস্বরূপ, আপনি যদি এমন একটি পৃষ্ঠা তৈরি করেন যা নির্দিষ্ট ব্যবহারকারীর প্রোফাইল প্রদর্শন করতে হবে, তাহলে আপনাকে এই তথ্যটি গতিশীলভাবে আনতে হবে। এইভাবে আপনি এটি করতে পারেন: (আসুন বলি URLটি হল http://www.website.com/profile.php?userID=3)

//দ্রষ্টব্য: আপনাকে প্রথমে একটি ডাটাবেস সংযোগ খুলতে হবে। //এটি করার বিষয়ে আরও তথ্যের জন্য পার্ট 1 দেখুন। //আপনাকে নিশ্চিত করতে হবে যে আপনি ক্লাস ফাইলগুলি অন্তর্ভুক্ত করেছেন।
$tools = নতুন UserTools(); $user = $tools->get($_REQUEST["userID"]); প্রতিধ্বনি "ব্যবহারকারীর নাম: ".$ ব্যবহারকারী->ব্যবহারকারীর নাম।""; প্রতিধ্বনি "যোগদান করেছেন: ".$user->joinDate."";

সহজে ! এটা কি সত্যি?

সার্ভার সাইডে চূড়ান্ত স্পর্শ: global.inc.php

সাইটের প্রতিটি পৃষ্ঠার জন্য global.inc.php প্রয়োজন। কেন? এইভাবে আমরা পৃষ্ঠায় আমাদের প্রয়োজনীয় সমস্ত স্বাভাবিক ক্রিয়াকলাপ রাখব। উদাহরণস্বরূপ, আমরা session_start() শুরু করব। ডাটাবেস সংযোগও খুলবে।

need_once "class/UserTools.class.php";
need_one "class/DB.class.php";
//ডাটাবেসের সাথে সংযোগ করুন $db = নতুন DB(); $db->কানেক্ট();
//UserTools অবজেক্ট $userTools = নতুন UserTools(); // অধিবেশন শুরু করুন
session_start();
//রিফ্রেশ সেশন ভেরিয়েবল যদি লগ ইন করা থাকে if(isset($_SESSION["logged_in"])) ( $user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($user->id) ) ?>

সে কি করছে?

এখানে বেশ কিছু কাজ চলছে। প্রথমত, আমরা ডাটাবেসের সাথে একটি সংযোগ খুলি।

সংযোগ করার পর, আমরা session_start() ফাংশন শুরু করি। ফাংশনটি একটি সেশন তৈরি করে বা বর্তমানটি চালিয়ে যায় যদি ব্যবহারকারী ইতিমধ্যে লগ ইন করে থাকে। যেহেতু আমাদের অ্যাপ্লিকেশনটি ব্যবহারকারীদের লগ ইন/আউট করার জন্য ডিজাইন করা হয়েছে, তাই প্রতিটি পৃষ্ঠায় এই বৈশিষ্ট্যটি প্রয়োজন।

এরপরে, আমরা ব্যবহারকারী লগ ইন করা আছে কিনা তা পরীক্ষা করি। যদি তাই হয়, আমরা সর্বশেষ ব্যবহারকারীর তথ্য প্রতিফলিত করতে $_SESSION["user"] আপডেট করব। উদাহরণস্বরূপ, যদি একজন ব্যবহারকারী তার ইমেল পরিবর্তন করেন, তবে পুরানোটি সেশনে সংরক্ষণ করা হবে। কিন্তু স্বয়ংক্রিয় আপডেটের সাথে এটি হবে না।

এই দ্বিতীয় পর্ব শেষ! আগামীকাল এই বিষয়ে চূড়ান্ত পাঠের জন্য তাকান।

সব ভাল!

$HTTP_SERVER_VARS [মোছা হয়েছে]

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

$_SERVER -- $HTTP_SERVER_VARS [মোছা হয়েছে]সার্ভার এবং এক্সিকিউশন পরিবেশ সম্পর্কে তথ্য

বর্ণনা

$_SERVER ভেরিয়েবল হল একটি অ্যারে যাতে তথ্য থাকে যেমন স্ক্রিপ্ট হেডার, পাথ এবং অবস্থান। এই অ্যারের এন্ট্রিগুলি ওয়েব সার্ভার দ্বারা তৈরি করা হয়। কোন গ্যারান্টি নেই যে প্রতিটি ওয়েব সার্ভার তাদের যেকোনো একটি প্রদান করবে; সার্ভার তাদের কিছু বাদ দিতে পারে বা এখানে তালিকাভুক্ত নয় এমন কিছু প্রদান করতে পারে। যাইহোক, এর মধ্যে অনেকগুলি ভেরিয়েবল » CGI/1.1 স্পেসিফিকেশনে উপস্থিত রয়েছে, তাই আপনি তাদের আপনার নির্দিষ্ট ওয়েব সার্ভারে প্রয়োগ করার আশা করতে পারেন।

$HTTP_SERVER_VARS ভেরিয়েবলে একই প্রাথমিক তথ্য রয়েছে, কিন্তু এটি সুপারগ্লোবাল নয়।

(উল্লেখ্য যে $HTTP_SERVER_VARS এবং $_SERVER ভিন্ন ভিন্ন ভেরিয়েবল, তাই পিএইচপি তাদের অনুযায়ী আচরণ করে)।

এছাড়াও মনে রাখবেন যে "দীর্ঘ অ্যারে" PHP 5.4.0 এ সরানো হয়েছে, তাই $HTTP_SERVER_VARS আর বিদ্যমান নেই।

সূচক আপনি $_SERVER অ্যারেতে নিম্নলিখিত উপাদানগুলির মধ্যে কোনটি খুঁজে পেতে পারেন বা নাও পেতে পারেন৷ লক্ষ্য করুন যে কিছু, যদি থাকে, আইটেম পাওয়া যাবে (বা সত্যিই একটি পার্থক্য তৈরি করবে) যদি পিএইচপি কমান্ড লাইনে চলছে। "PHP_SELF"স্ক্রিপ্ট ফাইলের নাম যা বর্তমানে চলছে, ডকুমেন্ট রুটের সাথে সম্পর্কিত। উদাহরণস্বরূপ, http://example.com/foo/bar.php এ স্ক্রিপ্টে $_SERVER["PHP_SELF"] হবে /foo/bar.php। __FILE__ ধ্রুবক বর্তমান (অর্থাৎ সংযুক্ত) ফাইলের সম্পূর্ণ পাথ এবং ফাইলের নাম ধারণ করে।যদি PHP কমান্ড লাইনে চলমান থাকে, তাহলে এই ভেরিয়েবলটিতে স্ক্রিপ্টের নাম থাকে, যা PHP 4.3.0 দিয়ে শুরু হয়। আগে এটা অনুপলব্ধ ছিল. "আরজিভি"আর্গুমেন্টের একটি বিন্যাস স্ক্রিপ্টে পাঠানো হয়েছে। যখন স্ক্রিপ্টটি কমান্ড লাইনে চালানো হয়, তখন এটি কমান্ড লাইন বিকল্পগুলিতে C-এর মতো অ্যাক্সেস দেয়। GET পদ্ধতির মাধ্যমে কল করা হলে, এই অ্যারেতে ক্যোয়ারী স্ট্রিং থাকবে। "আরজিসি" স্ক্রিপ্টে পাস করা প্যারামিটারের সংখ্যা রয়েছে (যদি কমান্ড লাইনে চালু করা হয়)।". "GATEWAY_INTERFACE" সার্ভার দ্বারা ব্যবহৃত CGI স্পেসিফিকেশনের সংস্করণ রয়েছে;যেমন" CGI/1.1"SERVER_ADDR" যে সার্ভারে বর্তমান স্ক্রিপ্ট চলছে তার IP ঠিকানা।"SERVER_NAME" হোস্টের নাম যার উপর বর্তমান স্ক্রিপ্ট চলছে। যদি স্ক্রিপ্টটি ভার্চুয়াল হোস্টে চলমান থাকে তবে এতে সেই ভার্চুয়াল হোস্টের জন্য সংজ্ঞায়িত নাম থাকবে।"; "SERVER_SOFTWARE" সার্ভার সনাক্তকরণ স্ট্রিং শিরোনামে নির্দিষ্ট করা হয় যখন একটি অনুরোধের প্রতিক্রিয়া ঘটে। "SERVER_PROTOCOL"", "তথ্য প্রোটোকলের নাম এবং সংস্করণ যার মাধ্যমে পৃষ্ঠাটি অনুরোধ করা হয়েছিল; যেমন "", "HTTP/1.0", ""REQUEST_METHOD"".

পৃষ্ঠাটি অনুরোধ করার জন্য কি পদ্ধতি ব্যবহার করা হয়েছিল; যেমন ":

পিএইচপি স্ক্রিপ্ট শিরোনাম পাঠানোর পরে প্রস্থান করে (অর্থাৎ, আউটপুট বাফার না করে কোনো আউটপুট সম্পাদন করার পরে), যদি পদ্ধতিটি ব্যবহার করে অনুরোধ করা হয় তথ্য প্রোটোকলের নাম এবং সংস্করণ যার মাধ্যমে পৃষ্ঠাটি অনুরোধ করা হয়েছিল; যেমন ".

"REQUEST_TIME" অনুরোধের শুরুর টাইমস্ট্যাম্প। PHP 5.1.0 থেকে শুরু করে উপলব্ধ।"REQUEST_TIME_FLOAT" অনুরোধের শুরুর টাইমস্ট্যাম্প, মাইক্রোসেকেন্ডে সঠিক। PHP 5.4.0 থেকে শুরু করে উপলব্ধ। "QUERY_STRING"ক্যোয়ারী স্ট্রিং, যদি থাকে, যেটি পৃষ্ঠাটি পুনরুদ্ধার করেছে। "DOCUMENT_ROOT"যে ডকুমেন্ট রুট ডিরেক্টরিতে বর্তমান স্ক্রিপ্টটি কার্যকর করা হয় সেটি সার্ভার কনফিগারেশন ফাইলে নির্দিষ্ট করা হয়। "HTTP_ACCEPT" হেডার বিষয়বস্তুস্বীকার করুন:বর্তমান অনুরোধ থেকে, যদি একটি থাকে। "HTTP_ACCEPT" " HTTP_ACCEPT_CHARSET "স্বীকার-অক্ষর: বর্তমান অনুরোধ থেকে, যদি একটি থাকে। যেমন: "". iso-8859-1,*,utf-8 "HTTP_ACCEPT" "HTTP_ACCEPT_ENCODING" স্বীকার-এনকোডিং:". জিজিপ "HTTP_ACCEPT" " HTTP_ACCEPT_LANGUAGE "স্বীকার-ভাষা: বর্তমান অনুরোধ থেকে, যদি একটি থাকে। যেমন: "". en "HTTP_ACCEPT" "HTTP_CONNECTION"স্বীকার-ভাষা: সংযোগ:". কিপ-লাইভ "HTTP_ACCEPT" "HTTP_HOST"হোস্ট:বর্তমান অনুরোধ থেকে, যদি একটি থাকে। "HTTP_REFERER"পৃষ্ঠার ঠিকানা (যদি থাকে) যা ব্যবহারকারীর ব্রাউজারকে এই পৃষ্ঠায় নিয়ে এসেছে। "HTTP_ACCEPT" এই হেডার ব্যবহারকারীর ওয়েব ব্রাউজার দ্বারা সেট করা হয়.সমস্ত ব্রাউজার এটি ইনস্টল করে না এবং কিছু আপনাকে অতিরিক্ত বৈশিষ্ট্য হিসাবে HTTP_REFERER হেডারের বিষয়বস্তু পরিবর্তন করার অনুমতি দেয়। এক কথায়, তাকে সত্যিই বিশ্বাস করা যায় না। " HTTP_USER_AGENT "ব্যবহারকারী-এজেন্ট: বর্তমান অনুরোধ থেকে, যদি একটি থাকে। এই লাইনে সেই ব্রাউজারটি রয়েছে যা ব্যবহারকারী এই পৃষ্ঠার অনুরোধ করতে ব্যবহার করেন। একটি সাধারণ উদাহরণ হল লাইন: Mozilla/4.5 (X11; U; Linux 2.2.9 i586). অন্যান্য জিনিসগুলির মধ্যে, আপনি ফাংশনের সাথে এই মানটি ব্যবহার করতে পারেন get_browser()

পৃষ্ঠাটি অনুরোধ করার জন্য কি পদ্ধতি ব্যবহার করা হয়েছিল; যেমন ": ব্যবহারকারীর ব্রাউজারের ক্ষমতার সাথে আপনার পৃষ্ঠার আউটপুট মানিয়ে নিতে "HTTPS"অনুরোধটি HTTPS প্রোটোকলের মাধ্যমে করা হলে একটি অ-খালি মান গ্রহণ করে।

মনে রাখবেন IIS এর সাথে ISAPI ব্যবহার করার সময় মান হবে বন্ধ, যদি অনুরোধটি HTTPS এর মাধ্যমে করা না হয়। "REMOTE_ADDR"

পৃষ্ঠাটি অনুরোধ করার জন্য কি পদ্ধতি ব্যবহার করা হয়েছিল; যেমন ": যে আইপি ঠিকানা থেকে ব্যবহারকারী বর্তমান পৃষ্ঠাটি দেখছেন। "REMOTE_HOST"দূরবর্তী হোস্ট যেখান থেকে ব্যবহারকারী বর্তমান পৃষ্ঠাটি দেখছেন। বিপরীত DNS লুকআপ REMOTE_ADDR ভেরিয়েবলের মানের উপর ভিত্তি করে। এই পরিবর্তনশীল তৈরি করতে আপনার ওয়েব সার্ভার কনফিগার করা আবশ্যক।.

উদাহরণস্বরূপ, Apache এ আপনার নির্দেশের উপস্থিতি প্রয়োজন রিমোট মেশিনের পোর্ট যা ওয়েব সার্ভারের সাথে যোগাযোগ করতে ব্যবহৃত হয়।"REMOTE_USER" প্রমাণীকৃত ব্যবহারকারী।"REDIRECT_REMOTE_USER" অনুরোধটি অভ্যন্তরীণভাবে পুনঃনির্দেশিত হলে প্রমাণীকৃত ব্যবহারকারী।"SCRIPT_FILENAME"

স্ক্রিপ্টের নিখুঁত পথ যা বর্তমানে কার্যকর করা হচ্ছে।

পৃষ্ঠাটি অনুরোধ করার জন্য কি পদ্ধতি ব্যবহার করা হয়েছিল; যেমন ":

যদি ফাইল.php বা ../file.php এর মতো আপেক্ষিক পাথ ব্যবহার করে কমান্ড লাইনে (CLI) স্ক্রিপ্ট চালানো হয়, $_SERVER["SCRIPT_FILENAME"] ভেরিয়েবল ব্যবহারকারীর দ্বারা নির্দিষ্ট করা আপেক্ষিক পাথ ধারণ করবে।

"SERVER_ADMIN" এই ভেরিয়েবলটি সার্ভার কনফিগারেশন ফাইলের একটি নির্দেশ থেকে এর মান (অ্যাপাচির জন্য) পায়। যদি স্ক্রিপ্টটি ভার্চুয়াল হোস্টে চলমান থাকে তবে এটি সেই ভার্চুয়াল হোস্টের জন্য সংজ্ঞায়িত মান হবে।"SERVER_PORT" সার্ভার কম্পিউটারের পোর্ট যা ওয়েব সার্ভার সংযোগ করতে ব্যবহার করে। 80 ডিফল্ট সেটিংসের জন্য, মান হবে "

পৃষ্ঠাটি অনুরোধ করার জন্য কি পদ্ধতি ব্যবহার করা হয়েছিল; যেমন ": "; SLL ব্যবহার করে, উদাহরণস্বরূপ, এই মানটি নিরাপদ HTTP সংযোগের জন্য কনফিগার করা হবে৷ Apache 2-এ একটি শারীরিক (বাস্তব) পোর্ট পেতে, আপনাকে ইনস্টল করতে হবে UseCanonicalName = চালু এবং UseCanonicalPhysicalPort = চালু

, অন্যথায় এই মানটি প্রতিস্থাপিত হতে পারে এবং প্রকৃত পোর্টের প্রকৃত মান ফেরত দিতে পারে না। বর্ধিত নিরাপত্তা প্রয়োজন এমন অ্যাপ্লিকেশনের ক্ষেত্রে এই মানটির উপর নির্ভর করা অনিরাপদ।"SERVER_SIGNATURE" সার্ভার সংস্করণ এবং ভার্চুয়াল হোস্ট নাম সমন্বিত একটি স্ট্রিং যা সক্ষম থাকলে সার্ভার-উত্পন্ন পৃষ্ঠাগুলিতে যোগ করা হয়৷

পৃষ্ঠাটি অনুরোধ করার জন্য কি পদ্ধতি ব্যবহার করা হয়েছিল; যেমন ": "PATH_অনুবাদ" ফাইলসিস্টেম- (ডকুমেন্ট রুট- নয়) বর্তমান স্ক্রিপ্টে ভিত্তিক পাথ, সার্ভার ভার্চুয়াল-টু-রিয়েল ম্যাপিং করার পরে। PHP 4.3.2 অনুসারে, PATH_TRANSLATED ভেরিয়েবলটি আর Apache 2 SAPI-তে পরোক্ষভাবে সেট করা হয়নি, Apache সংস্করণ 1 এর তুলনায় যেখানে এটি SCRIPT_FILENAME ভেরিয়েবলের মতো একই মান সেট করা হয়েছিল যখন Apache ব্যবহার না করে।এই পরিবর্তনটি CGI স্পেসিফিকেশন মেনে চলার জন্য করা হয়েছে, যেখানে PATH_TRANSLATED ভেরিয়েবল শুধুমাত্র তখনই থাকা উচিত যখন PATH_INFO সংজ্ঞায়িত করা হয়।

Apache 2 ব্যবহারকারীরা নির্দেশিকা ব্যবহার করতে পারেন AcceptPathInfo = চালু PATH_INFO ভেরিয়েবল সেট করতে httpd.conf কনফিগারেশন ফাইলে। "SCRIPT_NAME" বর্তমানে নির্বাহ করা স্ক্রিপ্টের পথ ধারণ করে। এটি এমন পৃষ্ঠাগুলির জন্য দরকারী যা নিজেদেরকে নির্দেশ করতে হবে৷". "PHP_AUTH_DIGEST" HTTP ডাইজেস্ট প্রমাণীকরণ সম্পাদন করার সময়, এই ভেরিয়েবলটিকে "অনুমোদন" শিরোনাম বরাদ্দ করা হয়, যা ক্লায়েন্ট দ্বারা পাঠানো হয় (এটি অবশ্যই উপযুক্ত বৈধতার জন্য ব্যবহার করা উচিত)।"PHP_AUTH_USER" যখন HTTP প্রমাণীকরণ সঞ্চালিত হয়, তখন এই ভেরিয়েবলটি ব্যবহারকারীর দ্বারা প্রদত্ত ব্যবহারকারীর নামের সাথে সেট করা হয়।"PHP_AUTH_PW" যখন HTTP প্রমাণীকরণ করা হয়, তখন এই ভেরিয়েবলটি ব্যবহারকারীর দেওয়া পাসওয়ার্ডে সেট করা হয়।"AUTH_TYPE" যখন HTTP প্রমাণীকরণ করা হয়, এই ভেরিয়েবলটি ব্যবহার করা প্রমাণীকরণের ধরণে সেট করা হয়।"PATH_INFO" স্ক্রিপ্ট নামের পরে কিন্তু ক্যোয়ারী স্ট্রিংয়ের আগে, যদি উপলব্ধ থাকে তবে ব্যবহারকারীর দ্বারা সরবরাহকৃত যে কোনো পথ রয়েছে। উদাহরণস্বরূপ, যদি বর্তমান স্ক্রিপ্টটি URL http://www.example.com/php/path_info.php/some/stuff?foo=bar থেকে অনুরোধ করা হয়, তাহলে $_SERVER["PATH_INFO"] ভেরিয়েবলটি থাকবে?>

/কিছু/সামগ্রী

সংযোগ