PHP – 包括一个PHP文件,并发送查询参数

我必须根据一定的条件从我的php脚本中显示一个页面。 如果条件满足,我有一个if条件,正在做一个“包含”。

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

现在问题是服务器有一个文件“myFile.php”,但我想用一个参数(id)调用这个文件,“ID”的值将随着每个调用而改变。

有人可以告诉我如何做到这一点? 谢谢。

想象一下包含的内容:复制并粘贴包含的PHP文件的内容,然后将其解释。 根本没有范围变化,所以你仍然可以直接访问包含文件中的$ someVar(即使你可能会考虑一个基于类的结构,你将$ someVar作为parameter passing或者引用一些全局variables)。

你可以这样做,以达到你以后的效果

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

不过,这听起来像你正在使用这种包括像某种函数调用(你提到用不同的参数重复调用它)。

在这种情况下,为什么不把它变成一个正常的function,包括一次,多次调用?

包含就像代码插入一样。 你在你的代码中包含了与你的基本代码完全相同的variables。 所以你可以在你的主文件中做到这一点:

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

在“myFile.php”中:

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

这将输出:

我的ID是12345!

如果你打算把这个包括手动的写在PHP文件中 – 达夫的答案是完美的。

无论如何,如果你需要做什么是最初的问题,这是一个小的简单的function来实现这一点:

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

?>

我经常使用这个variablesvariables结构。

我知道这已经有一段时间了,但是Iam想知道处理这个问题的最好方法是使用会话variables(s)

在你的myFile.php你会有

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

并在调用文件中

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

这是否会规避“build议”需要实现整个过程?

我在做包含多个字段集的ajax表单时遇到了这个问题。 以就业申请为例。 我从一个专业的参考设置开始,我有一个button,说“添加更多”。 这与一个$计数参数的ajax调用再次包括input集(名称,联系人,电话..等)这工作正常的第一个页面调用,因为我做这样的事情:

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

用户按下一个button,使ajax调用ajax('references.php?count=1'); 然后在references.php文件里面有这样的内容:

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

我也有其他的dynamic包括像遍历站点这样的parameter passing。 当用户按下提交并出现表单错误时,会发生问题。 所以现在不要复制代码来包含那些dynamic包含的额外的字段集,我创build了一个函数,将设置相应的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]); } ?> 

该函数检查查询参数,并自动将它们添加到$ _GETvariables。 这对我的使用情况非常有用。

以下是调用时的表单页面示例:

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

另一个dynamic包含GET参数的例子来适应某些用例。 希望这可以帮助。 请注意,这段代码并不是完整的状态,但是这应该足以让任何人开始非常好的用例。

你的问题不是很清楚,但是如果你想包含 php文件(把页面的源代码添加到你的文件中),你只需要做以下的事情:

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

只要variables在myFile.php中被命名为$ someVar

我是在相同的情况下,我需要通过发送一些参数包括一个页面…但实际上我想要做的是redirect页面…如果是你的情况,代码是:

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

如果其他人在这个问题上,当使用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 */ ?> 

two.php:

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

做这个:

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