PHP - php 파일 포함 및 쿼리 매개 변수 전송
특정 조건에 따라 php 스크립트의 페이지를 표시해야 합니다.저는 if 조건을 가지고 있고 조건이 충족되면 "포함"을 하고 있습니다.
if(condition here){
include "myFile.php?id='$someVar'";
}
여기서 문제는 서버에 "myFile.php" 파일이 있는데 인수(id)를 사용하여 이 파일에 콜을 발신하면 콜마다 "id" 값이 변경됩니다.
이걸 어떻게 해야 하는지 누가 좀 알려주시겠어요?감사해요.
include를 있는 그대로 상상해 보세요.포함된 PHP 파일의 내용을 복사 & 페이스트하여 해석합니다.스코프의 변경은 전혀 없기 때문에 포함된 파일의 $someVar에 직접 액세스할 수 있습니다($someVar를 매개 변수로 전달하거나 몇 가지 글로벌 변수를 참조하는 클래스 기반 구조를 고려할 수도 있습니다).
다음과 같은 방법으로 원하는 효과를 얻을 수 있습니다.
$_GET['id']=$somevar;
include('myFile.php');
다만, 이 include 를 사용하고 있는 것처럼 들립니다(다른 인수로 반복해서 호출하는 것을 언급하고 있습니다).
이 경우 한 번 포함되고 여러 번 호출되는 일반 함수로 전환하면 어떨까요?
포함은 코드 삽입과 같습니다.기본 코드와 동일한 변수를 포함 코드에 입력합니다.메인 파일에서 다음을 수행할 수 있습니다.
<?
if ($condition == true)
{
$id = 12345;
include 'myFile.php';
}
?>
"myFile.php"에는 다음과 같은 내용이 있습니다.
<?
echo 'My id is : ' . $id . '!';
?>
다음과 같이 출력됩니다.
내 아이디는 12345야!
만약 당신이 이것을 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);
}
?>
저는 이 가변 구조를 매우 자주 사용하고 있습니다.
포함된 파일에서 html을 함수로 래핑합니다.
<?php function($myVar) {?>
<div>
<?php echo $myVar; ?>
</div>
<?php } ?>
포함할 파일에 파일을 포함시킨 다음 원하는 매개 변수를 사용하여 함수를 호출합니다.
가장 간단한 방법은 다음과 같습니다.
index.displaces를 표시합니다.
<?php $active = 'home'; include 'second.php'; ?>
second.second.discloss(세컨드).
<?php echo $active; ?>
"include"를 사용하여 2개의 파일을 포함하므로 변수를 공유할 수 있습니다.
시간이 좀 지났지만, 이 문제를 해결하는 가장 좋은 방법이 be session 변수를 활용하는 것인지 궁금합니다.
myFile에 있습니다.php가 있으면
<?php
$MySomeVAR = $_SESSION['SomeVar'];
?>
그리고 발신자 파일에
<?php
session_start();
$_SESSION['SomeVar'] = $SomeVAR;
include('myFile.php');
echo $MySomeVAR;
?>
이렇게 하면 전체 프로세스를 기능시켜야 하는 "제안된" 요구를 우회할 수 있습니까?
여러 필드 세트를 포함하는 ajax 폼을 작성할 때 이와 같은 일이 있었습니다.입사 원서를 예로 들어보자.프로페셔널 레퍼런스 세트부터 시작해서 "Add More(더 추가)"라는 버튼이 있습니다.그러면 입력 세트(이름, 연락처, 전화)를 다시 포함하기 위해 $count 파라미터를 사용하여 ajax 콜이 실행됩니다.etc) 이것은, 다음과 같은 조작을 실시하기 때문에, 첫 페이지 콜시에 정상적으로 동작합니다.
<?php
include('references.php');`
?>
콜을 Ajax가 호출됩니다.
ppp 저는 다음과 같은것을 있습니다.ajax('references.php?count=1');
<?php
$count = isset($_GET['count']) ? $_GET['count'] : 0;
?>
또한 파라미터를 전달하는 사이트 전체에 이와 같은 다른 다이내믹도 있습니다.사용자가 [Submit]를 눌러 폼오류가 발생했을 때 문제가 발생합니다.따라서 동적으로 포함되는 추가 필드 세트를 포함하기 위해 코드를 복제하지 않기 위해 적절한 GET 파라미터를 사용하여 include를 설정하는 함수를 만들었습니다.
<?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 매개 변수를 포함하는 또 다른 예입니다.이게 도움이 됐으면 좋겠다.이 코드는 완전한 상태는 아니지만, 이 정도면 누구나 자신의 사용 사례에 맞게 시작할 수 있습니다.
하시면 됩니다.$GLOBALS
이 문제를 해결하기 위해서도요.
$myvar = "Hey";
include ("test.php");
echo $GLOBALS["myvar"];
당신의 질문은 명확하지 않습니다만, 만약 당신이 php 파일을 포함시키고 싶다면(그 페이지의 소스를 당신의 것에 추가) 당신은 다음을 해야 합니다.
if(condition){
$someVar=someValue;
include "myFile.php";
}
myFile에서 변수 이름이 $someVar이면 됩니다.php
저도 같은 상황이어서 몇 가지 매개 변수를 보내서 페이지를 포함시켜야 했습니다.하지만 사실 제가 하고 싶었던 건 페이지를 다시 돌려서...고객님의 경우 코드는 다음과 같습니다.
<?php
header("Location: http://localhost/planner/layout.php?page=dashboard");
exit();
?>
이 있는 , 이 질문을 할 때include('somepath.php');
그 파일에는 함수가 포함되어 있기 때문에 var도 거기에 선언되어 있어야 합니다.의 $var=$var;
을 사용법다음을 실행해 보십시오.
1 . syslog :
<?php
$vars = array('stack','exchange','.com');
include('two.php'); /*----- "paste" contents of two.php */
testFunction(); /*----- execute imported function */
?>
2 . 8 . 1 :
<?php
function testFunction(){
global $vars; /*----- vars declared inside func! */
echo $vars[0].$vars[1].$vars[2];
}
?>
이것도 먹어봐
포함된 파일 안에 함수가 있을 수 있습니다. 그러면 매개변수로 함수를 호출할 수 있습니다.
인크루드 파일은test.php
<?php
function testWithParams($param1, $param2, $moreParam = ''){
echo $param1;
}
그런 다음 파일을 포함시키고 변수를 사용하여 함수를 호출하거나 직접 호출할 수 있습니다.
index.php
<?php
include('test.php');
$var1 = 'Hi how are you?';
$var2 = [1,2,3,4,5];
testWithParams($var1, $var2);
언급URL : https://stackoverflow.com/questions/1232097/php-include-a-php-file-and-also-send-query-parameters
'itsource' 카테고리의 다른 글
데이터베이스 연결 패턴 (0) | 2022.10.25 |
---|---|
단말기 내에서 mysql을 사용하여 경고 메시지를 표시하지 않지만 비밀번호는 bash 스크립트로 작성됩니다. (0) | 2022.10.25 |
ContextLoaderListener는? (0) | 2022.10.25 |
운영 체제 정보 가져오기 (0) | 2022.10.25 |
Python 스레드화에 join()을 사용하는 이유는 무엇입니까? (0) | 2022.10.25 |