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.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).
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?
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 !
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.
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.
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?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
Następnie wewnątrz referencje.plik php mam coś takiego: ajax('references.php?count=1');
<?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.
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"
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
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();
?>
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];
}
?>
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"];
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";
}
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