Php 控制器/窗体在实现内容时执行奇怪的操作
我有下面的控制器,我希望它执行以下操作:Php 控制器/窗体在实现内容时执行奇怪的操作,php,codeigniter,validation,Php,Codeigniter,Validation,我有下面的控制器,我希望它执行以下操作: 如果用户名为->当前仅作为提交,则显示错误 即使特定用户在数据库中也正常 如果出现错误,则使用数据填充->当前使用数据填充 导入的数据是否正确 保持选定下拉菜单项的活动状态 查看: <h1><?php echo $companyName; echo nbs(1);?> - <?php echo $pageTitle; ?></h1> <?php if($success == TRUE) {
- 如果用户名为->当前仅作为提交,则显示错误 即使特定用户在数据库中也正常
- 如果出现错误,则使用数据填充->当前使用数据填充 导入的数据是否正确
- 保持选定下拉菜单项的活动状态
<h1><?php echo $companyName; echo nbs(1);?> - <?php echo $pageTitle; ?></h1>
<?php
if($success == TRUE) {
echo '<section id = "validation">Page Updated</section>';
}
?>
<p>Error: <?php echo validation_errors();?></p>
<div class="formContent">
<form action="createUser" method="post">
<fieldset class="control-group">
<label for="userName">User Name:</label><input type="text" id="userName" name="userName" value="<?php echo set_value('userName'); ?>" placeholder="User Name">
<label for="userPassword">User Password:</label><input type="password" id="userPassword" name="userPassword" value="<?php echo set_value('userPassword'); ?>" placeholder="User Password">
<label for="userFirstName">First Name:</label><input type="text" id="userFirstName" name="userFirstName" value="<?php echo set_value('userFirstName'); ?>" placeholder="First Name">
<label for="userLastName">Last Name:</label><input type="text" id="userLastName" name="userLastName" placeholder="Last Name">
<label for="userEmail">E-Mail:</label> <input type="text" id="userEmail" name="userEmail" placeholder="Admin E-mail">
<label for="userGroup"> User Group:</label>
<select name="userGroup" id="userGroup">
<option value="select">Please Select</option>
<option value="admin">Admin</option>
<option value="user">User</option>
</select>
<label for="userActive"> User Active:</label>
<select name="userActive" id="userActive">
<option value="select">Please Select</option>
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
<div>
<button type="submit" class="btn-primary">Create</button>
</div>
</fieldset>
</form>
</div>
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class createUser extends CI_Controller {
public function index()
{
//Form Validation prep making sure its all clean
$this->form_validation->set_rules('userName', 'User Name', 'trim|required|is_unique[users.userName]|xss_clean');
$this->form_validation->set_rules('userPassword', 'User Password', 'trim|required|xss_clean|sha1');
$this->form_validation->set_rules('userFirstName', 'First Name', 'trim|required|xss_clean');
$this->form_validation->set_rules('userLastName', 'Last Name', 'trim|required|xss_clean');
$this->form_validation->set_rules('userEmail', 'E-Mail', 'trim|required|xss_clean');
$this->form_validation->set_rules('userGroup', 'User Group', 'trim|required|xss_clean');
$this->form_validation->set_rules('userActive', 'User Active', 'trim|required|xss_clean');
//If form validation fails load previous page with errors else do the job and insert data into db
if($this->form_validation->run() == FALSE)
{
$data['success'] = "";
}else{
$username = $this->input->post('userName');
$password = $this->input->post('userPassword');
$firstname = $this->input->post('userFirstName');
$lastname = $this->input->post('userLastName');
$email = $this->input->post('userEmail');
$group = $this->input->post('userGroup');
$active = $this->input->post('userActive');
$passwordHash = $this->encrypt->sha1($password); // Lets encrypt the password why sha1? MD5 is for tossers
// If the data is correct follow through with db insert
if($this->users_model->createUser($username,$passwordHash,$firstname,$lastname,$email,$group,$active))
{
$data['success'] = TRUE;
}
}
$data['companyName'] = $this->core_model->companyName();
$data['pageTitle'] = "Create User";
$this->load->view('admin/assets/header', $data);
$this->load->view('admin/createUser', $data);
$this->load->view('admin/assets/footer');
}
}
/* End of file login.php */
/* Location: ./application/controllers/admin/createUser.php */
-
错误:
用户名:我纯粹是从逻辑php的角度来讨论这个问题,因为我对codeigniter一无所知
关于检查用户名是否已经被使用,我会在“users”表中的username字段上执行一个db查询,看看这个名称是否存在
我看到你这样做了:
$this->form_validation->set_rules('userName', 'User Name', 'trim|required|is_unique[users.userName]|xss_clean');
我不知道在igniter中引用db表的标准,但可能您引用的字段不正确。此外,我会改变每一个小写,而检查,以确保您的检查是不区分大小写。。。除非你想要区分大小写的用户名。如果我是你,我会使用回调()
对于select下拉列表,请使用set_value()函数
>管理员
我有点困惑,在独特和回电之间什么是最好的
$this->form_validation->set_rules('userName', 'User Name', 'trim|required|xss_clean|callback__checkUsername');
<select name="userGroup" id="userGroup">
<option value="select"<?=(set_value('userGroup')=='select')?' selected="selected"':''?>>Please Select</option>
<option value="admin"<?=(set_value('userGroup')=='admin')?' selected="selected"':''?>>Admin</option>
<option value="user"<?=(set_value('userGroup')=='user')?' selected="selected"':''?>>User</option>
</select>