使用类和方法的表单操作会添加到现有URL

时间:2016-04-14 12:14:49

标签: php codeigniter

我有登录表单,其中包含网址 - " http://localhost/ci/signin"。点击提交后,会转到 - " http://localhost/ci/login/userLogin",这会影响超链接打开问题,因为它会在' login'中搜索该页面,实际上是&# 34; http://localhost/ci/home&#34 ;.

如何解决这个问题?

我的登录表单页码是:

 <?php echo form_open('login/userLogin'); ?
        <div class="top-margin">
        <label>Email <span class="text-danger">*</span></label>
         <?= form_input(['name'=>'email','class'=>'form-control']); ?>
            </div>
            <div class="top-margin">
        <label>Password <span class="text-danger">*</span></label>
         <?= form_password(['name'=>'password','class'=>'form-control']); ?>    
        </div>
       <hr>

        <div class="row">
        <div class="col-lg-8">
        <b><a href="">Forgot password?</a></b>
            </div>
            <div class="col-lg-4 text-right">
            <?= form_submit(['name'=>'submit','value'=>'Sign in','class'=>'btn btn-action']); ?>
        </div>
        </div>
        </form>

我的&#34;登录&#34;控制器代码是:            

    class Login extends MY_Controller
    {
    public function userLogin()
    {
     $this->load->library('form_validation');
     $this->form_validation->set_rules('email','Email','trim|required|valid_email');
     $this->form_validation->set_rules('password','Password','required');
     $this->form_validation->set_error_delimiters("<p class='text-danger'>","</p>");
     if($this->form_validation->run() == FALSE)
     {
        $data['title'] = ucfirst('signin'); // Capitalize the first letter
        $this->load->view('user/header', $data);
        $this->load->view('user/nav', $data);
        $this->load->view('user/signin', $data);
        $this->load->view('user/footer', $data);
     }
     else
     {
        echo "Success";
     }
 }
 }
  ?>

路线:

 $route['(:any)'] = 'user/view/$1';
 $route['default_controller'] = 'user/view';
 $route['404_override'] = '';
 $route['translate_uri_dashes'] = FALSE;

3 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题和您的代码(从未使用过codeigniter),您可以从登录目录中加载表单。

<?php echo form_open('login/userLogin'); ?

尝试时会发生什么:

<?php echo form_open('home/userLogin'); ?

希望这有帮助! :)

答案 1 :(得分:0)

我自己并没有使用CodeIgnite,但它可能有正确输出URL的辅助函数。

在Laravel中它是:

url('this/url/is/not/added/to/the/current/url');

即使您在本地主机:8000 /某页&#39;这个输出:

"localhost:8000/this/url/is/not/added/to/the/current/url"

它是一个PHP(帮助器)函数,因此用PHP输出。

答案 2 :(得分:-1)

是。我找到了解决问题的方法。实际上这是我的错。 Hyperlinks无效,因为我没有为full address撰写hyperlinks。 以前,我的超链接是 -

<a href="home">Home</a>

现在,我把它改为......

<a href="<?= base_url();?>home">Home</a>

现在,它有效。享受。