假设我有一个名为用户
的表格我想做一个大致像这样的HTTP调用 http://my.awesome.server/dev_api/index.php/login/get_user.php?user=steven&password=12345
如果用户'steve'并且密码为'12345',则检查数据库。这些是我的代码。
控制器
var array = [{ "open": "0.06353900", "high": "0.06354800", "low": "0.06341700", "close": "0.06347300", "volume": "335.48500000", "timestamp": 1521640800000},{ "open": "0.06347300", "high": "0.06365400", "low": "0.06344000", "close": "0.06357500", "volume": "461.02800000", "timestamp": 1521641100000},{ "open": "0.06349500", "high": "0.06360400", "low": "0.06341400", "close": "0.06352300", "volume": "495.50600000", "timestamp": 1521641400000}];
var result = array.reduce((a, {low}) => {
a.push(low);
return a;
}, []);
console.log(result);
模型
<?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://my.awesome.server/dev_api/index.php/login/。结果是
如何正确地进行HTTP呼叫呢?
答案 0 :(得分:2)
模型中的方法名称为dataB
,而您将其称为get_user()
你应该使用POST而不是GET来获取用户名和密码。
同样使用bcrypt或其他哈希算法代替MD5,它更安全。 DO NOT USE MD5
答案 1 :(得分:1)
您正在尝试对抗您正在使用的框架。
CodeIgniter摘要通过建议您使用网址来处理GET参数。
CodeIgniter中的URI方案如下(see docs):
controller/method/params...
它分为段:
index
可能隐含,见下文)您想使用控制器index()
的方法Login
,它转换为
此外,通过htaccess激活mode_rewrite,可以在
中进行简化现在,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...
}
}
现在你可以打电话给:
请注意,我已将index
放入网址?这是因为在传递参数时,该方法是强制性的。
那就是说,我会重申其他人所说的话:
password_hash
。不要重新发明轮子。答案 2 :(得分:0)
如果您通过网址http://my.awesome.server/dev_api/index.php/login/get_user.php?user=steven&password=12345
传递数据您可以通过URI段
检索它$user= $this->uri->segment(3);
$password= $this->uri->segment(4);
SORCE: https://www.codeigniter.com/userguide3/libraries/uri.html
如果$ this-&gt; get('password')为空,则此行$md5_pass = md5($this->get('password'));
设置错误是可能的。