|
本人刚接触ci,试着动手写个登陆验证功能,但一直不成功,以下是代码,望高手指教!!!
captcha.php
PHP复制代码 <?php if( ! defined('BASEPATH')) exit('No direct script access allowed');
class Captcha extends CI_Controller {
public function index ()
{
$out_datas=$this->_captcha ();
$this->load->view('login',$out_datas);
}
private function _captcha (){
$this->load->helper("mycaptcha");//加载验证码
$vals = array(
'img_path' => './captcha/', //验证码图片存放的地址
'img_url' => base_url ()."captcha/", //图片访问的路径
'img_width' => '60', //图片的宽度
'img_height' => '20', //高度
'expiration' => 1, //存放时间,1分钟
'word_length'=> 4 //显示几位验证数字
);
$cap = create_captcha ($vals);
$out_datas["v_img"]=$cap["image"]; //生成的图片文件
$out_datas["v_word"]=$cap["word"];
$arr=array("v_word"=>$cap["word"]);
$this->session->set_userdata($arr); //生成的验证码,也可放入session中管理
return $out_datas;
}
function checklogin ()
{
$this->load->model("test_m");
if($_POST["submit"])
{
$this->load->library('form_validation'); // 使用CI的表单验证, 如下:
$this->form_validation->set_rules('user', 'User', 'min_length[2]|max_length[10]|required');
$this->form_validation->set_rules('password', 'Password', 'min_length[4]|max_length[10]|required');
$this->form_validation->set_rules('rand', '验证码', 'required');
if($this->form_validation->run() !== false)
{
$user=$this->test_m->user_select($_POST["user"]);
if($user)
{
if($user[0]->upass==$_POST["password"])
{
if($_POST["rand"]==$this->session->userdata('v_word'))
{
$arr=array("uid"=>$user[0]->uid);
$this->session->set_userdata($arr);
echo"登陆成功!";
$this->load->view('loginsuccess');
}
else
{
echo "验证码有误!";
$data=$this->_captcha ();
$this->load->view('login',$data);
}
}
else
{
echo"密码错误!";
$data=$this->_captcha ();
$this->load->view('login',$data);
}
}
else
{
echo "用户不存在!";
$data=$this->_captcha ();
$this->load->view('login',$data);
}
}
else
{
$data=$this->_captcha ();
$this->load->view('login.php',$data);
}
}
else
{
echo"没有登陆!";
$data=$this->_captcha ();
$this->load->view('login.php',$data);
}
}
function checksession ()
{
$this->load->library("session");
if($this->session->userdata('uid'))
echo "已登录!";
else
echo "没有登陆!";
}
function loginout ()
{
$this->load->library("session");
$this->session->unset_userdata('uid');
}
};
#在 'img_path' => './captcha/', 我们将生成的图片存放在 项目/captcha目录下,所以我们要在application的同级目录中创建captcha目录,用来存放验证码图片applicationcaptcha --在application 的同级目录创建文件system
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */ 复制代码
login.php
PHP复制代码 <?php echo form_open('captcha/checklogin');?> <p>
<?php
echo form_label('User: ', 'user');
echo form_input('user','', 'id="text"');
?>
</p>
<p>
<?php
echo form_label('Password: ', 'password');
echo form_input('password', '', 'id="password"');
?>
</p>
<p>
<?php
echo form_label('验证码: ', 'rand');
echo form_input('rand','', 'id="text"');
echo $v_img;
?>
</p>
<p>
<?php echo form_submit('submit','Login');?>
</p>
<?php echo form_close();?>
<div class="errors"><?php echo validation_errors();?></div> 复制代码
|
|