用户登录时不显示表单,但用户注销时显示

问题描述 投票:1回答:2

我正在开发一个小项目,用户在其中创建帐户,然后他们可以添加项目,编辑项目,查看项目。当用户添加项目时,他/她的id(在会话中可用)也会添加到项目表中。我想使用动态codeigniter表单添加项目。当加载create_project_view并且用户登录时,页面上会显示表单,但是当我在源代码上单击其源代码时,表单不可见,但是如果用户注销,表单也会在屏幕上显示就像源代码一样。我不知道为什么表单在源代码中不可见。这可能是我无法添加数据的可能原因,因为页面上没有显示任何形式。这也可能是因为当我点击提交按钮并且我已登录时,它会将我退出。

我使用的是PHP版本:7.2.1,但随后降级为PHP版本:5.6.3仍然存在这些问题。在这个问题上你能帮我吗?

下面我在用户登录和注销时共享我的代码和屏幕截图 screenshot when user is logged in

Screenshot when user is not logged in 1-(查看)Index.php

这是一个按钮代码,它将我带到(创建)控制器

<h1>Projects</h1>


<table class="table table-hover">
	<thead class="bg-warning">
		   <a class="btn btn-primary pull-right" href="<?php echo base_url();?>projects/create">Create Project</a><br>

		<tr>
			<th>Project Name</th>
			<th>Project Created</th>
		</tr>
	</thead>
	<tbody>
		<?php foreach($projects as $project): ?>
			<tr>
				<?php echo"<td><a href='".base_url()."projects/display/".$project->id."'>".$project->project_name."</a></td>" ?>
				<?php echo"<td>".$project->created_date."</td>" ?>
			</tr>
		<?php endforeach; ?>
	</tbody>
</table>

2-(Controller)projects.php:包含'create'项目函数

 class Projects extends CI_Controller
  {

   public function create()
    {

     $this->form_validation->set_rules('project_name','Project 
     Name','trim|required');
     $this->form_validation->set_rules('project_body','Project 
     Body','trim|required');

        if($this->form_validation->run()==false)
         {                
          $data['main_view']="projects/create_project_view";
          $this->load->view('Layouts/main',$data);
         }

       else
        {   
         $user_data= array(
         'user_project_id'   =>$this->session->userdata('user_id'),
         'project_name'               =>$this->input->post('project_name'),
         'project_body'               =>$this->input->post('project_body'));

            if($this->project_model->create_project($user_data))
            {redirect("projects/index");}    

        }
     }
  }


 ?>

3-(Capital)porject_model.php

<?php 
   class project_model extends CI_Model
    {
      public function create_project($data)
       {
         $insert_query=$this->db->insert('projects', $data);
         return $insert_query;
       }
    }
?>

4.(查看):Create_project_view.php:通过这个表单,我将数据发送到“项目”控制器

<h1>Registration Form</h1>

<?php $attributes=array('Id'=>'reg_form','class'=>'form-vertical');?>

<?php echo form_open('projects/create',$attributes);?>
<div class="form-group">
	<?php echo form_label('Project title:'); ?>
	<?php $data=array(
		'Name'=>'project_name',
		'class'=>'form-control',
		'placeholder'=>'Enter Your First Name:');?>
	<?php echo form_input($data); ?>	
</div>

<div class="form-group">
	<?php echo form_label('project body:'); ?>
	<?php $data=array(
		'Name'         =>'project_body',
		'class'        =>'form-control',
		'placeholder'  =>'Enter Your User Name:');?>
	<?php echo form_textarea($data); ?>
</div>



<div class="form-group">
	<?php $data=array(
		'Name'=>'reg_button',
		'class'=>'btn btn-primary',
		'value'=>'Register');?>
	<?php echo form_submit($data); ?>	
</div>
<?php echo form_close(); ?>
php codeigniter xampp
2个回答
1
投票

您可能在同一页面中有两个相互冲突的表单。如果您在表单中有注销功能(这不是必需的,您可以通过向按钮提供onClick事件使其成为直接链接),创建项目的“提交”操作可能会触发该操作,而不是自己的操作。看起来这就是你要退出的原因。

否则,我在表单中看不到其他问题。随着您开发更多应用程序,您将采用更好的结构,这样,您就不会陷入这样的陷阱。


0
投票

Jamshid Hashimi的回答是正确的。我只是在这里分享代码,所以其他人也可能受益,并且不会陷入类似陷阱。实际上问题是在其他视图中称为(login_view)我没有发布它。我在一个页面中有两个表单。我打开了第一页,然后没有关闭第一个表单,我打开了第二个表单。在10号线,我评论了我忘了的那条线。

<!--When user is  logged in -->

 <?php if($this->session->userdata('loged_in')): ?>

 <h2>Logout</h2>

<?php echo"You are loged in as " . $this->session->userdata('user_name');?>

<?php echo form_open('users/logout');?>
<?php  $data=array(
 'name'=>'lgout',
 'class'=>'btn btn-primary',
 'value'=>'Log out');?>
 <?php echo form_submit($data); ?>

 <?php echo form_close(); ?>    **<!--I forgot this line -->**

<?php else:  ?>


 <!--When user is not logged in -->
 <h2>login</h2>
 <?php $attributes=array('id'=>'regform','class'=>'form-horizontal'); ?>

 <?php if($this->session->flashdata('errors')): ?>
 <?php echo $this->session->flashdata('errors'); ?>
 <?php endif; ?>
<!--form starts here-->
 <?php echo form_open('users/login',$attributes); ?>

  <div class="form-group">
    <?php echo form_label('User Name:');?>
      <?php $data=array(
       'name'=>'username',
        'class'=>'form-control',
        'placeholder'=>'Enter Your Name'); ?>
    <?php echo form_input($data); ?>    
 </div>

 <div class="form-group">
  <?php echo form_label('User Password:');?>
  <?php $data=array(
    'name'=>'userpass',
    'class'=>'form-control',
    'placeholder'=>'Enter Your Name'); ?>
  <?php echo form_password($data); ?>   
 </div>
<div class="form-group">
<?php $data=array(
    'name'=>'sbmt',
    'class'=>'btn btn-primary',
    'value'=>'Login'); ?>
  <?php echo form_submit($data); ?> 
</div>

<?php echo form_close(); ?> <!--form ends here-->
© www.soinside.com 2019 - 2024. All rights reserved.