【问题标题】:Passing session variables to other pages in cakephp将会话变量传递给 cakephp 中的其他页面
【发布时间】:2017-02-12 03:19:33
【问题描述】:

我正在尝试在 cakephp 中传递会话变量。我就是这样尝试的:

LoginController.php:-

<?php 
    namespace App\Controller;
    session_start ();
    use App\Controller\AppController;
    use Cake\ORM\TableRegistry;

    class LoginController extends AppController
    {
        public function loginentry(){
                    $loginid = $this->request->data('LoginID');
                    $password = $this->request->data('Password');

                    $login = TableRegistry::get('login');
                    $result = $login->loginuser($loginid, $password);
                    echo json_encode($result);
                    //extract($result);
                    //echo "\$a = memberid; \$b = membertype; \$c = roleid";

                    if($result == false){
                        $this->Flash->error(__("Incorrect Login"));
                    } else {
                        $_SESSION ["MemberID"] = $result[0]->memberid;
                        $_SESSION ["MemberType"] = $result[0]->membertype;
                        $_SESSION ["MemberName"] = $result[0]->membername;
                        $_SESSION ["RoleID"] = $result[0]->roleid;                      
                            //  $this->redirect(['controller' => 'Mom', 'action' => 'momlist']);
                        }
                    }
    }

MomController.php:-

类 dtHelper { 公共$aaData; } 类 MomController 扩展 AppController {

public function initialize() {
    parent::initialize ();
}

    public function editor($id = NULL)
{
    $this->set('mid', $id);
    if($this->request->is('post')){
        $momid = $this->request->data( 'MomID' );
        $momtitle = $this->request->data ( 'MomTitle' );
        $customerid = $this->request->data ( 'CustomerID' );
        $meetingheldon = $this->request->data ( 'MeetingHeldOn' );
        $session = $this->request->data ( 'Session' );
        $meetingstartedat = $this->request->data ( 'MeetingStartedAt' );
        $meetingendedat = $this->request->data ( 'MeetingEndedAt' );
        $participantsfromcustomerside = $this->request->data ( 'ParticipantsFromCustomerSide' );
        $staffid = implode(',', $this->request->data ( 'StaffID' ));
        $location = $this->request->data ( 'Location' );
        $Mom = TableRegistry::get ( 'Mom' );
        if(isset($id) && $id > 0){
            $result = $Mom->update ( $momid, $momtitle, $customerid, $meetingheldon, $session, $meetingstartedat, $meetingendedat, $participantsfromcustomerside, $staffid, $location);
        } else {
            $result = $Mom->create ( $momtitle, $customerid, $meetingheldon, $session, $meetingstartedat, $meetingendedat, $participantsfromcustomerside, $staffid, $location);
        }
        $message=$result['message'];
        if($result['webid']>0){
            $this->Flash->success($message);
            return $this->redirect ( [ 'Controller' => 'Mom','action' => 'momlist'] );
        }else{
            if(isset($id) && $id > 0)
            {
                $result = (object) array( 'momid'=>$momid,'momtitle'=>$momtitle,'customerid'=>$customerid,'meetingheldon'=>$meetingheldon,'session'=>$session,'meetingstartedat'=>$meetingstartedat,'meetingendedat'=>$meetingendedat,'participantsfromcustomerside'=>$participantsfromcustomerside,'staffid'=>$staffid,'location'=>$location);
                $this->set(array('row'=>$result,'mode'=>'Update'));
            }
            else{
                $result = (object) array( 'momtitle'=>$momtitle,'customerid'=>$customerid,'meetingheldon'=>$meetingheldon,'session'=>$session,'meetingstartedat'=>$meetingstartedat,'meetingendedat'=>$meetingendedat,'participantsfromcustomerside'=>$participantsfromcustomerside,'staffid'=>$staffid,'location'=>$location);
                $this->set(array('row'=>$result,'mode'=>'Save'));
            }
            $this->Flash->error($message);
        }
    } else {
        $mom = TableRegistry::get('Mom');
        $momlist = $mom->getlist();
        $this->set(array('momlist' => $momlist));

        $customer = TableRegistry::get('customer');
        $customerlist = $customer->getlist();
        $this->set(array('customerlist' => $customerlist));

        $project = TableRegistry::get('mom');
        $projectlist = $project->getprojectlist(1);
        $this->set(array('projectlist' => $projectlist));

        if(isset($id) && $id > 0)
        {           
            $mom=TableRegistry::get('mom');
            $result = $mom->getbyid($id);
            $this->set(array('row' => $result, 'mode' => 'Update'));
        }
        else{
            $this->set( array('mode'=>'Save'));
        }
    }
    $this->render ();
}
}

editor.ctp:-

 <input type="text" class="form-control" id="MomID" name="MomID" value="<?=isset($row->momid)?$row->momid:0 ?>">
        <input type="text" class="form-control" id="Session" name="Session" value="<?= $_SESSION["memberid"]; ?>">

这就是我尝试将值写入会话变量的方式。我想在不同的页面中使用这些会话变量。我已将这些变量的值分配给那些$_SESSION 变量,但我不知道如何在另一页中读取它们。我该怎么做?

【问题讨论】:

    标签: php session cakephp


    【解决方案1】:

    您正在访问一个未定义的索引memberid,它应该是MemberID

    value="<?= $_SESSION["MemberID"]; ?>"
    

    【讨论】:

    • 我收到此错误:通知 (8): Undefined index: memberid [APP/Template\mom\editor.ctp, line 4]"> 如果我不包含 ,如果我包含,我会得到:注意 (8):会话已经开始 - 忽略 session_start() [APP/Template\mom\editor.ctp,第 1 行]
    • 更新了我的答案。
    • 我得到了同样的错误。我应该改变其他东西吗??
    • 你可以先试试这个:print_r($_SESSION); 并显示输出吗?
    • 虽然这可能会解决问题,但在 CakePHP 中强烈不鼓励直接访问超全局变量,这只会给您带来麻烦,尤其是在测试环境中。 @duddosai
    【解决方案2】:

    【讨论】:

    • Salines:我已经读过了,但我不会这样做。我正在这样做,我展示了。上面的方法怎么办?
    • 那么你不需要任何框架。 CakePHP 等框架由经验丰富的开发人员构建,他们意识到大部分代码可以以更简单的方式使用,无需重复代码(DRY)或编写意大利面条式代码,最重要的是代码必须按照一定的规则编写,让未来的开发者更容易执行升级应用。希望你能理解。
    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 2013-06-03
    • 2012-09-16
    • 2014-08-25
    • 1970-01-01
    相关资源
    最近更新 更多