Php 如何在CodeIgniter中获取HTTP?
假设我有一个名为userPhp 如何在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_
<?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')如果$this->get('password')为空,则代码>将设置错误。如果您通过url传递数据
您可以通过URI段检索它
$user= $this->uri->segment(3);
$password= $this->uri->segment(4);
突袭:
这一行可能是$md5\u pass=md5($this->get('password')如果$this->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
作为参数。。。查看我的更新。