Php CodeIgniter-验证提交表单之外的数据?
如何验证表单中未获得的内容。我想验证我的变量,并希望此规则为is_uniqe(),以检查重复项 我尝试将$rules数组中的规则设置为数组('field'=>$this->characterNAME,'rules'=>'is_unique[members.char\u name]),但没有效果我尝试单独调用is_unique(),但没有效果,我尝试将变量分配到$\u POST['charNAME']=$this->characterNAME;然后将其传递给set_rules(),但不起作用 如何验证我的变量 我的代码:Php CodeIgniter-验证提交表单之外的数据?,php,forms,codeigniter,validation,Php,Forms,Codeigniter,Validation,如何验证表单中未获得的内容。我想验证我的变量,并希望此规则为is_uniqe(),以检查重复项 我尝试将$rules数组中的规则设置为数组('field'=>$this->characterNAME,'rules'=>'is_unique[members.char\u name]),但没有效果我尝试单独调用is_unique(),但没有效果,我尝试将变量分配到$\u POST['charNAME']=$this->characterNAME;然后将其传递给set_rules(),但不起作用 如何
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Registration extends CI_Controller {
var $characterNAME = "";
var $characterCORP = "";
var $characterALLY = "";
var $characterJDAT = "";
function __construct() {
parent::__construct();
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->model('Registration_model', 'reg');
}
public function index()
{
$this->load->view('registration_view');
}
function insert()
{
$rules = array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'required|min_length[6]|max_length[250]|is_unique[members.username]'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'required|min_length[6]|max_length[250]|md5'
),
array(
'field' => 'apiid',
'label' => 'apiid',
'rules' => 'required|integer|min_length[6]|max_length[250]|callback_api_check[' . $this->input->post('apikey') . ']'
),
array(
'field' => 'apikey',
'label' => 'apikey',
'rules' => 'required|min_length[6]|max_length[255]'
),
);
$_POST['charNAME'] = $this->characterNAME;
$this->form_validation->set_rules('charNAME', 'CharacterName', 'is_unique[members.char_name]');
$this->form_validation->set_rules($rules);
if($this->form_validation->run() == FALSE)
{
$this->load->view('registration_view');
} else {
// PROCESS REGISTRATION
$this->reg->add_user($_POST['username'], $_POST['password'], $_POST['apiid'], $_POST['apikey'], $this->characterNAME, $this->characterCORP, $this->characterALLY, $this->characterJDAT);
// REDIRECT
$this->load->view('registration_done');
}
}
function api_check($apiid, $apikey)
{
$url = 'http://api.eveonline.com/account/Characters.xml.aspx?keyID='.$apiid.'&vCode='.$apikey;
$xml = new DOMDocument();
$xml->load($url);
$chars = $xml->getElementsByTagName('row');
foreach ($chars as $character)
{
$charid = $character->attributes;
$curl = 'http://api.eveonline.com/eve/CharacterInfo.xml.aspx?keyID='. $apiid . '&vCode='.$apikey . '&characterID=' . $charid->item(1)->nodeValue;
$cxml = new DOMDocument();
$cxml->load($curl);
$corp = $cxml->getElementsByTagName("corporation");
$ally = $cxml->getElementsByTagName("alliance");
$char = $cxml->getElementsByTagName("characterName");
$jdat = $cxml->getElementsByTagName("corporationDate");
// Check database instead
if($this->reg->validate_entity($corp->item(0)->nodeValue) || $this->reg->validate_entity($ally->item(0)->nodeValue))
{
$this->characterNAME = $char->item(0)->nodeValue;
$this->characterCORP = $corp->item(0)->nodeValue;
$this->characterALLY = $ally->item(0)->nodeValue;
$this->characterJDAT = $jdat->item(0)->nodeValue;
return true;
}
}
$this->form_validation->set_message('api_check','None of the characters on this account are allowed to join.');
return false;
}
}
load($url);
$chars=$xml->getElementsByTagName('row');
foreach($chars作为$character)
{
$charid=$character->attributes;
$curl=http://api.eveonline.com/eve/CharacterInfo.xml.aspx?keyID=“.$APID.&vCode=”.$APICEY.&characterID=”.$charid->item(1)->nodeValue;
$cxml=新的DOMDocument();
$cxml->load($curl);
$corp=$cxml->getElementsByTagName(“公司”);
$ally=$cxml->getElementsByTagName(“联盟”);
$char=$cxml->getElementsByTagName(“characterName”);
$jdat=$cxml->getElementsByTagName(“corporationDate”);
//改为检查数据库
如果($this->reg->validate_entity($corp->item(0)->nodeValue)| |$this->reg->validate_entity($ally->item(0)->nodeValue))
{
$this->characterNAME=$char->item(0)->nodeValue;
$this->characterCORP=$corp->item(0)->nodeValue;
$this->characterALLY=$ally->item(0)->nodeValue;
$this->characterJDAT=$jdat->item(0)->nodeValue;
返回true;
}
}
$this->form_validation->set_message('api_check','此帐户上的任何字符都不允许加入');
返回false;
}
}
您可以通过(示例)直接调用is_unique函数来验证表单输入是否重复:
$this->form_validation->is_unique($email,'users.email')
这将返回布尔值true/false。True=是唯一的——在本例中
因此,您可以将其放入if()中,并以这种方式进行检查
希望这有助于而不是获取表单验证错误,因为其他所有内容都会导致数据库重复条目错误。