我必须根据某些条件从我的php脚本显示一个页面。我有一个if条件,如果条件满足,我正在做一个“ include”。
if(condition here){
include "myFile.php?id='$someVar'";
}
现在的问题是服务器上有一个文件“ myFile.php”,但我想用一个参数(id)对此文件进行调用,并且每次调用时“ id”的值都会改变。
有人可以告诉我如何实现吗?谢谢。
我必须根据某些条件从我的php脚本显示一个页面。我有一个if条件,如果条件满足,我正在做一个“ include”。
if(condition here){
include "myFile.php?id='$someVar'";
}
现在的问题是服务器上有一个文件“ myFile.php”,但我想用一个参数(id)对此文件进行调用,并且每次调用时“ id”的值都会改变。
有人可以告诉我如何实现吗?谢谢。
Answers:
您可以执行以下操作来达到您想要的效果:
$_GET['id']=$somevar;
include('myFile.php');
但是,听起来好像您正在使用这个include就像某种函数调用(您提到使用不同的参数反复调用它)。
在这种情况下,为什么不将其转换为包含一次并多次调用的常规函数呢?
include("myFile.php?id=$somevar");
相同?
include("myFile.php?...
无法正常工作。
如果要在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);
}
?>
我经常使用这种变量变量构造。
我知道已经有一段时间了,但是,我想知道处理此问题的最佳方法是否是利用be会话变量
在您的myFile.php中,您将拥有
<?php
$MySomeVAR = $_SESSION['SomeVar'];
?>
并在调用文件中
<?php
session_start();
$_SESSION['SomeVar'] = $SomeVAR;
include('myFile.php');
echo $MySomeVAR;
?>
这样是否可以绕过“建议的”功能使整个过程发挥作用?
我在做包含多个字段集的ajax表单时遇到了这种情况。以就业申请为例。我从一个专业参考集开始,我有一个显示“添加更多”的按钮。这会使用$ count参数进行ajax调用,以再次包含输入集(姓名,联系人,电话等)。这在首页调用时效果很好,因为我执行以下操作:
<?php
include('references.php');`
?>
用户按下一个进行ajax调用的按钮,
然后在references.php文件中,我有类似以下内容:ajax('references.php?count=1');
<?php
$count = isset($_GET['count']) ? $_GET['count'] : 0;
?>
在整个站点中,我还具有其他通过参数传递的动态包含。当用户按下Submit并出现表单错误时,就会发生此问题。因此,现在为了不重复代码以包含那些动态包含的额外字段集,我创建了一个函数,该函数将使用适当的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参数以适应某些用例的示例。希望这可以帮助。请注意,该代码尚未处于完整状态,但这足以使任何人都能很好地开始使用他们的用例。
如果其他人对此问题有疑问,则在使用时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";
}