বর্ননা

অনুরোধ অবজেক্ট প্রাপ্ত করুন

ওয়েবম্যান স্বয়ংক্রিয়ভাবে অ্যাকশন মেথডে অনুরোধ অবজেক্টটি ইউজার ডিফাইনড ডেটা নিতে বসা তুলে। উদাহরণঃ

উদাহরণ

<?php
namespace app\controller;

use support\Request;

class UserController
{
    public function hello(Request $request)
    {
        $default_name = 'webman';
        // get অনুরোধ থেকে নাম প্যারামিটার অর্জন করুন, যদি কোনো নাম প্যারামিটার পাঠানো না হয় তবে ডিফল্ট_নাম ফিরিয়ে দিন
        $name = $request->get('name', $default_name);
        // ব্রাউজারে স্ট্রিং অনুরোধ করুন
        return response('hello ' . $name);
    }
}

$request অবজেক্টটির মাধ্যমে আমরা যেকোনো অনুরোধ সংক্রান্ত ডাটা পেতে পারি।

কিছুসময় আমরা অনুরোধ অবজেক্টটি অন্য কোনও ক্লাসে পেতে চাইতে পারি, এই সময় আমরা কেবল হেল্পার ফাংশন request() ব্যবহার করে সেটাকে পেতে পারি;

অনুরোধের প্যারামিটার get পেতে

পূর্ণ get অ্যারে পেতে

$request->get();

যদি অনুরোধে কোনো get প্যারামিটার না থাকে তাহলে এটি একটি খালি অ্যারে ফেরত দেয়।

একটি get অ্যারের একটি মান পেতে

$request->get('name');

যদি get অ্যারেতে এই মান সন্নিহিত না থাকে তাহলে এটি নাল ফেরত দেয়।

এইচটিএমএল এলিমেন্টে multiple এট্রিবিউটটি ব্যবহোর করে আপলোড করা ফাইলে চেনা

<form method="post" action="http://127.0.0.1:8787/upload/files" enctype="multipart/form-data" />
<input name="file1" multiple="multiple" type="file">
<input name="file2" multiple="multiple" type="file">
<input type="submit">
</form>

$request->file() ফরম্যাটের একটি গণনা ফেরত দেয়:

array (
    'file1' => object(webman\Http\UploadFile),
    'file2' => object(webman\Http\UploadFile)
)

এটি একটি webman\Http\UploadFile অবজেক্টের অ্যারে।

নোটঃ

  • ফাইলটি আপলোড হয়ে গেলে এটি একটি অস্থায়ী ফাইলের নাম ধারণ করে, যেমনঃ /tmp/workerman.upload.SRliMu
  • আপলোড ফাইলের আকারটি defaultMaxPackageSize সীমার অনুসরণ করে, ডিফল্ট 10M, যা config/server.php ফাইলে max_package_size প্যারামিটার ব্যবহার করে পরিবর্তন করা যেতে পারে।
  • অনুরোধ শেষ হওয়ার পরে অস্থায়ী ফাইলটি স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে
  • যদি কোনো আপলোড ফাইল না থাকে তাহলে $request->file() একটি খালি অ্যারে ফেরত দেয়
  • আপলোড না করা ফাইল move_uploaded_file() মেথডটি সাপোর্ট করে না, দয়া করে এটি পরিবর্তিত করতে নিয়ে নিন, উপরের উদাহরণ দেখুন।

    অনুরোধ URL পান

    url() মেথডটি Query প্যারামিটার ছাড়া URL বোঝায়।

    $request->url();

    এটি আরকম ফাঁকি দেখায়: //www.workerman.net/workerman-chat

fullUrl() মেথডটি Query প্যারামিটার সহ URL বোঝায়।

$request->fullUrl();

এটি আরকম দেখায়: //www.workerman.net/workerman-chat?type=download

দ্য অনুরোধ কর
url() এবং fullUrl() প্রটোকল অংশ প্রদান করে না(http অথবা https ফাঁকি দেখায় না)।
কারণ ব্রাউজারগুলি //example.com এরকম ঠিকানা অটোম্যাটিকভাবে বর্তমান সাইটের প্রোটোকল সনাক্ত করে, নিজেই http অথবা https এক্সেভ করে রিকুয়েস্ট প্রেরণ করে।

আপনি যদি এনজিন্যাক্স প্রক্সিত করেন, তবে অনুগ্রহ করে এনজিন্যাক্স কনফিগারে যোগ করুন proxy_set_header X-Forwarded-Proto $scheme; এটি নিয়ে, নজিন প্রক্সি নোট
এরপর আপনি প্রয়োজন অনুযায়ী ব্যবহার করতে পারবেন request->header('x-forwarded-proto'); মেথড, একমুখী:

echo $request->header('x-forwarded-proto'); // http অথবা https ফাঁকি দেখায়

অনুরোধ এইচটিটিপি সংস্করণ পান

$request->protocolVersion();

স্ট্রিং 1.1 অথবা 1.0 ফেরত দেয়।

অনুরোধ sessionId পান

$request->sessionId();

বর্ণমালা এবং সংখ্যার মধ্যে স্ট্রিং পেতে

অনুরোধ ক্লায়েন্ট আইপি পান

$request->getRemoteIp();

অনুরোধ নো ক্লায়েন্ট পোর্ট পান

$request->getRemotePort();

অনুরোধ ক্লায়েন্ট সত্যিকার আইপি পান

$request->getRealIp($safe_mode=true);

প্রকল্প যখন প্রক্সিত করে (উদাহরণস্বরূপ এনজিনক্স) তাহলে request->getRemoteIp() থেকে সংশ্লিষ্ট প্রক্সি সার্ভারের আইপি পেতে হয় (যেমন 127.0.0.1, 192.168.x.x) এবং না ক্লায়েন্টের সত্যিকার আইপি পেতে। এই সময়ে আপনি request->getRealIp() ব্যবহার করতে পারেন ক্লায়েন্টের বাস্তব আইপির জন্য।
$request->getRealIp() প্রয়াস করবে হেডার হেডারের মধ্যে সেটিং থেকে আসা আইপি x-real-ip , x-forwarded-for , client-ip , x-client-ip , via

কারণ HTTP হেডারগুলি খুবই ভ্রামক সেই কারণে এই পদ্ধতি দ্বারা পেয়ে যাওয়া ক্লায়েন্ট আইপি 100% বিশ্বস্ত নয়, বিশেষতঃ যখন $safe_mode ফাঁকি দেখায় না। প্রক্সিত সার্ভার থেকে ক্লায়েন্ট সত্যিকার আইপির পানের যথেষ্ট বিশ্বাসযোগ্য পদ্ধতি হ'ল, সম্পর্কিত নিরাপদ প্রক্সিত সার্ভার আইপি জানা, এবং নিশ্চিত হওয়া যে যে হেডার অংশে সত্যিকার আইপি আছে। যদি $request->getRemoteIp() থেকে প্রাপ্ত আইপি সত্যতা অনুমান করুন এবং সিমটি উন্নীত সুরক্ষিত প্রতিনিধির জন্য, তাহলে পরিবর্তনের জন্য $request->header('সত্যিকার আইপির সাথে যে হেডার পায়') এটি প্রাপ্ত আইপির ফাঁকি দেখায়।

সার্ভার আইপি পান

$request->getLocalIp();

সার্ভার পোর্ট পান

$request->getLocalPort();

কি তো XMLHttpRequest অনুরোধ তা পরীক্ষা করুন

$request->isAjax();

কি তা এক্সপেক্ট করা হয়েছিল জেসন অনুরোধ তা পরীক্ষা করুন

$request->expectsJson();

ক্লায়েন্ট কি জেসন রিটার্ন গ্রহণ করে তা পরীক্ষা করুন

$request->acceptJson();

অনুরোধ প্লাগইন নাম পান

প্লাগইন অনুরোধ ফেরত দেয় ফাঁকি স্ট্রিং ''

$request->plugin;

এই বৈশিষ্ট্যটি webman>=1.4.0 কর্তৃপক্ষ প্রয়োজন।

অনুরোধ অ্যাপ্লিকেশন নাম পান

একটি এপ্লিকেশন সময়ে সর্বদা খালি স্ট্রিং '' দেয়, আক্ষাংশ একটি এপ্লিকেশনের সময়ে অ্যাপ্লিকেশন নাম ফেরত দেয়

$request->app;

কারণ বন্ধ ফাংশন কোনো অ্যাপ্লিকেশনের মাধ্যমিক নয়, তাই ফাংশনের অনুরোধ request->app সর্বদা ফাঁকি দেখায় ''
বন্ধ ফাঁকিতে দেখা রুট

অনুরোধ নিয়ন্ত্রক ক্লাস নাম পান

নিয়ন্ত্রকের জন্য সাথে বন্ধ করে স্বনাম পেতে

$request->controller;

ফেরত দেয় মতো app\controller\IndexController

বন্ধ ফাংশন কোনো নিয়ন্ত্রকের হয় না, তাই সিভোয়ি নির্ধারিত থেকের জন্য নিয়ন্ত্রক ক্লাসের অনুরোধ $request->controller সর্বদা ফাঁকি দেখায় ''
বন্ধ ফাঁকিতে দেখা রুট

অনুরোধ মেথড নাম পান

নিয়ন্ত্রকের মেথডের জন্য স্বামীর নামটি পেতে

$request->action;

ফেরত দেয় মতো ইন্ডেক্স

বন্ধ ফাংশন কোনো নিয়ন্ত্রকের হয় না, তাই সিভোয়ি নির্ধারিত থেকের জন্য নিয়ন্ত্রক ক্লাসের অনুরোধ $request->action সর্বদা ফাঁকি দেখায় ''
বন্ধ ফাঁকিতে দেখা রুট