php
  • parameters
  • include
  • 2009-08-05 3 views 67 likes 
    67

    Мне нужно показать страницу из моего php-скрипта на основе определенных условий. У меня есть условие if, и я делаю «include», если условие выполнено.PHP - включить php-файл, а также отправить параметры запроса

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

    Теперь проблема заключается в сервере есть файл «myFile.php», но я хочу, чтобы сделать вызов к этому файлу с аргументом (ID) и значением «идентификатор» будет меняться с каждым вызовом.

    Может кто-нибудь рассказать мне, как этого достичь? Спасибо.

    +1

    Что действительно делает myFile.php в вашем случае? Если вы не запросите включить через HTTP, вы не можете добавлять параметры к имени файла, но вы можете повлиять на его поведение с помощью какой-либо глобальной переменной. –

    ответ

    178

    Представьте, что включено как то, что оно есть: Копия & Вставка содержимого включенного PHP-файла, который затем будет интерпретироваться. Изменения вообще не изменяются, поэтому вы можете получить доступ к $ someVar во включенном файле напрямую (даже если вы можете рассмотреть структуру на основе класса, в которой вы передаете $ someVar в качестве параметра или ссылаетесь на несколько глобальных переменных).

    +0

    хороший ответ Daff я попытался проголосовать, но я не могу, потому что я все еще новичок в стеке над flow.com – 2011-02-23 07:31:17

    +4

    @hjmelda Я проголосовал за вас :) – Shaokan

    +1

    Также обратите внимание: $ _GET будет одинаковым для всех включенных файлов. Поэтому, если ваши параметры запроса сохранены, они все равно будут видеть их. Также обратите внимание: это не функция в классе. – Jonathon

    37

    Вы могли так что-то вроде этого, чтобы добиться эффекта вы после

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

    Тем не менее, это звучит, как вы используете это включает как своего рода вызов функции (вы упоминаете называть его неоднократно с различными аргументами) ,

    В этом случае, почему бы не превратить его в обычную функцию, включенную один раз и вызвав несколько раз?

    +1

    Я согласен, это определенно звучит так, будто это должен быть вызов функции вместо включения. –

    +0

    Вы код и 'include (" myFile.php? Id = $ somevar ");' идентичны? – stack

    +0

    Примечание: 'include (« myFile.php? ... »не работает так, как предполагалось. – BananaAcid

    0

    Ваш вопрос не очень понятно, но если вы хотите включать файл PHP (добавить источник этой страницы на вас), вы просто должны сделать следующее:

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

    Как долго так как переменная называется $ someVar в myFile.php

    21

    Включить - это как вставка кода. Вы включаете в свой код код те же самые переменные, которые у вас есть в базовом коде. Таким образом, вы можете сделать это в главном файле:

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

    А в "myFile.php": выход

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

    Это будет:

    Мой идентификатор 12345!

    +11

    ASP-теги? Действительно? –

    +0

    Вау, я не знаю, как я закончил эту ошибку ... Я не коснулся ASP вообще, в этом столетии, исправляя это за секунду. – Nicolas

    +1

    Ну PHP поддерживает теги ASP, так что это возможно :). – rix0rrr

    2

    Я знаю, что это было в то время, однако, И интересны ли лучший способ справиться с этим было бы использовать быть переменным сеанс (ов)

    В вашей myFile.php вы бы

    <?php 
    
    $MySomeVAR = $_SESSION['SomeVar']; 
    
    ?> 
    

    И в вызывающем файле

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

    ли это обойти «предложил» нужно Functionize всего проц сс?

    +0

    Вы хотите сделать его функцией, чтобы вы не инициировали кучу запросов. t, как получить информацию к включенному методу PHP-OP, уже достигает этого. – Neel

    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); 
    } 
    

    >

    Я использую эту переменную переменную конструкцию очень часто? ,

    1

    Я столкнулся с этим при выполнении форм ajax, где я включаю несколько наборов полей. Например, заявление о занятости. Я начинаю с одного профессионального набора ссылок, и у меня есть кнопка, которая говорит «Добавить больше». Это делает Ajax вызов с параметром $ графа включить вход набор снова (имя, контактный, телефон .. и т.д.) Это отлично работает на первой странице вызова, как я сделать что-то вроде:

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

    Пользователь нажимает кнопку что делает Ajax вызов ajax('references.php?count=1'); Затем внутри файла references.php у меня есть что-то вроде:

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

    у меня также есть другой динамический включает в себя, как это по всему сайту, проходящими параметры. Проблема возникает, когда пользователь нажимает кнопку submit и появляется ошибка формы. Итак, теперь, чтобы не дублировать код, чтобы включить эти дополнительные наборы полей, где они динамически включены, я создал функцию, которая будет настраивать include с соответствующими параметрами 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 динамически для размещения определенных случаев использования. Надеюсь это поможет. Обратите внимание, что этот код не находится в полном состоянии, но этого должно быть достаточно, чтобы кто-нибудь начал очень хорошо использовать их.

    -5

    ли это:

    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"; 
    } 
    
    +0

    слишком сложный для задачи ... – kaosmos

    0

    Я был в такой же ситуации, и мне нужно, чтобы включить страницу, отправив некоторые параметры ... Но реальность, что я хотел сделать, это перенаправить страницу ... если это так, код:

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

    Если кто-то еще задается этим вопросом при использовании include('somepath.php');, и этот файл содержит функцию, там также должен быть объявлен var. Включение $var=$var; не всегда будет работать. Попробуйте запустить эти:

    one.php:

    <?php 
        $vars = array('stack','exchange','.com'); 
    
        include('two.php'); /*----- "paste" contents of two.php */ 
    
        testFunction(); /*----- execute imported function */ 
    ?> 
    

    два.php:

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

    Вы также можете использовать $GLOBALS для решения этой проблемы.

    $myvar = "Hey"; 
    
    include ("test.php"); 
    
    
    echo $GLOBALS["myvar"]; 
    
    0

    В прилагаемый файл оберните html в функцию.

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

    В файле, в который вы хотите включить его, укажите файл и затем вызовите функцию с необходимыми параметрами.

    Смежные вопросы