reza_101010
یک شنبه 03 آبان 1394, 10:52 صبح
سلام و خسه نباشید خدمت دوستان گرامی آقا من به یه مشکل خنده دار بر خورم هر کار هم میکنم حل نمیشه یعنی دونم جوابش کجاست:لبخندساده:
من یه فرم دارم با سه تا تکس باکس کد ملی و رمز عبور(دوبار) و کپچال
موقعی که می خوام فرم را بوسیله فرم ولیدیشن بررسی کنم تکس باکس کد ملی رو با یک callback_ فانشن برسی می کنم که کمتر یابیشتر از 10 رقم نباشه
اما تو دستور if وقتی پارامتر ورودی تابع کال بک رو برسی میکنم اول خالیه ! دوما وقتی میگم اگر طول پارامتر با تابع strlen برابر با 10 نبود تابع در هر صورتی یعنی اگر 9 زقم بود یا 12 رقم بود یا هرچی بود یا خود 10 رقم بود تابع false بر میگردونه و شرط برقرار نمی شه
جالبیش اینجاست کپچال کار می ده
ورژن کدایگنایتر: 3
کنترلر
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Reg extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('reg_model');
}
public function index()
{
$this->load->view('header');
$this->load->view('register/reg.php');
$this->load->view('footer');
}
public function aut()
{
$ruls=array(
array(
'field' => 'meli_code',
'label' => 'کد ملی احتیاج است ',
'rules' => 'required|callback_code_meli_check|callback_number iccheck'
),
array(
'field' => 'password',
'label' => 'فیلد پسورد مورد نیاز است ',
'rules' => 'required|matches[re_password]|max_length[10]|callback_passlengh_check'
),
array(
'field' => 're_password',
'label' => 'تکرار کلمه عبور نیاز است ',
'rules' => 'required'
),
array(
'field' => 'capt',
'label' => 'کد امنیتی نیاز است ',
'rules' => 'callback_capt_check|required'
)
);
// $this->form_validation->set_rules("password","مانند هم نیستند",'required|matches_array[input---conf_password]');
$this->form_validation->set_message('required','%s');
$this->form_validation->set_message('matches','پسوردها مانند هم نیستند');
$this->form_validation->set_rules($ruls);
$meli_code=intval($this->input->post('meli_code'));
$password=$this->input->post('password');
$re_password=$this->input->post('re_password');
$capt=$this->input->post('capt');
if ($this->form_validation->run() == false)
{
//var_dump($this->input->post());
$n=strlen($meli_code);
var_dump($meli_code);
$this->load->view('header');
$this->load->view('register/reg.php');
$this->load->view('footer');
}
else
{
$this->reg_model->insert_first_info($meli_code,$password);
$this->session->set_userdata(array('activepanel'=>1));
redirect(site_url('userpanel'), 'refresh');
}
}
function capt_check($str)
{
if ($str != $this->session->userdata('capt'))
{
$this->form_validation->set_message('capt_check', 'کلمه امنیتی اشتباه است');
return FALSE;
}
else
{
return TRUE;
}
}
public function code_meli_check($str='')
{
$str=intval($str);
if(isset($str))
{
$codemeli=$this->reg_model->user_codemeli($str);
if (isset($codemeli)&& $str==$codemeli)
{
$this->form_validation->set_message('code_meli_check', 'کد ملی شما تکراری است ');
return FALSE;
}
}
else
{
return TRUE;
}
}
public function passlengh_check($str='')
{
if (strlen($str)>10 && strlen($str)<4)
{
$this->form_validation->set_message('passlengh_check', 'کلمه عبور نباید کمتر از 4 کاراکتر و بزرکتر از 10 کاراکتر باشد"');
return FALSE;
}
else
{
return TRUE;
}
}
public function numbericcheck($str)
{
$n1=strlen($str);
//$n=var_dump($n);
if ($n1!=10)
{
$this->form_validation->set_message('numbericcheck', 'مقدار شماره ملی حتما باید عددی و حتما باید 10 رقم باشد'."$str");
return FALSE;
}
else
{
return TRUE;
}
}
ویو
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 " id="alert" style="margin-top: 5px;">
<?php echo validation_errors('<p class="alert-danger">','</p>'); ?>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" style="margin-top: 30px;">
<h1 id="reg_title">ثبت نام در سایت</h1>
</div>
<form class="form-horizontal form_register" action="<?php echo site_url('reg/aut'); ?>" method="post">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">شماره ملی </label>
<div class="col-sm-5">
<input type="text" name="meli_code" class="form-control" id="inputEmail3" placeholder="کد ملی خود را اینجا وارد کنید">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">رمزعبور</label>
<div class="col-sm-5">
<input type="password" name="password" class="form-control" id="inputPassword3" placeholder="رمزعبور">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">تکرار رمز عبور</label>
<div class="col-sm-5">
<input type="password" name="re_password" class="form-control" id="inputPassword3" placeholder="تکرار رمز عبور">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">کلمه امنیتی</label>
<div class="col-sm-5">
<input type="text" class="form-control" name="capt" id="capt" placeholder="کلمه امنیتی را اینجا وارد نمایید " name="capt"/>
<div id="capt_image"></div>
<a class="captch" onclick="return refresh_capt()" href="#">بازسازی کدامنیتی</a>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">ثبت نام در سایت </button>
</div>
</div>
</form>
</div>
</div>
<script type="text/javascript">
function refresh_capt()
{
$.get("<?php echo site_url('captch/create'); ?>",'',function(data){
$('#capt_image').html(data);
});
}
$(document).ready(function(){
refresh_capt();
});
</script>
من یه فرم دارم با سه تا تکس باکس کد ملی و رمز عبور(دوبار) و کپچال
موقعی که می خوام فرم را بوسیله فرم ولیدیشن بررسی کنم تکس باکس کد ملی رو با یک callback_ فانشن برسی می کنم که کمتر یابیشتر از 10 رقم نباشه
اما تو دستور if وقتی پارامتر ورودی تابع کال بک رو برسی میکنم اول خالیه ! دوما وقتی میگم اگر طول پارامتر با تابع strlen برابر با 10 نبود تابع در هر صورتی یعنی اگر 9 زقم بود یا 12 رقم بود یا هرچی بود یا خود 10 رقم بود تابع false بر میگردونه و شرط برقرار نمی شه
جالبیش اینجاست کپچال کار می ده
ورژن کدایگنایتر: 3
کنترلر
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Reg extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('reg_model');
}
public function index()
{
$this->load->view('header');
$this->load->view('register/reg.php');
$this->load->view('footer');
}
public function aut()
{
$ruls=array(
array(
'field' => 'meli_code',
'label' => 'کد ملی احتیاج است ',
'rules' => 'required|callback_code_meli_check|callback_number iccheck'
),
array(
'field' => 'password',
'label' => 'فیلد پسورد مورد نیاز است ',
'rules' => 'required|matches[re_password]|max_length[10]|callback_passlengh_check'
),
array(
'field' => 're_password',
'label' => 'تکرار کلمه عبور نیاز است ',
'rules' => 'required'
),
array(
'field' => 'capt',
'label' => 'کد امنیتی نیاز است ',
'rules' => 'callback_capt_check|required'
)
);
// $this->form_validation->set_rules("password","مانند هم نیستند",'required|matches_array[input---conf_password]');
$this->form_validation->set_message('required','%s');
$this->form_validation->set_message('matches','پسوردها مانند هم نیستند');
$this->form_validation->set_rules($ruls);
$meli_code=intval($this->input->post('meli_code'));
$password=$this->input->post('password');
$re_password=$this->input->post('re_password');
$capt=$this->input->post('capt');
if ($this->form_validation->run() == false)
{
//var_dump($this->input->post());
$n=strlen($meli_code);
var_dump($meli_code);
$this->load->view('header');
$this->load->view('register/reg.php');
$this->load->view('footer');
}
else
{
$this->reg_model->insert_first_info($meli_code,$password);
$this->session->set_userdata(array('activepanel'=>1));
redirect(site_url('userpanel'), 'refresh');
}
}
function capt_check($str)
{
if ($str != $this->session->userdata('capt'))
{
$this->form_validation->set_message('capt_check', 'کلمه امنیتی اشتباه است');
return FALSE;
}
else
{
return TRUE;
}
}
public function code_meli_check($str='')
{
$str=intval($str);
if(isset($str))
{
$codemeli=$this->reg_model->user_codemeli($str);
if (isset($codemeli)&& $str==$codemeli)
{
$this->form_validation->set_message('code_meli_check', 'کد ملی شما تکراری است ');
return FALSE;
}
}
else
{
return TRUE;
}
}
public function passlengh_check($str='')
{
if (strlen($str)>10 && strlen($str)<4)
{
$this->form_validation->set_message('passlengh_check', 'کلمه عبور نباید کمتر از 4 کاراکتر و بزرکتر از 10 کاراکتر باشد"');
return FALSE;
}
else
{
return TRUE;
}
}
public function numbericcheck($str)
{
$n1=strlen($str);
//$n=var_dump($n);
if ($n1!=10)
{
$this->form_validation->set_message('numbericcheck', 'مقدار شماره ملی حتما باید عددی و حتما باید 10 رقم باشد'."$str");
return FALSE;
}
else
{
return TRUE;
}
}
ویو
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 " id="alert" style="margin-top: 5px;">
<?php echo validation_errors('<p class="alert-danger">','</p>'); ?>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" style="margin-top: 30px;">
<h1 id="reg_title">ثبت نام در سایت</h1>
</div>
<form class="form-horizontal form_register" action="<?php echo site_url('reg/aut'); ?>" method="post">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">شماره ملی </label>
<div class="col-sm-5">
<input type="text" name="meli_code" class="form-control" id="inputEmail3" placeholder="کد ملی خود را اینجا وارد کنید">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">رمزعبور</label>
<div class="col-sm-5">
<input type="password" name="password" class="form-control" id="inputPassword3" placeholder="رمزعبور">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">تکرار رمز عبور</label>
<div class="col-sm-5">
<input type="password" name="re_password" class="form-control" id="inputPassword3" placeholder="تکرار رمز عبور">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">کلمه امنیتی</label>
<div class="col-sm-5">
<input type="text" class="form-control" name="capt" id="capt" placeholder="کلمه امنیتی را اینجا وارد نمایید " name="capt"/>
<div id="capt_image"></div>
<a class="captch" onclick="return refresh_capt()" href="#">بازسازی کدامنیتی</a>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">ثبت نام در سایت </button>
</div>
</div>
</form>
</div>
</div>
<script type="text/javascript">
function refresh_capt()
{
$.get("<?php echo site_url('captch/create'); ?>",'',function(data){
$('#capt_image').html(data);
});
}
$(document).ready(function(){
refresh_capt();
});
</script>