পিএইচপি-তে ইউআরএল প্যারামিটার পান


190

আমি পিএইচপি তে একটি ইউআরএল প্যারামিটার হিসাবে একটি URL পাস করার চেষ্টা করছি কিন্তু যখন আমি এই পরামিতিটি পাওয়ার চেষ্টা করি তখন কিছুই পাই না

আমি নিম্নলিখিত url ফর্মটি ব্যবহার করছি:

http://localhost/dispatch.php?link=www.google.com

আমি এটি মাধ্যমে চেষ্টা করার চেষ্টা করছি:

$_GET['link'];

কিন্তু কিছুই ফেরেনি। সমস্যাটা কি?


15
আপনার পুরো কোডটি দেখান
পেক্কা

3
না var_dumpএর $_GETPARAM, এটা সেখানে উচিত
Naftali ওরফে নীল

1
না $_REQUEST['link']কাজ করে? এছাড়াও মনে রাখবেন সূচি কীটি linkইউআরএল-তে কী রয়েছে তার ক্ষেত্রে সংবেদনশীল।
Dutchie432

আপনি আসলে চেষ্টা করছেন না $_GETতবে পোস্টিং হচ্ছে এমনটি হচ্ছে?
জেমস

আর এর সমাধান কী ছিল? একই সমস্যা হচ্ছে
আইএক্সএক্স

উত্তর:


282

$_GETএটি কোনও ফাংশন বা ভাষা নির্মাণ নয় — এটি কেবল একটি পরিবর্তনশীল (একটি অ্যারে)। চেষ্টা করুন:

<?php
echo $_GET['link'];

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

যেহেতু ভেরিয়েবলের অস্তিত্ব থাকতে পারে তাই আপনি (এবং হওয়া উচিত) আপনার কোডটি নোটিশ দিয়ে ট্রিগার না করে তা নিশ্চিত করতে পারতেন:

<?php
if (isset($_GET['link'])) {
    echo $_GET['link'];
} else {
    // Fallback behaviour goes here
}

বিকল্পভাবে, আপনি যদি ম্যানুয়াল সূচক চেকগুলি এড়িয়ে যেতে চান এবং আরও বৈধতা যোগ করতে চান তবে আপনি ফিল্টার এক্সটেনশনটি ব্যবহার করতে পারেন :

<?php
echo filter_input(INPUT_GET, 'link', FILTER_SANITIZE_URL);

সর্বশেষে তবে সর্বনিম্ন নয়, নিখোঁজ প্যারামিটারগুলি পরিচালনা করতে আপনি নাল কোলেসিং অপারেটরটি ( পিএইচপি / 7.0 থেকে উপলব্ধ ) ব্যবহার করতে পারেন :

echo $_GET['link'] ?? 'Fallback value';

14
আমার মতো এটির সাথে যদি আপনি কিছুই না পেয়ে থাকেন তবে আপনার জানা উচিত, 'লিঙ্ক' হ'ল ইউআরএল ঠিকানার পরিবর্তকের একটি নাম! সুতরাং with _GET ['লিঙ্ক'] সহ; আপনার এই জাতীয় URL লিখতে হবে: লোকালহোস্ট /? লিঙ্ক = পরীক্ষা
ফিরজেন

আমি ডাব্লুএইচএমপি ব্যবহার করছি localhostএবং এই সমাধানটি কাজ করছে না। http://localhost/station?type=2 echo $_GET['type'];হলnull
নাইন নেটটোরিজুলস

অবশেষে আমি ব্যবহার parse_str(parse_url($actual_link)['query'], $params);। আরো তথ্য stackoverflow.com/a/11480852/4458531
NineCattoRules

আপনি বলছেন "$ _GET কোনও ফাংশন বা ভাষা নির্মাণ নয় — এটি কেবল একটি পরিবর্তনশীল (একটি অ্যারে)" তবে আমরা সূচকের মাধ্যমে মানগুলিতে অ্যাক্সেস করি না, পরিবর্তে আপনি স্ট্রিংয়ের মাধ্যমে মানগুলি অ্যাক্সেস করছেন। এটি কি অ্যারের চেয়ে অভিধানের বেশি?
স্কটিব্ল্যাডেস

1
@ স্কটিবিলেডস আমি পিএইচপি ডেটা স্ট্রাকচারের প্রসঙ্গে বলছি। পিএইচপি-তে একটি অ্যারে কী / মান সংমিশ্রণের তালিকাভুক্ত তালিকা ordered যা অন্যান্য ভাষা (যেমন সি বা জাভাস্ক্রিপ্ট) "অ্যারে" বলে তার থেকে পৃথক।
vlvaro González

27

আপনার কোড পোস্ট করুন,

<?php
    echo $_GET['link'];
?>

অথবা

<?php
    echo $_REQUEST['link'];
?>

কি কাজ ...


19

সব ধরণের অযাচিত কোড সন্নিবেশ ফিল্টার ব্যবহার না করে আপনি সর্বদা নিরাপদ পাশে রয়েছেন তা নিশ্চিত করতে:

echo filter_input(INPUT_GET,"link",FILTER_SANITIZE_STRING);

পিএইচপিএন ফাংশন ফিল্টার_ইনপুটে আরও পড়ুন বা বিভিন্ন ফিল্টারগুলির বর্ণনা দেখুন



10

গৃহীত উত্তর ভাল। তবে আপনার যদি এরকম দৃশ্য থাকে:

http://www.mydomain.me/index.php?state=California.php#Berkeley

আপনি নামকৃত অ্যাঙ্করকে কোয়েরি স্ট্রিং হিসাবে এই জাতীয় আচরণ করতে পারেন:

http://www.mydomain.me/index.php?state=California.php&city=Berkeley

তারপরে, এটি এর মতো অ্যাক্সেস করুন:

$Url = $_GET['state']."#".$_GET['city'];

3

আমি কারও জন্য কিছুই পাচ্ছিলাম না $_GET["..."](যেমন print_r($_GET)একটি খালি অ্যারে দিয়েছে) তবুও $_SERVER['REQUEST_URI']দেখানো হয়েছে যে জিনিসগুলি সেখানে থাকা উচিত। শেষ পর্যন্ত দেখা গেল যে আমি কেবল ওয়েবপৃষ্ঠায় আসছি কারণ আমার .htaccess সেখানে এটি পুনর্নির্দেশ করছে (আমার 404 হ্যান্ডলারটি একই। Php ফাইল ছিল, এবং আমি পরীক্ষার সময় ব্রাউজারে একটি টাইপও তৈরি করেছি)।

কেবল নাম পরিবর্তন করা মানে একই পিএইচপি কোডটি একবার কাজ করেছিল যখন 404 টি পুনর্নির্দেশটি লাথি মারছিল না!

সুতরাং পিএইচপি কোড সঠিক হতে পারে এমন কিছু উপায় $_GET নেই return



0

যার যার কিছুই ফিরে পাওয়া যায় না, আমি মনে করি তাকে কেবল এইচটিএমএল ট্যাগগুলিতে ফলাফলটি বন্ধ করে দিতে হবে,

এটার মত:

<html>
<head></head>
<body>
<?php
echo $_GET['link'];
?>
<body>
</html>

5
না, এইচটিএমএল ট্যাগগুলি অপরিহার্য। সরল পাঠ্যটি সমস্ত ব্রাউজার দ্বারা রেন্ডার করা হয় ।
মার্কোএস

-1

আলভারো যেমন বলেছিল, $ _GET কোনও ফাংশন নয় তবে প্যারামিটারগুলি সহ একটি অ্যারে তাই আপনি ব্যবহার করে সেই অ্যারে থেকে একটি উপাদান পুনরুদ্ধার করতে পারবেন

<?php
$link = $_GET['link'];
echo $link;
?>

প্রত্যাশিত ওপি:

www.google.com
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.