PHP-Dołącz plik php, a także wyślij parametry zapytania

Muszę pokazać stronę z mojego skryptu php w oparciu o określone warunki. Mam warunek if I robię "Dołącz", jeśli warunek jest spełniony.

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

Teraz problem polega na tym, że serwer ma plik " myFile.php "ale chcę wykonać wywołanie do tego pliku z argumentem (id) i wartość" id " zmieni się przy każdym wywołaniu.

Czy ktoś może mi powiedzieć, jak to osiągnąć? Dzięki.
Author: Mat, 2009-08-05

13 answers

Wyobraź sobie include jako to, czym jest: kopiowanie i wklejanie zawartości dołączonego pliku PHP, który zostanie następnie zinterpretowany. Nie ma żadnej zmiany zakresu, więc nadal możesz uzyskać dostęp do $someVar w dołączonym pliku bezpośrednio (nawet jeśli możesz rozważyć strukturę opartą na klasie, w której przekazujesz $someVar jako parametr lub odwołaj się do kilku globalnych zmiennych).

 211
Author: Daff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-05 09:25:23

Możesz zrobić coś takiego, aby osiągnąć efekt, którego szukasz:

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

Jednak wygląda na to, że używasz tego include jak jakiegoś wywołania funkcji(wspominasz o wywołaniu go wielokrotnie z różnymi argumentami).

W tym przypadku, dlaczego nie przekształcić go w regularną funkcję, dołączoną raz i wywołaną wiele razy?

 49
Author: Paul Dixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-03 19:53:16

Include jest jak wstawianie kodu. Otrzymujesz w dołączonym kodzie dokładnie te same zmienne, które masz w kodzie podstawowym. Więc możesz to zrobić w głównym pliku:

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

I w "myFile.php": {]}

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

Wyświetli się :

Mój identyfikator to 12345 !
 29
Author: Nicolas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-05 14:30:50

Jeśli zamierzasz to zapisać ręcznie w pliku PHP - odpowiedź Daff jest idealna.

W każdym razie, jeśli musisz zrobić to, co było początkowym pytaniem, oto mała prosta funkcja, aby to osiągnąć:

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

?>

Używam tej zmiennej konstrukcji bardzo często.

 7
Author: Nikolay Ivanov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-30 09:18:18

W dołączonym pliku zawiń kod html w funkcję.

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

W pliku, do którego ma być dołączony, Dołącz plik, a następnie wywołaj funkcję z żądanymi parametrami.

 4
Author: Mark Buikema,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-25 14:16:04

Wiem, że minęło trochę czasu, jednak zastanawiam się, czy najlepszym sposobem na poradzenie sobie z tym byłoby użycie zmiennej sesji be

W twoim myFile.php you ' d have

<?php 

$MySomeVAR = $_SESSION['SomeVar'];

?> 

Oraz w pliku wywołującym

<?php

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

?> 
Czy byłoby to obejściem "sugerowanej" potrzeby funkcjonowania całego procesu?
 2
Author: Nepa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-21 04:44:21

Natknąłem się na to podczas tworzenia formularzy ajax, w których dołączam wiele zestawów pól. Biorąc na przykład podanie o pracę. Zaczynam od jednego profesjonalnego zestawu referencyjnego i mam przycisk z napisem "Dodaj więcej". Powoduje to wywołanie ajax z parametrem $count, aby ponownie włączyć ustawione wejście (nazwa, kontakt, telefon.. etc) to działa dobrze na pierwszej stronie wywołania, jak robię coś w stylu:

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

Użytkownik naciska przycisk, który wykonuje połączenie ajax ajax('references.php?count=1'); Następnie wewnątrz referencje.plik php mam coś takiego:

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

Mam również inne dynamiczne elementy, takie jak ten w całej witrynie, które przekazują parametry. Problem występuje, gdy użytkownik naciska przycisk Wyślij i pojawia się błąd formularza. Więc teraz, aby nie powielać kodu, aby dołączyć te dodatkowe zestawy pól, które dynamicznie zawarte, stworzyłem funkcję, która będzie konfigurować include z odpowiednimi PARAMAMI 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]);
}
?>

Funkcja sprawdza paramy zapytań i automatycznie dodaje je do Zmienna $_GET. To działa całkiem dobrze dla moich przypadków użycia.

Oto przykład na stronie formularza po wywołaniu:

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

Kolejny przykład dynamicznego włączania GET params, aby uwzględnić pewne przypadki użycia. Mam nadzieję, że to pomoże. Należy pamiętać, że ten kod nie jest w stanie kompletnym, ale powinno to wystarczyć, aby każdy zaczął całkiem dobrze dla swojego przypadku użycia.

 2
Author: iLLin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-09 15:43:11

Najprostszym sposobem, aby to zrobić jest tak

Indeks.php

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

Możesz udostępniać zmienne, ponieważ zawierają 2 pliki, używając "include"

 2
Author: Kenneth Billones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-17 16:06:59

Twoje pytanie nie jest zbyt jasne, ale jeśli chcesz dołączyć plik php( dodać źródło tej strony do swojego), musisz wykonać następujące czynności:

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

tak długo, jak zmienna ma nazwę $someVar w pliku myFile.php

 0
Author: afewcc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-05 09:29:22

Byłem w tej samej sytuacji i musiałem dołączyć stronę, wysyłając kilka parametrów... Ale w rzeczywistości to, co chciałem zrobić, to przekierować stronę... jeśli tak, to kod to:

<?php
   header("Location: http://localhost/planner/layout.php?page=dashboard"); 
   exit();
?>
 0
Author: hackick7,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-28 10:28:26

Jeśli ktoś inny zajmuje się tym pytaniem, podczas używania include('somepath.php'); i ten plik zawiera funkcję, var musi być tam również zadeklarowany. Włączenie $var=$var; nie zawsze zadziała. Spróbuj uruchomić te:

Jeden.php:

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

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

    testFunction(); /*----- execute imported function */
?>
Dwa.php:
<?php
    function testFunction(){ 
        global $vars; /*----- vars declared inside func! */
        echo $vars[0].$vars[1].$vars[2];
    }
?>
 0
Author: ultracasual,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-03 20:34:42

Możesz użyć $GLOBALS, aby rozwiązać ten problem.

$myvar = "Hey";

include ("test.php");


echo $GLOBALS["myvar"];
 0
Author: Dulith De Costa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-17 05:23:28

Zrób to:

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

I dodać do pliku 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";
}
 -6
Author: Jaydip Godhani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-28 10:44:33