PHP - एक php फ़ाइल शामिल करें और क्वेरी पैरामीटर भी भेजें


87

मुझे अपनी php स्क्रिप्ट से कुछ शर्तों के आधार पर एक पृष्ठ दिखाना होगा। मेरे पास एक शर्त है और अगर हालत संतुष्ट है तो "शामिल" कर रहा हूं।

if(condition here){
  include "myFile.php?id='$someVar'";
}

अब समस्या यह है कि सर्वर में एक फ़ाइल "myFile.php" है, लेकिन मैं इस फ़ाइल को एक तर्क (आईडी) के साथ कॉल करना चाहता हूं और प्रत्येक कॉल के साथ "आईडी" का मूल्य बदल जाएगा।

क्या कोई मुझे बता सकता है कि इसे कैसे प्राप्त किया जाए? धन्यवाद।


2
वास्तव में आपके मामले में myFile.php क्या करता है? जब तक आप HTTP पर शामिल करने का अनुरोध नहीं करते हैं, तब तक आप फ़ाइल नाम में पैरामीटर नहीं जोड़ सकते हैं, लेकिन आप किसी प्रकार के वैश्विक चर के माध्यम से इसके व्यवहार को प्रभावित कर सकते हैं।
पॉल डिक्सन

जवाबों:


211

इसमें शामिल होने की कल्पना करें कि यह क्या है: शामिल PHP फ़ाइल की सामग्री की एक प्रतिलिपि और पेस्ट, जिसे तब व्याख्या की जाएगी। इसमें कोई स्कोप परिवर्तन नहीं है, इसलिए आप अभी भी शामिल फ़ाइल में $ someVar को सीधे एक्सेस कर सकते हैं (भले ही आप एक वर्ग आधारित संरचना पर विचार कर सकते हैं जहाँ आप $ someVar को एक पैरामीटर के रूप में पास करते हैं या कुछ वैश्विक चर को देखें)।


1
यह भी ध्यान दें: $ _GET सभी शामिल फ़ाइलों के लिए समान होगा। इसलिए यदि वह वह जगह है जहाँ आपके क्वेरी पैरामीटर संग्रहीत हैं, तो यह अभी भी उन्हें देखेगा। यह भी ध्यान दें: यह फ़ंक्शन नहीं है, एक कक्षा में।
जोनाथन

49

आप इस तरह के प्रभाव को प्राप्त करने के लिए कुछ ऐसा कर सकते हैं:

$_GET['id']=$somevar;
include('myFile.php');

हालाँकि, ऐसा लगता है कि आप इसका उपयोग कर रहे हैं, जैसे कुछ प्रकार के फ़ंक्शन कॉल (आप इसे विभिन्न तर्कों के साथ बार-बार कॉल करने का उल्लेख करते हैं)।

इस मामले में, इसे एक नियमित फ़ंक्शन में क्यों नहीं बदलना, एक बार शामिल किया गया और कई बार कहा गया?


1
मैं सहमत हूं, यह निश्चित रूप से लगता है जैसे कि इसमें शामिल होने के बजाय एक फ़ंक्शन कॉल होना चाहिए।
ब्रेंटन एल्कर

क्या आप कोड और include("myFile.php?id=$somevar");समान हैं?
स्टैक

नोट: include("myFile.php?...इरादा के अनुसार काम नहीं करता है।
बनानाएकैप

29

एक सम्मिलित कोड सम्मिलन की तरह ही है। आपको अपने सम्मिलित कोड में वही आधार मिलता है जो आपके आधार कोड में आपके पास होता है। तो आप अपनी मुख्य फ़ाइल में ऐसा कर सकते हैं:

<?
    if ($condition == true)
    {
        $id = 12345;
        include 'myFile.php';
    }
?>

और "myFile.php" में:

<?
    echo 'My id is : ' . $id . '!';
?>

यह आउटपुट होगा:

मेरी आईडी 12345 है!


7

यदि आप इसे PHP फ़ाइल में मैन्युअल रूप से शामिल करने जा रहे हैं - तो Daff का उत्तर एकदम सही है।

वैसे भी, यदि आपको यह करने की आवश्यकता है कि प्रारंभिक प्रश्न क्या था, तो इसे प्राप्त करने के लिए एक छोटा सा सरल कार्य है:

<?php
// Include php file from string with GET parameters
function include_get($phpinclude)
{
    // find ? if available
    $pos_incl = strpos($phpinclude, '?');
    if ($pos_incl !== FALSE)
    {
        // divide the string in two part, before ? and after
        // after ? - the query string
        $qry_string = substr($phpinclude, $pos_incl+1);
        // before ? - the real name of the file to be included
        $phpinclude = substr($phpinclude, 0, $pos_incl);
        // transform to array with & as divisor
        $arr_qstr = explode('&',$qry_string);
        // in $arr_qstr you should have a result like this:
        //   ('id=123', 'active=no', ...)
        foreach ($arr_qstr as $param_value) {
            // for each element in above array, split to variable name and its value
            list($qstr_name, $qstr_value) = explode('=', $param_value);
            // $qstr_name will hold the name of the variable we need - 'id', 'active', ...
            // $qstr_value - the corresponding value
            // $$qstr_name - this construction creates variable variable
            // this means from variable $qstr_name = 'id', adding another $ sign in front you will receive variable $id
            // the second iteration will give you variable $active and so on
            $$qstr_name = $qstr_value;
        }
    }
    // now it's time to include the real php file
    // all necessary variables are already defined and will be in the same scope of included file
    include($phpinclude);
}

?>

मैं इस चर चर निर्माण का उपयोग बहुत बार कर रहा हूं।


4

जिस फ़ाइल में आप शामिल हैं, एक फ़ंक्शन में html को लपेटें।

<?php function($myVar) {?>
    <div>
        <?php echo $myVar; ?>
    </div>
<?php } ?>

जिस फ़ाइल में आप इसे शामिल करना चाहते हैं, उसमें फ़ाइल शामिल करें और फिर अपने इच्छित पैरामीटर के साथ फ़ंक्शन को कॉल करें।


2

मुझे पता है कि यह एक समय हो गया है, हालांकि, Iam सोच रहा है कि क्या इसे संभालने का सबसे अच्छा तरीका सत्र चर (s) का उपयोग करना होगा

आपके myFile.php में होगा

<?php 

$MySomeVAR = $_SESSION['SomeVar'];

?> 

और कॉलिंग फ़ाइल में

<?php

session_start(); 
$_SESSION['SomeVar'] = $SomeVAR;
include('myFile.php');
echo $MySomeVAR;

?> 

क्या यह "सुझाई गई" पूरी प्रक्रिया को संशोधित करने की आवश्यकता है?


आप इसे एक समारोह बनाना चाहते हैं ताकि आप अनुरोधों का एक समूह शुरू न करें। समस्या यह नहीं है कि शामिल किए गए PHP को जानकारी कैसे प्राप्त करें - ओपी की विधि पहले से ही प्राप्त करती है।
नील

2

मैं इस में भाग लिया है जब AJAX रूपों जहाँ मैं कई क्षेत्र सेट शामिल हैं। उदाहरण के लिए एक रोजगार आवेदन लेना। मैं एक पेशेवर संदर्भ सेट के साथ शुरू करता हूं और मेरे पास एक बटन है जो कहता है "अधिक जोड़ें"। यह इनपुट सेट को फिर से शामिल करने के लिए $ काउंट पैरामीटर के साथ अजाक्स कॉल करता है (नाम, संपर्क, फोन .. आदि) यह प्रथम पृष्ठ कॉल पर ठीक काम करता है क्योंकि मैं कुछ ऐसा करता हूं:

<?php 
include('references.php');`
?>

उपयोगकर्ता एक बटन दबाता है जो एक अजाक्स कॉल करता है ajax('references.php?count=1'); फिर संदर्भों के अंदर। फ़ाइल में मेरे पास कुछ ऐसा है:

<?php
$count = isset($_GET['count']) ? $_GET['count'] : 0;
?>

मेरे पास अन्य डायनामिक भी शामिल हैं जैसे कि पूरे साइट पर जो पैरामीटर पारित करते हैं। समस्या तब होती है जब उपयोगकर्ता दबाता है और एक फार्म त्रुटि होती है। तो अब उन अतिरिक्त फ़ील्ड सेटों को शामिल करने के लिए कोड डुप्लिकेट नहीं करना है जहां गतिशील रूप से शामिल किया गया है, मैंने एक फ़ंक्शन बनाया जो उचित GET परम के साथ शामिल को सेटअप करेगा।

<?php

function include_get_params($file) {
  $parts = explode('?', $file);
  if (isset($parts[1])) {
    parse_str($parts[1], $output);
    foreach ($output as $key => $value) {
      $_GET[$key] = $value;
    }
  }
  include($parts[0]);
}
?>

फ़ंक्शन क्वेरी परम के लिए जाँच करता है, और स्वचालित रूप से उन्हें $ _GET चर में जोड़ता है। यह मेरे उपयोग के मामलों के लिए बहुत अच्छा काम किया है।

यहां फॉर्म पेज पर एक उदाहरण दिया गया है, जिसे कहा जाता है:

<?php
// We check for a total of 12
for ($i=0; $i<12; $i++) {
  if (isset($_POST['references_name_'.$i]) && !empty($_POST['references_name_'.$i])) {
   include_get_params(DIR .'references.php?count='. $i);
 } else {
   break;
 }
}
?>

कुछ उपयोग के मामलों को समायोजित करने के लिए गतिशील रूप से GET params सहित बस एक और उदाहरण। उम्मीद है की यह मदद करेगा। कृपया ध्यान दें कि यह कोड अपनी पूरी स्थिति में नहीं है, लेकिन यह किसी को भी उनके उपयोग के मामले में बहुत अच्छी शुरुआत करने के लिए पर्याप्त होना चाहिए।


2

ऐसा करने का सबसे सरल तरीका इस प्रकार है

index.php

<?php $active = 'home'; include 'second.php'; ?>

second.php

<?php echo $active; ?>

जब से आप "शामिल हैं" का उपयोग करके 2 चर सहित आप चर साझा कर सकते हैं


0

आपका प्रश्न बहुत स्पष्ट नहीं है, लेकिन यदि आप php फ़ाइल को शामिल करना चाहते हैं (उस पृष्ठ के स्रोत को अपने पास जोड़ें), तो आपको बस निम्नलिखित करना होगा:

if(condition){
    $someVar=someValue;
    include "myFile.php";
}

जब तक चर का नाम myFile.php में $ someVar हो जाता है


0

मैं उसी स्थिति में था और मुझे कुछ मापदंडों को भेजकर एक पृष्ठ शामिल करने की आवश्यकता थी ... लेकिन वास्तव में मैं जो करना चाहता था वह पृष्ठ को पुनर्निर्देशित करना है ... यदि आपके लिए मामला है, तो कोड है:

<?php
   header("Location: http://localhost/planner/layout.php?page=dashboard"); 
   exit();
?>

0

यदि कोई अन्य व्यक्ति इस प्रश्न पर है, तो उपयोग करते समय include('somepath.php');और उस फ़ाइल में एक फ़ंक्शन होता है, तो संस्करण को वहां भी घोषित किया जाना चाहिए। $var=$var;हमेशा काम करने का समावेश नहीं होगा। इन्हें चलाने का प्रयास करें:

one.php:

<?php
    $vars = array('stack','exchange','.com');

    include('two.php'); /*----- "paste" contents of two.php */

    testFunction(); /*----- execute imported function */
?>

two.php:

<?php
    function testFunction(){ 
        global $vars; /*----- vars declared inside func! */
        echo $vars[0].$vars[1].$vars[2];
    }
?>


-6

यह करो:

NSString *lname = [NSString stringWithFormat:@"var=%@",tname.text];
NSString *lpassword = [NSString stringWithFormat:@"var=%@",tpassword.text];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:@"http://localhost/Merge/AddClient.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"insert" forHTTPHeaderField:@"METHOD"];

NSString *postString = [NSString stringWithFormat:@"name=%@&password=%@",lname,lpassword];
NSString *clearpost = [postString stringByReplacingOccurrencesOfString:@"var=" withString:@""];
NSLog(@"%@",clearpost);
[request setHTTPBody:[clearpost dataUsingEncoding:NSUTF8StringEncoding]];
[request setValue:clearpost forHTTPHeaderField:@"Content-Length"];
[NSURLConnection connectionWithRequest:request delegate:self];
NSLog(@"%@",request);

और अपनी insert.phpफ़ाइल में जोड़ें :

$name = $_POST['name'];
$password = $_POST['password'];

$con = mysql_connect('localhost','root','password');
$db = mysql_select_db('sample',$con);


$sql = "INSERT INTO authenticate(name,password) VALUES('$name','$password')";

$res = mysql_query($sql,$con) or die(mysql_error());

if ($res) {
    echo "success" ;
} else {
    echo "faild";
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.