【问题标题】:how to retrieve data in database using sessions in codeigniter?如何使用codeigniter中的会话检索数据库中的数据?
【发布时间】:2017-06-28 07:35:28
【问题描述】:

Home.php这是我的控制器

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
session_start();

class home extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('shakiladb');
    }

    public function index() {
        $this->load->view('index');
        //loading session library
        $this->load->library('session');

        //adding data to session
        $this->session->set_userdata('username', 'password');
        $this->load->view('session_view');
    }

    public function register() {
        $this->load->view('register');
    }

    public function checkdb() {
        //contact the model to run the query
        $this->shakiladb->savetodb();
    }

    public function unset_session_data() {
        //loading session library
        $this->load->library('session');

        //removing session data
        $this->session->unset_userdata('username');
        $this->load->view('session_view');
    } 

}

shakiladb.php这是我的模型

<?php

class shakiladb extends CI_Model {

    public function __construct() {
        parent::__construct();
        $this->load->database();
    }

    public function savetodb() {
        //capture the username and password
        $username = $this->input->post('Username');
        $password = $this->input->post('Password');

        //query to save in the table
        //$query = $this->db->query("INSERT INTO table1 (USERNAME, PASSWORD) VALUES ('$username', '$password')");

        $validate = $this->db->query("SELECT USERNAME FROM table1 WHERE USERNAME = '".$username."'");
        $count = count($validate);

        if ($validate->num_rows() > 0) {
            echo "Not working";
        } else {
            $this->db->query("INSERT INTO table1 (USERNAME, PASSWORD) VALUES ('$username', md5('$password'))");
            echo "Works";
        }

    }
}

register.php这是我的看法

    <?php

    defined('BASEPATH') OR exit('No direct script access allowed');

    ?>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<?php 
    echo $this->session->userdata('session');
?>
<div align="center">
<form id="reg">
    Username : <input type="text" name="Username" id="Username"><br><br>
    Password : <input type="password" name="Password" id="Password"><br><br>
    <input type="submit" name="btn" id="btn" value="OK">
    <input type="reset" name="Reset" name="Reset" value="Reset"><br><br>
</form>
</div>

<script type="text/javascript">

$(function() {
    function validation() {

        var username = $("#Username").val();
        var password = $("#Password").val();

        if (username == "") {
            alert("Please fill in the username field!");
            return false;
        }

        if (password == "") {
            alert("Please fill in the password field!");
            return false;
        }

        return true;

    }

$('#btn').click(function() {

    var method = validation();

    if (method == true) {
        $.ajax({
        url: "http://localhost/shark/home/checkdb",
        type: 'POST',
        data: $("#reg").serialize(),
        success: function(result) {
            if (result == "Not working") {
                alert("Already");
            }
            if (result == "Works") {
                alert("Not existing");
            }
        }
        });
        return false;
    }
    return false;
});

});

</script>

</body>
</html>

这是我的代码,我需要知道如何使用会话并实现从数据库中检索数据的目标?

【问题讨论】:

  • 我已经使用了会话方法,但是每次我都会遇到错误...请帮助我!
  • MD5 出于安全目的被认为是损坏的,不足以进行密码散列。请改用password_hash()password_verify()。如果您使用的是 5.5 之前的 PHP 版本,则可以使用 this compatibility pack
  • 您的代码可能容易受到SQL injection 攻击。您应该通过mysqliPDO 驱动程序使用带有绑定参数的预处理语句。 This post 有一些很好的例子。

标签: php html codeigniter mysqli


【解决方案1】:

Home.php这是你的控制器

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class home extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->library('session');
        $this->load->model('shakiladb');
    }

    public function index() {
        $this->load->view('index');
        //loading session library


        //adding data to session
        $this->session->set_userdata('username', 'password');
        $this->load->view('session_view');
    }

    public function register() {
        $this->load->view('register');
    }

    public function checkdb() {
        //contact the model to run the query
         $username = $this->input->post('Username');
        $password = $this->input->post('Password');
        $this->shakiladb->savetodb($username,$password);
    }

    public function unset_session_data() {
        //loading session library
        //removing session data
        $this->session->unset_userdata('username');
        $this->load->view('session_view');
    } 

}

shakiladb.php这是你的模型

<?php

class shakiladb extends CI_Model {

    public function __construct() {
        parent::__construct();
        $this->load->database();
    }

    public function savetodb($username,$password) {
        //capture the username and password

        $password=md5($password);
        //query to save in the table
        //$query = $this->db->query("INSERT INTO table1 (USERNAME, PASSWORD) VALUES ('$username', '$password')");

        $validate = $this->db->query("SELECT USERNAME FROM table1 WHERE USERNAME = '".$username."'");
        $count = count($validate);

        if ($validate->num_rows() > 0) {
            echo "Not working";
        } else {
            $this->db->query("INSERT INTO table1 (USERNAME, PASSWORD) VALUES ('".$username."', '".$password."')");
            echo "Works";
        }

    }
}

【讨论】:

  • 我已经更新了 home.php 的答案试试这个。如果它不起作用比编辑你的问题并显示错误
  • 遇到 PHP 错误 严重性:通知消息:未定义属性:CI_Loader::$session 文件名:views/register.php 行号:12 回溯:文件:C:\xampp\htdocs \codeigniter\application\views\register.php 行:12 功能:error_handler 文件:C:\xampp\htdocs\codeigniter\application\controllers\Home.php 行:23 功能:查看文件:C:\xampp\ htdocs\codeigniter\index.php 行:315 功能:require_once _这是一个错误
  • 遇到未捕获的异常类型:错误消息:在 null 文件名上调用成员函数 userdata() 文件名:C:\xampp\htdocs\codeigniter\application\views\register.php 行编号:12 回溯:文件:C:\xampp\htdocs\codeigniter\application\controllers\Home.php 行:23 功能:查看文件:C:\xampp\htdocs\codeigniter\index.php 行:315 功能:require_once 这是另一个错误
  • 如果你在会话中添加数据`$this->session->set_userdata('username', 'password');`你的用户名和密码在哪里?
  • 参考这个答案store data in session
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
  • 2013-10-11
相关资源
最近更新 更多