我想动态填充Facebook开放标签中的数据。为此,我需要将一个变量从我的控制器文件传递到CI模型之外的文件。怎么做?
public function index()
{
$data['clients'] = $this->qua_model->list_clients();
$data['clientst'] = $this->qua_model->list_clientst();
$id = $this->uri->segment(3);
//GET RECORD BY ID
$data['result']=$this->qua_model->get_record_by_id($id);
// print_r($data['result']);
$data['url']= urlencode(base_url().'intermediate.php?data=$result');
// print_r($data['url']);
// return;
//echo $data['url'];
//exit();
//$data['url'] = base_url().'Testimonial';
$this->load->view("header",$data);
$this->load->view("testimonial",$data);
$this->load->view("footer");
}
上面的代码是我的控制器的索引功能。我想将变量$ result传递给intermediate.php页面。
下面是intermediate.php页面。
<!DOCTYPE html>
<html>
<head>
<!--<meta property="fb:app_id" content="535219850163370" />
<meta property="og:site_name" content="meta site name"/>
-->
<meta property="og:url" content="http://www.quanutrition.com/Dotcom/new/"/>
<meta property="og:type" content="website"/>
<meta property="og:title" content="title"/>
<meta property="og:image" content="http://quanutrition.com/Dotcom/new//admin/assets/uploads/clients_image/shikhar-dhawan-759.jpg"/>
<meta property="og:description" content="My description"/>
<script type="text/javascript">
<!--
function Redirect() {
window.location="http://www.quanutrition.com/Dotcom/new/";
}
//-->
</script>
</head>
;
<body onload="Redirect()" >
</body>
</html>
以下是我正在设置会话的视图页面。 $ clients是包含数组的变量。
<?php
session_start();
$_SESSION['clients']=$clients;
print_r ($_SESSION);
exit();
?>
现在在另一页我正在做这件事。
<?php
session_start();
print_r ($_SESSION);
$var = $_SESSION['clients'];
echo $var;
exit();
?>
抛出此错误 - 未定义的索引:客户端。 我做错了什么?
这就是$ clients中我的数组中的单个数据的样子
Array([clients] =&gt; Array([0] =&gt; stdClass Object([client_id] =&gt; 1 [name] =&gt; Shikhar Dhawan [image] =&gt; shikhar-dhawan-759.jpg [video] =&gt; [content1] =&gt; “营养在我的恢复和表现中起着关键作用。使用运动基因测试和推进营养血液生物化学可以帮助我。通过这种方式进食计划变得更加科学和结果导向。”
答案 0 :(得分:0)
会话遵循简单的工作流程。当会话启动时,PHP将使用传递的ID(通常来自会话cookie)检索现有会话,或者如果没有传递会话,它将创建新会话。在会话开始后,PHP将使用任何会话数据填充$ _SESSION超全局。
见这里:http://php.net/manual/en/session.examples.basic.php
每次要存储或检索会话中的数据时,都需要打开会话。 session_start();
所以你需要在你的controler.php中使用它:
<?php
session_start();
...
在最顶端。这将启动您的会话,现在您只需将变量/数据存储在刚刚开始的会话中。为此:
$_SESSION['var_name'] = "value";
或
$_SESSION['foo'] = bar;
在下一页上,您将重新开始:
<?php
session_start();
...
在最顶端。然后你只需调用变量:
$new_page_var = $_SESSION['foo']; // contains now 'bar'
如果您不再需要变量,可以按照以下方式执行此操作:
unset($_SESSION['foo']);
,该变量将被删除。
一旦完成并且不再需要会话,您还可以使用以下命令解除会话:session_destroy();
- 这将删除会话以及其中的所有存储数据!
希望这会有所帮助,欢呼:)
以你的例子:
<?php
session_start();
$_SESSION['clients']=$clients;
print_r ($_SESSION);
exit();
?>
你错过了$ clients变量!看这里:
<?php
session_start();
$clients=array("foo", "bar");
$_SESSION['clients']=$clients;
print_r ($_SESSION);
exit();
?>
干杯
<?php
session_start();
$object1 = new stdClass();
$object1->client_id = 1;
$object1->name = 'Shikhar Dhawan';
$object1->content1 = 'Some content';
$object2 = new stdClass();
$object2->client_id = 2;
$object2->name = 'Florian Foo';
$object2->content1 = 'Bar some content';
$clients=array($object1, $object2);
$_SESSION['clients']=$clients;
foreach ($_SESSION['clients'] as $client) {
echo $client->name ." wrote:".$client->content1."\n";
}
exit();
?>
将输出:
Shikhar Dhawan wrote:Some content
Florian Foo wrote:Bar some content
干杯