[Day. 27] Codeigniter Session

现在我们的网页已经具有相当基本的功能了

但是,有一个很容易发现的问题,
就是浏览器并没有记住使用者的资讯,而造成每一次都要重新登入

带来我们的新产品--Session
来看看官方怎麽说:

session类别允许你在使用者浏览你的网页时, 保存使用者的"状态"及纪录使用者活动。Session类别将每个使用者的session资讯序列化 (并可经过加密)後, 储存在cookie中。

这正是我们要的保存使用者的状态纪录使用者活动

要使用session前,要先载入(load)
可以直接利用config/autoload.php

$autoload['libraries'] = array('session');

或是直接在档案中打上

$this->load->library('session');

接着到config/config.php修改:

$config['sess_expiration'] = 0;

sess_expiration是希望session存在的秒数,设为0的目的是要让session不会过期,直到浏览器关闭

我们要在使用者登入後记住使用者资讯,所以到User.php底下的login()做修改:

public function login()
    {	
    	$check_data = $this->user_model->login($this->input->post('username'));
    	if($check_data == ""){
    		echo "Unregister user.";
    	}
    	else{
    		if($check_data->password == $this->input->post('password')){
    			$data = $check_data;
    			$this->session->set_userdata($sess_data = array('username' =>  $data->username));
    			$this->welcome($data);
    		}
    		else{
    			echo "Password Error!";
    		}
    	}

    }

将资讯(使用者的username)用session储存起来

接着来到login.php登入的介面,新增以下内容:

<?php
    $this->load->helper('url');
    if(isset($_SESSION['username'])){
            redirect('index.php/user/welcome', 'refresh');
        }
?>

这段意思就是当使用者有登入过而留下session纪录时,在登入页面可以直接重新导向至後续的网页。

昨天的资料传递问题也可以一并解决~
修改welcome(),把参数拿掉~

public function welcome()
    {
    	$this->load->view('pages/welcome.php');
    }


pages/welcome.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Home</title>
    </head>
    <body>
        <h1>Login Success!</h1><br>
        <h2>Then what do you want to do?</h2>
        <form method=post action="gotoupdate">
        	<button type="submit">点我进行资讯更改</button>
        </form>
    </body>
</html>

修改gotoupdate()

public function gotoupdate()
    {
    	$check_data = $this->user_model->login($_SESSION['username']);
    	$data['about'] = $check_data->about;
    	$data['username'] = $this->input->post('username');
    	$this->load->view('pages/update.php',$data);
    }

接着来测试一下吧~

一样打开 http://localhost/ci/index.php/
https://ithelp.ithome.com.tw/upload/images/20201012/20126335T3UoP1roS8.png
登入之後再回到http://localhost/ci/index.php/
然後再按下登入
https://ithelp.ithome.com.tw/upload/images/20201012/20126335NzjLen7kPc.png
就会直接略过登入的步骤而到登入後的介面罗~


<<:  [Day - 27] React Bootstrap 套件心得分享

>>:  IOS 菜菜菜鸟30天挑战 Day-29 本地推播

Servo控制

看到书上特别讲述Servo的控制 仔细看了一下 发现这个可分别控制到机器人的关节转动或是当成指示刻度...

16 | WordPress 地图区块 Map Block

使用地图区块,可将地图嵌入网站上的任何文章或页面之内。 若要新增地图区块,请按一下区块插入工具图示。...

[第二十八天]从0开始的UnityAR手机游戏开发-虚拟摇杆 Joystick 02

新增一个C# Sprite并命名为PlayerController後开始撰写程序码 using Un...

[Day 07] - Spring Boot 实作登入验证(一)(TOKEN or SESSION?)

昨天在controller有做了一个post的登入api, 不过也就只是验证你传入的帐密有没有正确而...

11 - exa - 总览目录的工具

ls 指令会列出目录中的各个档案与目录,供使用者浏览整个目录的结构,是个十分常用的指令。 但它的设计...