কাল্পনিক জমা php. এইচটিএমএল ফর্ম: পিএইচপি ফর্ম - একই পৃষ্ঠায় একটি অনুরোধ পাঠান। কিভাবে PHP _SELF এর সাথে ঝামেলা এড়ানো যায়

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

একটি সাইটে, আমাকে একটি ফর্মে দুটি সাবমিট বোতাম ব্যবহার করতে হবে, যা বোতাম টিপানোর উপর নির্ভর করে বিভিন্ন পিএইচপি "হ্যান্ডলারদের" কাছে ভর্তি ডেটা পাঠাবে৷ গুগল আমাকে যুক্তিসঙ্গত কিছুর উত্তর দেয়নি, দৃশ্যত আমি এটি সঠিকভাবে জিজ্ঞাসা করিনি, তাই আমাকে নিজেই এটি নিয়ে আসতে হয়েছিল।

তাই আমি আপনার বিবেচনার জন্য এটি পাড়া.

সমস্যার সারমর্ম

এটি নিজে প্রয়োগ করার পরে, আমি এখনও বেশ কয়েকটি সমাধান খুঁজে পেয়েছি যা নিয়মিত বোতামগুলির ব্যবহারের উপর ভিত্তি করে যা জেএসকে স্ক্রু করা হয়েছিল।

আমি প্রায় একই ভাবে আমার পরিকল্পনা বাস্তবায়ন করেছি, কিন্তু স্ট্যান্ডার্ড জমা টাইপ ব্যবহার করেছি। সবকিছু কাজ করছে বলে মনে হচ্ছে এবং আমার মতে আমার সমাধানটি আরও যৌক্তিকভাবে সঠিক।

এই সমাধানটি বিনামূল্যে হোস্টিং এবং আপনি পেশাদার হোস্টিং উভয় ক্ষেত্রেই সমানভাবে কাজ করবে। এই পদ্ধতিটি সম্পূর্ণরূপে ক্লায়েন্টের দিকে প্রয়োগ করা হয় এবং সার্ভারকে ধীর করা উচিত নয়।

আমি কী চাই এবং এটি কীভাবে কাজ করে তা বোঝা সহজ করার জন্য, এখানে একটি সত্যিই কার্যকর উদাহরণ রয়েছে, একটি ফর্মের আকারে যেখানে 2টি জমা রয়েছে যা বিভিন্ন পৃষ্ঠায় ডেটা পাঠায়।

পিএইচপি সম্পর্কে দুর্দান্ত জিনিসগুলির মধ্যে একটি হল এটি এইচটিএমএল ফর্মগুলির সাথে কাজ করার উপায়। এখানে প্রধান বিষয় হল প্রতিটি ফর্ম উপাদান স্বয়ংক্রিয়ভাবে আপনার পিএইচপি প্রোগ্রামগুলিতে উপলব্ধ হয়ে যায়। PHP-তে ফর্ম ব্যবহার করার বিষয়ে বিস্তারিত তথ্যের জন্য, বিভাগটি পড়ুন। এখানে একটি উদাহরণ HTML ফর্ম:

উদাহরণ #1 সহজতম HTML ফর্ম

তোমার নাম:

আপনার বয়স:

এই ফর্ম সম্পর্কে বিশেষ কিছু নেই. এটি কোনো বিশেষ ট্যাগ ছাড়াই একটি নিয়মিত HTML ফর্ম। যখন ব্যবহারকারী ফর্মটি পূরণ করবে এবং সাবমিট বোতামে ক্লিক করবে, তখন action.php পৃষ্ঠাটি কল করা হবে। এই ফাইলের মত কিছু থাকতে পারে:

উদাহরণ #2 ফর্ম ডেটা প্রদর্শন করা

হ্যালো, .
তোমার বয়স হয়েছে।

এই প্রোগ্রামের উদাহরণ আউটপুট:

হ্যালো, সের্গেই। আপনার বয়স 30 বছর।

আপনি যদি htmlspecialchars() এবং এর সাথে কোডের টুকরোগুলি বিবেচনা না করেন (int), এই কোডের অপারেটিং নীতি সহজ এবং বোধগম্য হওয়া উচিত। htmlspecialchars() নিশ্চিত করে যে "বিশেষ" HTML অক্ষরগুলি সঠিকভাবে এনকোড করা হয়েছে যাতে ক্ষতিকারক HTML বা জাভাস্ক্রিপ্ট আপনার পৃষ্ঠায় ঢোকানো না হয়৷ বয়স ক্ষেত্র, যা আমরা জানি একটি সংখ্যা হওয়া উচিত, আমরা কেবল একটি পূর্ণসংখ্যাতে রূপান্তর করতে পারি, যা স্বয়ংক্রিয়ভাবে অবাঞ্ছিত অক্ষরগুলি থেকে মুক্তি পাবে। পিএইচপি ফিল্টার এক্সটেনশন ব্যবহার করে স্বয়ংক্রিয়ভাবে এটি করতে পারে। $_POST["নাম"] এবং $_POST["বয়স"] ভেরিয়েবলগুলি পিএইচপি দ্বারা স্বয়ংক্রিয়ভাবে আপনার জন্য সেট করা হয়েছে৷ পূর্বে আমরা $_SERVER সুপারগ্লোবাল ভেরিয়েবল ব্যবহার করতাম, কিন্তু এখানে আমরা $_POST সুপারগ্লোবাল ভেরিয়েবল ব্যবহার করি, যেটিতে সমস্ত POST ডেটা রয়েছে। লক্ষ্য করুন পাঠানোর পদ্ধতিআমাদের ফর্মের (পদ্ধতি) হল POST। আমরা যদি পদ্ধতি ব্যবহার করি পাওয়া, তাহলে আমাদের ফর্মের তথ্য সুপারগ্লোবাল ভেরিয়েবল $_GET-এ থাকবে। বিকল্পভাবে, আপনি $_REQUEST ভেরিয়েবল ব্যবহার করতে পারেন যদি ডেটার উৎস কোন ব্যাপার না হয়। এই ভেরিয়েবলটিতে GET, POST, COOKIE ডেটার মিশ্রণ রয়েছে।

15 বছর আগে

HTTP স্পেসিফিকেশন অনুযায়ী, সার্ভারের প্রান্তে কোনো কিছুর অবস্থা পরিবর্তন করতে ফর্মটি ব্যবহার করার সময় আপনার POST পদ্ধতি ব্যবহার করা উচিত। উদাহরণস্বরূপ, যদি কোনো পৃষ্ঠায় ব্যবহারকারীদের তাদের নিজস্ব মন্তব্য যোগ করার অনুমতি দেওয়ার জন্য একটি ফর্ম থাকে, যেমন এখানে পৃষ্ঠায়, ফর্মটিতে POST ব্যবহার করা উচিত৷ আপনি যদি একটি পৃষ্ঠায় "পুনঃলোড" বা "রিফ্রেশ" ক্লিক করেন যেটি আপনি একটি POST এর মাধ্যমে পৌঁছেছেন, এটি প্রায় সবসময়ই একটি ত্রুটি -- আপনার একই মন্তব্য দুবার পোস্ট করা উচিত নয় -- যে কারণে এই পৃষ্ঠাগুলি বুকমার্ক বা ক্যাশে করা হয় না।

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

২ বছর আগে

স্পষ্ট করার যোগ্য:

POST GET এর চেয়ে বেশি নিরাপদ নয়।

GET বনাম POST বেছে নেওয়ার কারণগুলির মধ্যে বিভিন্ন কারণ জড়িত যেমন অনুরোধের উদ্দেশ্য (আপনি কি তথ্য "জমা করছেন"?), অনুরোধের আকার (একটি URL কতদিন হতে পারে তার সীমাবদ্ধতা আছে, এবং GET প্যারামিটার পাঠানো হয় ইউআরএল), এবং আপনি কত সহজে অ্যাকশনটি শেয়ার করার যোগ্য হতে চান -- উদাহরণ, Google সার্চগুলি পাওয়া যায় কারণ এটি URL ভাগ করে অন্য কারো সাথে অনুসন্ধান ক্যোয়ারীটি অনুলিপি করা এবং শেয়ার করা সহজ করে তোলে।

নিরাপত্তা এখানে শুধুমাত্র একটি বিবেচ্য বিষয় কারণ একটি GET শেয়ার করা একটি পোস্টের চেয়ে সহজ৷ উদাহরণ: আপনি GET দ্বারা একটি পাসওয়ার্ড পাঠাতে চান না, কারণ ব্যবহারকারী ফলস্বরূপ URL শেয়ার করতে পারে এবং অসাবধানতাবশত তাদের পাসওয়ার্ড প্রকাশ করতে পারে।

যাইহোক, যদি আপনি নেটওয়ার্ক সংযোগ রক্ষা করতে TLS/SSL মোতায়েন না করেন তবে একটি ভালভাবে স্থাপন করা দূষিত ব্যক্তির দ্বারা একটি GET এবং একটি POST একইভাবে আটকানো সহজ।

HTTP (সাধারণত পোর্ট 80) এর মাধ্যমে প্রেরিত সমস্ত ফর্মই অনিরাপদ, এবং আজ (2017), একটি পাবলিক ওয়েবসাইটের HTTPS (যা মূলত HTTP + ট্রান্সপোর্ট লেয়ার সিকিউরিটি) ব্যবহার না করার অনেক ভালো কারণ নেই।

বোনাস হিসাবে, আপনি যদি TLS ব্যবহার করেন তবে আপনি আপনার ব্যবহারকারীদের আপনার ট্রাফিকের মধ্যে কোড (ADs) ইনজেক্ট করার ঝুঁকি কমিয়ে দেবেন যা আপনি সেখানে রাখেননি।

POST এবং GET পদ্ধতিগুলি মূলত বাহিনী থেকে পরামিতি স্থানান্তর করতে ব্যবহৃত হয়। POST এবং GET পদ্ধতির মধ্যে প্রধান পার্থক্য হল তথ্য স্থানান্তর করার উপায়। GET পদ্ধতিতে, প্যারামিটারগুলি ঠিকানা বার (URL) এর মাধ্যমে পাস করা হয়, যেমন HTTP অনুরোধ শিরোনামে, যখন POST পদ্ধতিতে পরামিতিগুলি HTTP অনুরোধের মূল অংশের মাধ্যমে প্রেরণ করা হয় এবং ঠিকানা বারে প্রতিফলিত হয় না।

1. বোতাম - ট্যাগ

ট্যাগ একটি ওয়েব পৃষ্ঠায় বোতাম তৈরি করে এবং এর ক্রিয়া ট্যাগ ব্যবহার করে প্রাপ্ত ফলাফলের সাথে সাদৃশ্যপূর্ণ হয় (টাইপ="বাটন | রিসেট | সাবমিট" প্যারামিটার সহ)। এই ট্যাগের বিপরীতে, এটি বোতাম তৈরির জন্য উন্নত বিকল্পগুলি অফার করে৷ উদাহরণস্বরূপ, এই ধরনের একটি বোতামে আপনি ছবি সহ যেকোনো HTML উপাদান রাখতে পারেন। শৈলী ব্যবহার করে, আপনি ফন্ট, পটভূমির রঙ, আকার এবং অন্যান্য পরামিতি পরিবর্তন করে একটি বোতামের চেহারা নির্ধারণ করতে পারেন।

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

বিকল্প:

অক্ষম - উপাদানটির অ্যাক্সেস এবং পরিবর্তন ব্লক করে।

টাইপ - বোতামের ধরন

মান - বোতামের মান যা সার্ভারে পাঠানো হবে বা স্প্রিট ব্যবহার করে পড়া হবে।

পাঠ্য সহ বোতাম

প্যারামিটার অক্ষম ব্লক অ্যাক্সেস এবং বোতাম পরিবর্তন. এই ক্ষেত্রে, এটি ধূসর প্রদর্শিত হয় এবং ব্যবহারকারী দ্বারা সক্রিয় করা যাবে না। উপরন্তু, এই ধরনের একটি বোতাম ট্যাব কী টিপে, মাউস ব্যবহার করে বা অন্যথায় ফোকাস অর্জন করতে পারে না। যাইহোক, এই বোতামের অবস্থা স্ক্রিপ্টের মাধ্যমে পরিবর্তন করা যেতে পারে।

সক্রিয় বোতাম নিষ্ক্রিয় বোতাম

প্যারামিটার TYPE বোতামের ধরন নির্দিষ্ট করে, যা ফর্মের উপর তার আচরণ সেট করে। বিভিন্ন ধরণের বোতামের চেহারাতে কোনো পার্থক্য নেই, তবে প্রতিটি বোতামের নিজস্ব ফাংশন রয়েছে। ডিফল্ট মান: বোতাম।

যুক্তি:

বোতাম - নিয়মিত বোতাম।

রিসেট - প্রবেশ করা ফর্ম ডেটা সাফ করার জন্য এবং মানগুলিকে তাদের আসল অবস্থায় ফিরিয়ে দেওয়ার জন্য একটি বোতাম।

জমা দিন - সার্ভারে ফর্ম ডেটা পাঠানোর জন্য বোতাম।

সাফ ফর্ম জমা ফর্ম

প্যারামিটার VALUE সার্ভারে পাঠানো বোতামটির মান নির্দিষ্ট করে। একটি "নাম = মান" জোড়া সার্ভারে পাঠানো হয়, যেখানে নামটি ট্যাগের নাম প্যারামিটার দ্বারা নির্দিষ্ট করা হয় এবং মানটি মান প্যারামিটার দ্বারা নির্দিষ্ট করা হয়। অর্থ হয় বোতামের পাঠ্যের সাথে মিলে যেতে পারে বা স্বাধীন হতে পারে। স্ক্রিপ্টের মাধ্যমে ডেটা অ্যাক্সেস করতেও মান প্যারামিটার ব্যবহার করা হয়।

ফর্ম জমা

1.1। বোতাম (ইনপুট টাইপ=বোতাম) 1.2। একটি চিত্র সহ বোতাম (ইনপুট প্রকার = চিত্র) একটি ছবি সহ বোতাম

ছবি সহ বোতামগুলি সাবমিট বোতামের মতোই কাজ করে, তবে তারা একটি ছবি উপস্থাপন করে। এটি করতে, type=image এবং src="image.gif" সেট করুন।

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

1.3। ফর্ম জমা দেওয়ার বোতাম (ইনপুট প্রকার = জমা দিন)

স্ক্রিপ্টে ফর্ম জমা দিতে পরিবেশন করে। একটি ফর্ম জমা দেওয়ার জন্য একটি বোতাম তৈরি করার সময়, আপনাকে অবশ্যই 2টি বৈশিষ্ট্য উল্লেখ করতে হবে: type="submit" এবং value="Button text" . Атрибут name необходим, если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки "Сохранить", "Удалить", "Редактировать" и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки.!}

কোন পিএইচপি স্ক্রিপ্ট প্রয়োজন.

1.4। অ্যাকশন বিকল্প নির্বাচন করার জন্য বোতামগুলির একটি অ্যারে (জমা দিন) 2. ফর্ম রিসেট বোতাম (রিসেট)

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

কোন পিএইচপি স্ক্রিপ্ট প্রয়োজন.

3. চেকবক্স

চেকবক্সগুলি ব্যবহারকারীকে বেশ কয়েকটি বিকল্পের সাথে উপস্থাপন করে এবং নির্বিচারে নির্বাচনের অনুমতি দেয় (কোনটিই নয়, এক বা একাধিক)।

সাদা
সবুজ
নীল
লাল
কালো

// বোতামের প্রথম সেট
// বোতামের দ্বিতীয় সেট
// বোতামের তৃতীয় সেট

5. পাঠ্য ক্ষেত্র (পাঠ্য)

আকারের আকারের একটি নিয়মিত পাঠ্য ক্ষেত্র তৈরি করার সময় এবং সর্বাধিক দৈর্ঘ্যের অক্ষরের সর্বাধিক অনুমোদিত দৈর্ঘ্য তৈরি করার সময়, টাইপ অ্যাট্রিবিউট মান টেক্সট নেয়। মান পরামিতি নির্দিষ্ট করা হলে, ক্ষেত্রটি ভেরিয়েবলে নির্দিষ্ট মান প্রদর্শন করবে। একটি ক্ষেত্র তৈরি করার সময়, ক্ষেত্রের নাম উল্লেখ করতে ভুলবেন না, কারণ... এই বৈশিষ্ট্য প্রয়োজন.

6. পাসওয়ার্ড ক্ষেত্র

টেক্সট ফিল্ডের মতোই, ব্যবহারকারীর দ্বারা টাইপ করা অক্ষরগুলি স্ক্রিনে প্রদর্শিত হবে না।

7. লুকানো পাঠ্য ক্ষেত্র (লুকানো)

আপনাকে পৃষ্ঠায় এটি প্রদর্শন না করে স্ক্রিপ্টে কিছু পরিষেবা তথ্য প্রেরণ করার অনুমতি দেয়।

8. ড্রপডাউন তালিকা (নির্বাচন)

একটি ট্যাগ হল একটি ড্রপ-ডাউন বা প্রসারিত তালিকা এবং একই সময়ে এক বা একাধিক সারি নির্বাচন করা যেতে পারে। কিন্তু মান শেষ নির্বাচিত বোতামে পাস করা হবে।

তালিকাটি জোড়া ট্যাগ দিয়ে শুরু হয়। ট্যাগগুলি আপনাকে তালিকার বিষয়বস্তু সংজ্ঞায়িত করতে দেয় এবং মান প্যারামিটার স্ট্রিংয়ের মান নির্ধারণ করে। যদি নির্বাচিত প্যারামিটারটি ট্যাগে নির্দিষ্ট করা থাকে, তবে সারিটি প্রাথমিকভাবে নির্বাচন করা হবে। আকারের প্যারামিটার তালিকাটি কতগুলি লাইন দখল করবে তা নির্দিষ্ট করে। যদি আকার 1 হয়, তাহলে তালিকাটি একটি ড্রপডাউন হবে। যদি একাধিক বৈশিষ্ট্য নির্দিষ্ট করা হয়, তাহলে তালিকা থেকে একাধিক উপাদান নির্বাচন করা যেতে পারে। কিন্তু এই স্কিমটি কার্যত ব্যবহার করা হয় না, এবং আকার = 1 এর সাথে এটির কোন মানে হয় না।

সাদা সবুজ নীল লাল কালো

আপনি যদি একটি অনুমানযোগ্য ক্রম সহ একটি ড্রপ-ডাউন তৈরি করতে চান। উদাহরণস্বরূপ, 2000 থেকে 2050 সাল সহ একটি তালিকা। তারপর নিম্নলিখিত কৌশলটি ব্যবহার করা হয়।

9. মাল্টিলাইন টেক্সট ইনপুট ক্ষেত্র (টেক্সটেরিয়া)

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

একটি মোড়ানো প্যারামিটার আছে - সেটিং লাইন মোড়ানো। সম্ভাব্য মান:

বন্ধ - লাইন মোড়ানো অক্ষম করে;

ভার্চুয়ালস - লাইন ব্রেক দেখায়, কিন্তু লেখাটি যেভাবে লেখা হয়েছে সেভাবে পাঠায়;

শারীরিক - লাইন ব্রেকগুলি তাদের আসল আকারে রেখে দেওয়া হয়।

ডিফল্টরূপে, ট্যাগটি একটি ফাঁকা ক্ষেত্র তৈরি করে যা 20 অক্ষর প্রশস্ত এবং 2টি লাইন নিয়ে গঠিত।


একটি মাল্টি-লাইন টেক্সট ফিল্ড যাতে এইচটিএমএল ফরম্যাটিং মেনে চলে (ট্যাগ ব্যবহার করে লাইন র‍্যাপিং
বা
), তারপর nl2br() ফাংশন ব্যবহার করুন:

মূলত ঢোকানো লাইন 1 মূলত ঢোকানো লাইন 2 মূলত ঢোকানো লাইন 3

10. ফাইল আপলোড করার জন্য বোতাম (ব্রাউজ করুন)

সার্ভারে ফাইল আপলোড করার জন্য কাজ করে। একটি পাঠ্য ক্ষেত্র তৈরি করার সময়, আপনাকে "ফাইল" হিসাবে ক্ষেত্রের ধরনটিও নির্দিষ্ট করতে হবে।

ফাইল আপলোড করুন:

সার্ভারের সাথে ব্রাউজার যোগাযোগের উপায়

HTTP প্রোটোকল দ্বারা প্রদত্ত কয়েকটি পদ্ধতি রয়েছে। এটি গুরুত্বপূর্ণ তথ্য। অন্য কোন উপায় নেই. অনুশীলনে, দুটি ব্যবহার করা হয়: GET হল যখন ঠিকানা বারে ডেটা স্থানান্তর করা হয়, উদাহরণস্বরূপ, যখন ব্যবহারকারী একটি লিঙ্কে ক্লিক করেন। পোস্ট - যখন তিনি ফর্মের একটি বোতামে ক্লিক করেন।

GET পদ্ধতি

GET পদ্ধতি ব্যবহার করে ডেটা স্থানান্তর করার জন্য, আপনাকে একটি HTML পৃষ্ঠায় একটি ফর্ম তৈরি করতে হবে না (কেউ আপনাকে GET পদ্ধতি ব্যবহার করে অনুরোধের জন্য ফর্মগুলি ব্যবহার করতে নিষেধ করে না - তবে এটি বোকামি) - শুধুমাত্র যোগ করার সাথে নথির একটি লিঙ্ক একটি ক্যোয়ারী স্ট্রিং যা একটি variable=value পেয়ারের মতো দেখতে একটি ampersand ব্যবহার করে একত্রিত করা হয় এবং একটি প্রশ্ন চিহ্ন ব্যবহার করে পৃষ্ঠা URL-এ স্ট্রিংটি যুক্ত করা হয় “? "

কিন্তু আপনাকে শুধুমাত্র একটি ভেরিয়েবল পাস করতে হলে key=value পেয়ার ব্যবহার করতে হবে না; এটি করার জন্য, আপনাকে প্রশ্ন চিহ্নের পরে ভেরিয়েবলের VALUE (নাম নয়) লিখতে হবে।

এইভাবে প্যারামিটার পাস করার সুবিধা হল যে ক্লায়েন্টরা POST পদ্ধতি ব্যবহার করতে পারে না (উদাহরণস্বরূপ, সার্চ ইঞ্জিন) তারা এখনও লিঙ্কটি অনুসরণ করে স্ক্রিপ্টে প্যারামিটারগুলি পাস করতে পারে এবং বিষয়বস্তু গ্রহণ করতে পারে।

নেতিবাচক দিকটি হল যে অ্যাড্রেস বারে প্যারামিটারগুলি পরিবর্তন করে ব্যবহারকারী একটি অপ্রত্যাশিত উপায়ে স্ক্রিপ্টটি ঘুরিয়ে দিতে পারে, এটি একটি বিশাল নিরাপত্তা গর্ত তৈরি করে যখন অনির্ধারিত ভেরিয়েবল এবং রেজিস্টার_গ্লোবাল চালু হয় বা কেউ একটি গুরুত্বপূর্ণ ভেরিয়েবলের মান খুঁজে পেতে পারে। (সেশন আইডির মত) শুধু মনিটরের স্ক্রিনে তাকিয়ে।

প্যারামিটার পাস করে সর্বজনীন পৃষ্ঠাগুলি অ্যাক্সেস করতে (বর্ধিত কার্যকারিতা)

তথ্যের স্থানান্তর যা নিরাপত্তা স্তরকে প্রভাবিত করে না

পাস করা প্যারামিটার সহ সুরক্ষিত পৃষ্ঠাগুলি অ্যাক্সেস করতে

নিরাপত্তা স্তর প্রভাবিত তথ্য প্রেরণ

এমন তথ্য প্রেরণ করতে যা ব্যবহারকারী দ্বারা সংশোধন করা যায় না (কিছু এসকিউএল কোয়েরির পাঠ্য প্রেরণ করে।

পোস্ট পদ্ধতি

আপনি শুধুমাত্র একটি HTML পৃষ্ঠায় একটি ফর্ম ব্যবহার করে POST পদ্ধতি ব্যবহার করে ডেটা জমা দিতে পারেন। POST এবং GET-এর মধ্যে প্রধান পার্থক্য হল যে ডেটা অনুরোধের শিরোনামে নয় বডিতে প্রেরণ করা হয়, তাই ব্যবহারকারী এটি দেখতে পান না। এটি শুধুমাত্র ফর্ম নিজেই পরিবর্তন করে সংশোধন করা যেতে পারে.

সুবিধা :

POST ফর্ম ব্যবহার করে অনুরোধের জন্য বৃহত্তর নিরাপত্তা এবং কার্যকারিতা।

ত্রুটি:

কম প্রাপ্যতা।

আপনি কি জন্য এটি ব্যবহার করা উচিত:

প্রচুর পরিমাণে তথ্য প্রেরণ করতে (টেক্সট, ফাইল..);

কোন গুরুত্বপূর্ণ তথ্য প্রেরণ করতে;

অ্যাক্সেস সীমাবদ্ধ করতে (উদাহরণস্বরূপ, নেভিগেশনের জন্য শুধুমাত্র ফর্ম ব্যবহার করুন - একটি বিকল্প সমস্ত রোবট প্রোগ্রাম বা বিষয়বস্তু গ্র্যাবারদের জন্য উপলব্ধ নয়)।

কি জন্য ব্যবহার করা উচিত নয়:

কোন বাধা নেই.

POST পদ্ধতি ব্যবহার করে ফাইল আপলোড করা হচ্ছে

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

ফাইল আপলোড পৃষ্ঠাটি একটি বিশেষ ফর্ম ব্যবহার করে প্রয়োগ করা যেতে পারে যা এইরকম কিছু দেখায়:

// ফাইল আপলোড করার জন্য ফর্ম এই ফাইলটি পাঠান:

উপরের উদাহরণে, "_URL_" কে PHP স্ক্রিপ্টের লিঙ্ক দিয়ে প্রতিস্থাপন করতে হবে। লুকানো ক্ষেত্র MAX_FILE_SIZE (মানটি বাইটে নির্দিষ্ট করা আবশ্যক) অবশ্যই ফাইল নির্বাচন ক্ষেত্রের আগে থাকবে, এবং এর মান হল সর্বোচ্চ অনুমোদিত ফাইলের আকার গ্রহণযোগ্য৷ আপনাকে নিশ্চিত করতে হবে যে আপনি ফর্ম অ্যাট্রিবিউটগুলিতে enctype="multipart/form-data" নির্দিষ্ট করেছেন, অন্যথায় ফাইলগুলি সার্ভারে আপলোড করা হবে না৷

মনোযোগ

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

কিভাবে একটি অনুরোধ পদ্ধতি সংজ্ঞায়িত?

সরাসরি:

Getenv("REQUEST_METHOD");

GET বা POST ফেরত দেবে।

কোন পদ্ধতি ব্যবহার করা উচিত?

যদি ফর্মটি কিছু তথ্যের অনুরোধ করার জন্য ব্যবহার করা হয়, উদাহরণস্বরূপ একটি অনুসন্ধানের সময়, তাহলে এটি GET পদ্ধতি ব্যবহার করে পাঠানো উচিত। পৃষ্ঠাটি আপডেট করতে সক্ষম হওয়ার জন্য, আপনি এটিকে বুকমার্ক করতে পারেন বা লিঙ্কটি বন্ধুকে পাঠাতে পারেন৷

যদি, একটি ফর্ম জমা দেওয়ার ফলে, সার্ভারে ডেটা রেকর্ড করা হয় বা পরিবর্তিত হয়, তাহলে এটি POST পদ্ধতি ব্যবহার করে প্রেরণ করা উচিত, এবং ফর্মটি প্রক্রিয়া করার পরে, GET পদ্ধতি ব্যবহার করে ব্রাউজারকে পুনঃনির্দেশ করা আবশ্যক৷ এছাড়াও, সার্ভারে প্রচুর পরিমাণে ডেটা স্থানান্তর করার প্রয়োজন হলে POST এর প্রয়োজন হতে পারে (GET-এর জন্য এটি খুব সীমিত), এবং এছাড়াও যদি স্থানান্তরিত ডেটা ঠিকানা বারে প্রদর্শিত না হয় (লগইন এবং পাসওয়ার্ড প্রবেশ করানোর সময়, উদাহরণ স্বরূপ).

যাই হোক না কেন, POST প্রক্রিয়া করার পরে, আপনার ব্রাউজারটিকে সর্বদা কিছু পৃষ্ঠায় পুনঃনির্দেশ করা উচিত, এমনকি একই একটি, কিন্তু ফর্ম ডেটা ছাড়াই, যাতে পৃষ্ঠাটি রিফ্রেশ করা হয়, সেগুলি আবার রেকর্ড করা না হয়।

কিভাবে GET এবং POST পদ্ধতি ব্যবহার করে পিএইচপি প্রোগ্রামের বডি থেকে সরাসরি অন্য ফাইলে ডেটা স্থানান্তর করা যায়? একই সাথে POST এবং GET পদ্ধতি ব্যবহার করে ডেটা পাঠানো এবং সার্ভার থেকে প্রতিক্রিয়া প্রাপ্ত করার একটি উদাহরণ।

এই নিবন্ধটি বিস্তারিতভাবে PHP _SELF ভেরিয়েবলের ব্যবহার নিয়ে আলোচনা করে।

PHP _SELF ভেরিয়েবল কি?

PHP _SELF ভেরিয়েবল বর্তমান ফাইলের নাম এবং পথ (ডকুমেন্ট রুটের সাথে সম্পর্কিত) প্রদান করে। আপনি ফর্মের অ্যাকশন অ্যাট্রিবিউটে এই ভেরিয়েবলটি ব্যবহার করতে পারেন। এছাড়াও কিছু সূক্ষ্মতা রয়েছে যা আপনার জানা উচিত। অবশ্যই, আমরা এই সূক্ষ্মতা উপেক্ষা করতে পারি না।

আসুন কয়েকটি উদাহরণ দেখি।

ইকো $_SERVER["PHP_SELF"];

1) ধরা যাক যে আপনার php ফাইলটি নিম্নলিখিত ঠিকানায় অবস্থিত:

http://www.yourserver.com/form-action.php

এই ক্ষেত্রে, PHP _SELF ভেরিয়েবলে থাকবে:

"/form-action.php"

2) ধরুন আপনার php ফাইলটি এই ঠিকানায় অবস্থিত:

http://www.yourserver.com/dir1/form-action.php

PHP_SELF হবে:

"/dir1/form-action.php"

ফর্মের অ্যাকশন অ্যাট্রিবিউটে PHP _SELF। কেন তার সেখানে প্রয়োজন ছিল?

সাধারণত PHP _SELF ভেরিয়েবল ফর্ম ট্যাগের অ্যাকশন অ্যাট্রিবিউটে ব্যবহার করা হয়। অ্যাকশন অ্যাট্রিবিউট সেই ঠিকানাটি নির্দিষ্ট করে যেখানে ফর্মের বিষয়বস্তু নিশ্চিতকরণের পরে পাঠানো হবে (ব্যবহারকারী type="submit" সহ বোতামে ক্লিক করে)। একটি নিয়ম হিসাবে, এটি একই পৃষ্ঠা যা থেকে ফর্মটি বাম।

যাইহোক, যদি আপনি ফর্ম দ্বারা উল্লেখ করা ফাইলটির নাম পরিবর্তন করেন, তাহলে আপনাকে অ্যাকশন অ্যাট্রিবিউটে ফাইলের নামটি পুনঃনামকরণ করতে হবে, অন্যথায় ফর্মটি কাজ করবে না।

PHP _SELF ভেরিয়েবল আপনাকে অপ্রয়োজনীয় সংশোধন থেকে রক্ষা করবে, যেহেতু পৃষ্ঠার ঠিকানা ফাইলের নামের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে তৈরি হবে।

ধরুন আপনার কাছে form-action.php নামে একটি ফর্ম ফাইল আছে এবং আপনি নিশ্চিতকরণের পরে ফর্মটি একই ফাইলে জমা দিতে চান। তারা সাধারণত এই মত লিখতে:

কিন্তু আপনি form-action.php এর পরিবর্তে PHP _SELF ভেরিয়েবল ব্যবহার করতে পারেন। এই ক্ষেত্রে কোড দেখতে হবে: