2016-03-02 150 views
1

我想弄清楚我的簡單登錄本地主機程序中導致錯誤的原因。403禁止您無權訪問此服務器上的/ mytesting/<。錯誤

我BASE_URL = http://localhost/MYTESTING

我有這個我loginpage.php控制器

public function login(){ 

    $data['title'] = "TEST LOGIN"; 

    $username = $this->input->post('username'); 
    $password = $this->input->post('password'); 


    $this->load->view("loginheaderTest.php",$data); 
    $this->load->view("loginpage.php",$data); 
    $this->load->view("footerTest.php",$data); 


    if(isset($_POST['login'])) 
    { 
     $data['authenticate'] = $this->AuthenticationTest->authenticate_acount($username,$password); 

      if(!empty($data['authenticate'])) 
      { 
       echo"<script> 
       alert('Success'); 
       </script> 
       "; 
      } 
      else 
      { 
       echo"<script> 
       alert('Invalid Username or Password'); 
       </script> 
       "; 
      } 
    } 

} 

上,我有這個在我的模型

public function authenticate_account($username,$password){ 

    $this->db->select("username"); 
    $this->db->from("accounts"); 
    $this->db->where("username",$username); 
    $this->db->where("password",$password); 

    $query = $this->db->get(); 
    return $query->row_array(); 

,這對我的看法:

<div class="panel-body"> 
      <form action = "<?base_url();?>" method = "POST"> 
       <fieldset> 
        <div class="form-group"> 
           <input class="form-control" placeholder="Username" name="username"> 
          </div> 
        <div class="form-group"> 
           <input class="form-control" placeholder="Password" name="password" type="password" value=""> 
          </div> 

         <input type = "submit" class="btn btn-lg btn-success btn-block" value = "Login" name = "login">      
       </fieldset> 
      </form>    
     </div> 

當我訪問localhost/mytesting並單擊登錄時,我很確定我的數據庫配置中的配置正確。

+0

403是Apache錯誤。您的PHP代碼無關緊要,您永遠無法運行代碼。 – RiggsFolly

+0

您似乎正在使用用戶在where子句中輸入的密碼。你是不是應該加密/散列密碼來匹配存儲在數據庫中的密碼?我不是代碼點火器用戶,但我不確定認證用戶的最佳方式是在數據庫中搜索匹配的密碼。 – Gavin

+0

這是一個新的服務器設置? – Gavin

回答

2

請問您的服務器配置允許使用PHP短標記的?

You don't have permission to access /mytesting/< on this server. 

看起來好像表單動作指向「/ mytesting/<」和下面的「?」正在從錯誤消息中刪除,因爲它被解釋爲查詢字符串。

更改此:

<form action = "<?base_url();?>" method = "POST"> 

要這樣:

<form action="<?php echo base_url(); ?>" method="POST"> 

或啓用PHP在php.ini或短的.htaccess標籤。

+0

根據我的評論,它看起來像base_url()只返回並不回顯。因此,正確的短標籤是<?= BASE_URL()?> – Gavin

+0

無論您的評論,和現有的代碼將工作,如果啓用了短標籤。一個空的表單動作會導致表單被提交回它提交的完全相同的url,所以在這種情況下,一個空白的動作不會導致這個錯誤。問題是這裏的表單動作是文本字符串「<?base_url();?>」,而不是包含基本url的解釋PHP輸出字符串。即使是空白或缺失的動作屬性也能解決這個問題。 – CoderCreative

+0

假設登錄代碼在同一個控制器中。 – Gavin

相關問題