Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在CodeIgniter中获取HTTP?_Php_Codeigniter_Codeigniter 3 - Fatal编程技术网

Php 如何在CodeIgniter中获取HTTP?

Php 如何在CodeIgniter中获取HTTP?,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,假设我有一个名为user <?php if(!defined("BASEPATH")) exit("No direct script access allowed"); class login extends CI_Controller { public function index() { $this->load->model("login_model"); $data["users"]=$this->login_model->get_

假设我有一个名为user

<?php
if(!defined("BASEPATH")) exit("No direct script access allowed");

class login extends CI_Controller
{
  public function index()
  {
    $this->load->model("login_model"); 
    $data["users"]=$this->login_model->get_user(); 

    $this->load->view("login_view", $data);
  }
} 
    class Login_model extends CI_Model {

        function get_user(){
            // get username, like $_GET['user']
            $user = $this->input->get('user');

            // get the password and MD5-ed it, like md5($_GET['password'])
            $md5_pass = md5($this->get('password'));

            // the where condition
            $this->db->where(array('userName' => $user, 'password' => $md5_pass)); 

            // ok, now let's query the db
            $q = $this->db->get('user');

            if($q->num_rows() > 0){

                foreach ($q->result() as $row){
                    $data[] = $row;
                }
            }
            return $data;
        }
    }

?>

我想做一个大致如下的HTTP调用

检查数据库中是否有密码为“12345”的用户“steve”。这是我的密码

控制器

<?php
if(!defined("BASEPATH")) exit("No direct script access allowed");

class login extends CI_Controller
{
  public function index()
  {
    $this->load->model("login_model"); 
    $data["users"]=$this->login_model->get_user(); 

    $this->load->view("login_view", $data);
  }
} 
    class Login_model extends CI_Model {

        function get_user(){
            // get username, like $_GET['user']
            $user = $this->input->get('user');

            // get the password and MD5-ed it, like md5($_GET['password'])
            $md5_pass = md5($this->get('password'));

            // the where condition
            $this->db->where(array('userName' => $user, 'password' => $md5_pass)); 

            // ok, now let's query the db
            $q = $this->db->get('user');

            if($q->num_rows() > 0){

                foreach ($q->result() as $row){
                    $data[] = $row;
                }
            }
            return $data;
        }
    }

?>
查看

    class Login_model extends CI_Model {

        function get_user(){
            // get username, like $_GET['user']
            $user = $this->input->get('user');

            // get the password and MD5-ed it, like md5($_GET['password'])
            $md5_pass = md5($this->get('password'));

            // the where condition
            $this->db->where(array('userName' => $user, 'password' => $md5_pass)); 

            // ok, now let's query the db
            $q = $this->db->get('user');

            if($q->num_rows() > 0){

                foreach ($q->result() as $row){
                    $data[] = $row;
                }
            }
            return $data;
        }
    }

?>
<?php

if (!empty($users)){
    foreach ($users as $u){
        echo $u->userId .' '. $u->userName.' '.$u->password.' ';
    }
}

?>

然后我在浏览器上打开了这个: . 结果是


那么,如何正确地进行HTTP调用呢?

模型中的方法名为
get\u user()
,而您将其称为
login\u model->get()

更多关于用户名和密码,你应该使用POST而不是GET

也可以使用或其他哈希算法代替MD5,这样更安全。

模型中的方法名为
get\u user()
,而您将其称为
login\u model->get()

更多关于用户名和密码,你应该使用POST而不是GET

也可以使用或其他哈希算法代替MD5,这样更安全。
如果您通过url传递数据

您可以通过URI段检索它

$user= $this->uri->segment(3); 
$password= $this->uri->segment(4); 
突袭:


这一行可能是
$md5\u pass=md5($this->get('password')get('password')为空,则代码>将设置错误。

如果您通过url传递数据

您可以通过URI段检索它

$user= $this->uri->segment(3); 
$password= $this->uri->segment(4); 
突袭:


这一行可能是
$md5\u pass=md5($this->get('password')get('password')为空,则code>将设置错误。

您正在尝试使用的框架

CodeIgniter抽象通过建议您使用URL段来处理GET参数

CodeIgniter中的URI方案如下():
控制器/方法/参数…

它分为

    class Login_model extends CI_Model {

        function get_user(){
            // get username, like $_GET['user']
            $user = $this->input->get('user');

            // get the password and MD5-ed it, like md5($_GET['password'])
            $md5_pass = md5($this->get('password'));

            // the where condition
            $this->db->where(array('userName' => $user, 'password' => $md5_pass)); 

            // ok, now let's query the db
            $q = $this->db->get('user');

            if($q->num_rows() > 0){

                foreach ($q->result() as $row){
                    $data[] = $row;
                }
            }
            return $data;
        }
    }

?>
  • 控制员(强制性)
  • 该方法(强制性,但在
    索引
    的情况下可能隐含,见下文)
  • 第一个参数(可选)
  • 第二个参数(可选)
  • 。。。等等
  • 如果要使用控制器登录的方法
    index()
    ,它将转换为

    此外,通过htaccess激活模式_重写,可以在

    现在,
    index()
    是一种特殊的方法,因为它是在控制器中默认调用的方法。因此,最终URL为:

    现在,若你们想把参数传递给你们的函数,CodeIgniter会通过后续的段来完成

    但是您需要在控制器方法中声明它们

    class login extends CI_Controller
    {
        public function index($user = null, $password = null)
        { 
            // Check for $user / $password emptiness
    
            // ...
    
            // Use $user / $password as needed
            $data["users"]=$this->login_model->get_user($user , $password); 
    
            // use the results...
        }
    }
    
    现在你可以打电话给我:

    注意,我在URL中添加了
    索引
    ?这是因为当传递参数时,该方法是强制性的


    尽管如此,我将重申其他人所说的话:

  • 避免通过GET传递登录名/密码。我更喜欢邮局
  • 使用加密连接(HTTPS
  •     class Login_model extends CI_Model {
    
            function get_user(){
                // get username, like $_GET['user']
                $user = $this->input->get('user');
    
                // get the password and MD5-ed it, like md5($_GET['password'])
                $md5_pass = md5($this->get('password'));
    
                // the where condition
                $this->db->where(array('userName' => $user, 'password' => $md5_pass)); 
    
                // ok, now let's query the db
                $q = $this->db->get('user');
    
                if($q->num_rows() > 0){
    
                    foreach ($q->result() as $row){
                        $data[] = $row;
                    }
                }
                return $data;
            }
        }
    
    ?>
    
  • 不要用md5甚至sha1散列你的密码。你需要一个强大的算法。你还需要加盐。不管怎么说,PHP给你带来了很多麻烦。不要重新发明轮子

  • 祝您好运。

    您正在尝试使用您正在使用的框架

    CodeIgniter抽象通过建议您使用URL段来处理GET参数

    CodeIgniter中的URI方案如下():
    控制器/方法/参数…

    它分为

        class Login_model extends CI_Model {
    
            function get_user(){
                // get username, like $_GET['user']
                $user = $this->input->get('user');
    
                // get the password and MD5-ed it, like md5($_GET['password'])
                $md5_pass = md5($this->get('password'));
    
                // the where condition
                $this->db->where(array('userName' => $user, 'password' => $md5_pass)); 
    
                // ok, now let's query the db
                $q = $this->db->get('user');
    
                if($q->num_rows() > 0){
    
                    foreach ($q->result() as $row){
                        $data[] = $row;
                    }
                }
                return $data;
            }
        }
    
    ?>
    
  • 控制员(强制性)
  • 该方法(强制性,但在
    索引
    的情况下可能隐含,见下文)
  • 第一个参数(可选)
  • 第二个参数(可选)
  • 。。。等等
  • 如果要使用控制器登录的方法
    index()
    ,它将转换为

    此外,通过htaccess激活模式_重写,可以在

    现在,
    index()
    是一种特殊的方法,因为它是在控制器中默认调用的方法。因此,最终URL为:

    现在,若你们想把参数传递给你们的函数,CodeIgniter会通过后续的段来完成

    但是您需要在控制器方法中声明它们

    class login extends CI_Controller
    {
        public function index($user = null, $password = null)
        { 
            // Check for $user / $password emptiness
    
            // ...
    
            // Use $user / $password as needed
            $data["users"]=$this->login_model->get_user($user , $password); 
    
            // use the results...
        }
    }
    
    现在你可以打电话给我:

    注意,我在URL中添加了
    索引
    ?这是因为当传递参数时,该方法是强制性的


    尽管如此,我将重申其他人所说的话:

  • 避免通过GET传递登录名/密码。我更喜欢邮局
  • 使用加密连接(HTTPS
  •     class Login_model extends CI_Model {
    
            function get_user(){
                // get username, like $_GET['user']
                $user = $this->input->get('user');
    
                // get the password and MD5-ed it, like md5($_GET['password'])
                $md5_pass = md5($this->get('password'));
    
                // the where condition
                $this->db->where(array('userName' => $user, 'password' => $md5_pass)); 
    
                // ok, now let's query the db
                $q = $this->db->get('user');
    
                if($q->num_rows() > 0){
    
                    foreach ($q->result() as $row){
                        $data[] = $row;
                    }
                }
                return $data;
            }
        }
    
    ?>
    
  • 不要用md5甚至sha1散列你的密码。你需要一个强大的算法。你还需要加盐。不管怎么说,PHP给你带来了很多麻烦。不要重新发明轮子

  • 祝你好运。

    为什么要对同一个系统进行HTTP调用?这会增加一些不必要的开销,而且会非常缓慢。您还需要停止使用MD5作为密码-这是难以置信的不安全。不要使用MD5作为密码这些天来,我也不会把密码放在url中。为什么您要对同一个系统进行HTTP调用?这会增加一些不必要的开销,而且会非常缓慢。你还需要停止使用MD5作为密码-这是难以置信的不安全。不要使用MD5作为密码,这些天我也不会把密码放在url中。嗯,我明白了。但是数据库查询是在模型中完成的。如何将$user和$password传递给它?从
    login\u model
    更新您的
    get\u user()
    函数,以接受
    $user
    $password
    作为参数。。。看我的更新。嗯,我明白了。但是数据库查询是在模型中完成的。如何将$user和$password传递给它?从
    login\u model
    更新您的
    get\u user()
    函数,以接受
    $user
    $password
    作为参数。。。查看我的更新。