আমি কীভাবে কোনও ওয়েবপৃষ্ঠার মাধ্যমে পিএইচপি স্ক্রিপ্টে প্যারামিটারগুলি পাস করব?


139

যখনই কোনও ওয়েবপৃষ্ঠা লোড হয় আমি পিএইচপি স্ক্রিপ্ট কল করছি। তবে, এখানে একটি প্যারামিটার রয়েছে যে পিএইচপি স্ক্রিপ্টটি চালানো দরকার (যা আমি সাধারণত স্ক্রিপ্টটি পরীক্ষা করার সময় কমান্ড লাইনের মধ্য দিয়ে যাই)।

পৃষ্ঠাটি লোড হয়ে যাওয়ার সময় স্ক্রিপ্টটি চালানোর সময় আমি কীভাবে এই তর্কটি পাস করতে পারি?


1
আপনি কি আপনার কোড পোস্ট করতে পারেন?
সেনোরআমর

1
সুতরাং আপনি একটি কমান্ড লাইন চালাতে চান? বা পিএইচপি স্ক্রিপ্ট?
ক্রিস্টোফার পেলাও

ঠিক আছে, আপনাকে ধন্যবাদ। আমি নীচের উত্তরগুলি পেয়েছি: $ GET ব্যবহার করুন এবং এটি নিজেই ইউআরএলে একটি প্যারামিটার মান হিসাবে পাস করুন।
নিক

উত্তর:


232

সম্ভবত আপনি কমান্ড লাইনে যুক্তিগুলি নিম্নরূপে পাস করছেন:

php /path/to/wwwpublic/path/to/script.php arg1 arg2

... এবং তারপরে এগুলি স্ক্রিপ্টে অ্যাক্সেস করা:

<?php
// $argv[0] is '/path/to/wwwpublic/path/to/script.php'
$argument1 = $argv[1];
$argument2 = $argv[2];
?>

এইচটিটিপি (ওয়েবের মাধ্যমে স্ক্রিপ্ট অ্যাক্সেস করা) এর মাধ্যমে তর্কগুলি পাস করার সময় আপনার কী করা দরকার তা হল কোয়েরি স্ট্রিংটি ব্যবহার করে এবং $ _GET সুপারগ্লোবালের মাধ্যমে এগুলি অ্যাক্সেস করুন:

Http://yourdomain.com/path/to/script.php?argument1=arg1&argument2=arg2 এ যান

... এবং অ্যাক্সেস:

<?php
$argument1 = $_GET['argument1'];
$argument2 = $_GET['argument2'];
?>

আপনি যেখান থেকে (কমান্ড লাইন বা ব্রাউজার থেকে) কল করেছেন তা বাদ দিয়ে স্ক্রিপ্টটি চলতে চাইলে আপনি নীচের মতো কিছু চাইবেন:

সম্পাদনা: মন্তব্যে চথুলহু দ্বারা চিহ্নিত হিসাবে, আপনি কোন পরিবেশে চালাচ্ছেন তা পরীক্ষা করার সর্বাধিক প্রত্যক্ষ উপায় হ'ল পিএইচপি_এসএপিআই ধ্রুবক ব্যবহার করা । আমি সেই অনুযায়ী কোড আপডেট করেছি:

<?php
if (PHP_SAPI === 'cli') {
    $argument1 = $argv[1];
    $argument2 = $argv[2];
}
else {
    $argument1 = $_GET['argument1'];
    $argument2 = $_GET['argument2'];
}
?>

আমি ব্যবহার করব empty($_GET)$_GETএকটি পূর্বনির্ধারিত মান, তাই আমি নিশ্চিত যে এটি সর্বদা সেট করা থাকে তবে জিইটি পরামিতি সেট না থাকলে খালি। খালি স্ট্রিং এবং অ্যারেগুলির জন্য empty()ফিরে আসে false
টিম এস

আসলে যাচাই না করে, আমি বিশ্বাস করি যে $_GETস্ক্রিপ্টটি কোনও কমান্ড লাইনের প্রসঙ্গে কল করা থাকলে এটি প্রকৃতপক্ষে সেট করা নেই। empty()যদি কোনও কোয়েরি স্ট্রিং ছাড়াই স্ক্রিপ্টটি ওয়েব থেকে অ্যাক্সেস করা হয় তবে এটি কমান্ড লাইন আর্গুমেন্টগুলি সন্ধান করবে thus
জেসন

আপনার প্রথম উদাহরণে g আরজিভি [0] আসলে আরগ 1 নয়, এটি "/path/to/wwwpublic/path/to/script.php" হবে। ( php.net/manual/en/remitted.variables.argv.php )
নৈমিত্তিক

3
আমি বুঝতে পারলাম আমি পার্টির জন্য দেরি করেছি, তবে যাচাই করার সঠিক উপায় PHP_SAPI === 'cli'
চিতুলহু

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

17
$argv[0]; // the script name
$argv[1]; // the first parameter
$argv[2]; // the second parameter

আপনি যেখানে (কমান্ড লাইন বা ব্রাউজার থেকে) কল করেছেন তা নির্বিশেষে যদি আপনি সমস্ত স্ক্রিপ্টটি চালাতে চান তবে আপনি নীচের মতো কিছু চাইবেন:

<?php
if ($_GET) {
    $argument1 = $_GET['argument1'];
    $argument2 = $_GET['argument2'];
} else {
    $argument1 = $argv[1];
    $argument2 = $argv[2];
}
?>

কমান্ড লাইন থেকে কল chmod 755 /var/www/webroot/index.phpএবং ব্যবহার করতে

/usr/bin/php /var/www/webroot/index.php arg1 arg2

ব্রাউজার থেকে কল করতে, ব্যবহার করুন

http://www.mydomain.com/index.php?argument1=arg1&argument2=arg2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.