Мне нужно показать страницу из моего php-скрипта в зависимости от определенных условий. У меня есть условие if, и я выполняю «включить», если условие выполнено.
if(condition here){
include "myFile.php?id='$someVar'";
}
Теперь проблема в том, что на сервере есть файл «myFile.php», но я хочу вызвать этот файл с аргументом (id), и значение «id» будет изменяться с каждым вызовом.
Подскажите, пожалуйста, как этого добиться? Спасибо.
php
parameters
include
lostInTransit
источник
источник
Ответы:
Представьте себе, что включает в себя: копию и вставку содержимого включенного файла PHP, которое затем будет интерпретировано. Здесь вообще нет изменения области действия, поэтому вы все равно можете напрямую обращаться к $ someVar во включенном файле (даже если вы можете рассмотреть структуру на основе классов, в которой вы передаете $ someVar в качестве параметра или ссылаетесь на несколько глобальных переменных).
источник
Вы можете сделать что-то вроде этого, чтобы добиться желаемого эффекта:
$_GET['id']=$somevar; include('myFile.php');
Однако похоже, что вы используете это include как своего рода вызов функции (вы упоминаете, что вызываете его неоднократно с разными аргументами).
В таком случае, почему бы не превратить его в обычную функцию, включенную один раз и вызываемую несколько раз?
источник
include("myFile.php?id=$somevar");
идентичный?include("myFile.php?...
не работает должным образом.Включение похоже на вставку кода. Вы получаете во включенном коде те же самые переменные, что и в базовом коде. Итак, вы можете сделать это в своем основном файле:
<? if ($condition == true) { $id = 12345; include 'myFile.php'; } ?>
И в "myFile.php":
<? echo 'My id is : ' . $id . '!'; ?>
Это выведет:
источник
Если вы собираетесь записать это включение вручную в файл PHP - ответ Даффа идеален.
В любом случае, если вам нужно сделать то, что было первоначальным вопросом, вот небольшая простая функция для этого:
<?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 } ?>
В файл, в который вы хотите, чтобы он был включен, включите файл, а затем вызовите функцию с нужными параметрами.
источник
Я знаю, что это было давно, однако мне интересно, будет ли лучший способ справиться с этим - использовать переменные сеанса be
В вашем myFile.php у вас будет
<?php $MySomeVAR = $_SESSION['SomeVar']; ?>
И в вызывающем файле
<?php session_start(); $_SESSION['SomeVar'] = $SomeVAR; include('myFile.php'); echo $MySomeVAR; ?>
Сможет ли это обойти «предполагаемую» необходимость Функционировать весь процесс?
источник
Я столкнулся с этим при создании форм ajax, где я включаю несколько наборов полей. Взять, к примеру, заявление о приеме на работу. Я начинаю с одного набора профессиональных справочников, и у меня есть кнопка с надписью «Добавить еще». Это выполняет вызов ajax с параметром $ count, чтобы снова включить набор входных данных (имя, контакт, телефон и т. Д.). Это отлично работает при вызове первой страницы, поскольку я делаю что-то вроде:
<?php include('references.php');` ?>
Пользователь нажимает кнопку, которая выполняет вызов ajax.
Затем внутри файла links.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 для определенных вариантов использования. Надеюсь это поможет. Обратите внимание, что этот код не находится в полном состоянии, но этого должно быть достаточно, чтобы кто-нибудь начал хорошо работать для своего варианта использования.
источник
Самый простой способ сделать это так:
index.php
<?php $active = 'home'; include 'second.php'; ?>
second.php
<?php echo $active; ?>
Вы можете делиться переменными, так как вы включаете 2 файла, используя "include"
источник
Ваш вопрос не очень ясен, но если вы хотите включить файл php (добавить источник этой страницы к себе), вам просто нужно сделать следующее:
if(condition){ $someVar=someValue; include "myFile.php"; }
Пока переменная называется $ someVar в myFile.php
источник
Я был в той же ситуации, и мне нужно было включить страницу, отправив некоторые параметры ... Но на самом деле я хотел перенаправить страницу ... если это ваш случай, код следующий:
<?php header("Location: http://localhost/planner/layout.php?page=dashboard"); exit(); ?>
источник
Если кто-то еще задает этот вопрос, при использовании,
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]; } ?>
источник
Вы также можете использовать
$GLOBALS
для решения этой проблемы.$myvar = "Hey"; include ("test.php"); echo $GLOBALS["myvar"];
источник
Сделай это:
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"; }
источник