শিরোনাম ("অবস্থান:") সহ পূর্ববর্তী পৃষ্ঠায় ফিরে যান; পিএইচপি মধ্যে


124

এই প্রশ্নের ধরণের শিরোনামটি আমার প্রশ্নের ব্যাখ্যা দেয়। আমি কীভাবে পিএইচপি পৃষ্ঠা দর্শকদের সাথে তাদের পূর্ববর্তী পৃষ্ঠায় ফিরে যেতে চাইheader( "Location: URL of previous page" );


শিরোনাম ('অবস্থান:'। $ _SERVER ['HTTP_REFERER']);
রাস্কুল

এই উত্স অনুসারে w3schools.com/php/php_superglobals_server.asp , এটি নির্ভরযোগ্য নয় কারণ সমস্ত বিক্রেতারা এটি সমর্থন করে না
মোহাদেনিস

উত্তর:


246

চেষ্টা করে দেখুন:

header('Location: ' . $_SERVER['HTTP_REFERER']);

মনে রাখবেন যে এটি নিরাপদ পৃষ্ঠাগুলি (এইচটিটিপিএস) দিয়ে কাজ না করে এবং এটি সামগ্রিকভাবে একটি খারাপ ধারণা হ'ল ব্যবহারকারীর অন্য কোনও গন্তব্যে প্রেরণ করে শিরোনাম হাইজ্যাক করা যায়। এমনকি শিরোনামটি ব্রাউজারের মাধ্যমে প্রেরণও করা যায় না।

আদর্শভাবে, আপনি যে কোনওটি করতে চাইবেন:

  • অনুরোধে ফেরতের ঠিকানাটি ক্যোয়ারী ভেরিয়েবল হিসাবে যুক্ত করুন (উদাঃ? পিছনে = / তালিকা)
  • আপনার কোডে একটি রিটার্ন পৃষ্ঠাটি সংজ্ঞায়িত করুন (অর্থাত্ সমস্ত সফল ফর্ম জমাগুলি তালিকা তালিকার উপরে পুনঃনির্দেশ করুন)
  • ব্যবহারকারী যেখানে যেতে চান তার বিকল্পটি সরবরাহ করুন (উদা। সংরক্ষণ করুন এবং সম্পাদনা চালিয়ে যান বা কেবল সংরক্ষণ করুন)

19
অদ্ভুত জিনিসগুলি ঘটেছে :)
দিমিত্রি

3
@ কল যাতে আপনি এটির সাথে ব্যবহারিক সমস্যা প্রমাণ করতে পারেন?
পেক্কা

1
রেফারার ব্যবহার করে, এটি নির্ধারিত পৃষ্ঠা-থেকে-পৃষ্ঠা প্রসঙ্গে একটি সেট এবং বৈধ কিনা তা আগে পরীক্ষার পরে, পুরোপুরি ব্রাউজারগুলি একটি যথাযথ HTTP_REFERER প্রেরণ করে।
পেক্কা

1
@ কল যখন আমি একটি ডেমো জন্য কিছু করতে হয়েছিল আমি প্রযোজনায় এটি ব্যবহার করেছি। আপনি আমার উত্তরটি থেকে দেখতে পাচ্ছেন, আমি HTTP_REFERER এর উপর ভিত্তি করে পুনঃনির্দেশের পরিবর্তে আমি ঘুরে ফিরে আরও তিনটি সমাধান সরবরাহ করি provide
দিমিত্রি

2
@ ম্যাডমারটিগান যা সত্যিই অদ্ভুত আচরণ বলে মনে হচ্ছে, কেবল নেট'তে আমি দেখতে পাচ্ছি কারণ এটি কিছুটা পুনঃনির্দেশের সমস্যা। যাইহোক, আমি সম্মত হই যে আপনার 100% সুরক্ষা প্রয়োজন হলে রেফারার ব্যবহার করা উপায় নয়
পেক্কা

22

এটি এত সহজ শুধু এটি ব্যবহার করুন

header("location:javascript://history.go(-1)");

এটা আমার জন্য কাজ করে


2
এটি সত্যিই চালাক বলে মনে হচ্ছে তবে এফএফ 10-তে আমি পাই "Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."তাই এটি মূলত অকেজো ।
ওয়েসলি

ওয়েসলি মার্চ, প্রায় প্রতিটি বড় ব্রাউজারে এটি আমার পক্ষে কাজ করে যা আপনার উল্লেখ করা একটিতে অন্তর্ভুক্ত। আপনি কেবল ইতিহাসে কিছু পৃষ্ঠাতে এসেছেন কেবল তখনই এটি আপনার পক্ষে কাজ।
হামাদ

5
এটি পূর্ববর্তী পৃষ্ঠাটিকে ব্রাউজার ক্যাশে থেকে পরিবেশন করতে পারে।
aksu

14

আপনাকে কোনওভাবে এই অবস্থানটি সংরক্ষণ করতে হবে।

বলুন এটি একটি পোষ্ট ফর্ম, কেবল বর্তমান অবস্থানটি একটি গোপন ক্ষেত্রের মধ্যে রাখুন এবং তারপরে এটি header()অবস্থানটিতে ব্যবহার করুন ।


14

কেবল সামান্য সংযোজন: আমি বিশ্বাস করি exit;যে বাকী কোডটি লোড বা কার্যকর করতে না চাইলে শিরোনামের কার্যকারিতা শেষে যুক্ত করা একটি সাধারণ এবং জ্ঞাত জিনিস ...

header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;

এটি আমার জন্য কেবল ""।
আলেকজান্ডার গুও

2

জাভাস্ক্রিপ্টে এটি চেষ্টা করুন:

 $previous = "javascript:history.go(-1)";

অথবা আপনি পিএইচপি এ চেষ্টা করতে পারেন:

if(isset($_SERVER['HTTP_REFERER'])) {
    $previous = $_SERVER['HTTP_REFERER'];
}

1

একটি সেশন ভেরিয়েবলে পূর্ববর্তী ইউআরএল সংরক্ষণ করা খারাপ, কারণ ব্যবহারকারী একাধিক পৃষ্ঠায় ডান ক্লিক করতে পারে এবং তারপরে ফিরে এসে সংরক্ষণ করতে পারে।

যদি না আপনি ফর্মের একটি লুকানো ক্ষেত্রে সেশন ভেরিয়েবলের পূর্ববর্তী ইউআরএল সংরক্ষণ করেন এবং হেডার সংরক্ষণের পরে ("অবস্থান: কলিং পৃষ্ঠার ইউআরএল সংরক্ষণ করুন");


কেন আমরা কেবল $ _SERVER ['http_referrer'] ব্যবহার করতে পারি না?
ভিগনেশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.