2015-09-14 2 views
3

У меня есть простой знак вверх/Войти регистрация проекта в PHP/CodeIgniterНевозможно загрузить форму в CodeIgniter от контроллера

и я всегда получаю эту конкретную ошибку при нажатии на логин или кнопку Регистрация

Ошибка: «Запрошенный URL/CI/пользователь/логин не найден на этом сервере».

Вот файл контроллера user.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

    class User extends CI_Controller{ 
    public function __construct() 
    { 

     parent::__construct(); 
     $this->load->model('user_model'); 

    } 

    public function index() 

    { 
     if(($this->session->userdata('user_name')!="")) 
     { 
     $this->welcome(); 
     } 

     else{ 
     $data['title']= 'Home'; 
     $this->load->view('header_view',$data); 
     $this->load->view("registration_view.php", $data); 
     $this->load->view('footer_view',$data); 
     }} 

    public function welcome() 
    { 
     $data['title']= 'Welcome'; 
     $this->load->view('header_view',$data); 
     $this->load->view('welcome_view.php', $data); 
     $this->load->view('footer_view',$data); 
    } 

    public function login() 
    { 
     $email=$this->input->post('email'); 
     $password=md5($this->input->post('pass')); 

     $result=$this->user_model->login($email,$password); 
     if($result) $this->welcome(); 
     else  $this->index(); 
    } 

    public function thank() 
    { 
     $data['title']= 'Thank'; 
     $this->load->view('header_view',$data); 
     $this->load->view('thank_view.php', $data); 
     $this->load->view('footer_view',$data); 
    } 

    public function registration() 
    { 
     $this->load->library('form_validation'); 
     // field name, error message, validation rules 
     $this->form_validation->set_rules('user_name', 'User Name', 'trim|required|min_length[4]|xss_clean'); 
     $this->form_validation->set_rules('email_address', 'Your Email', 'trim|required|valid_email'); 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]'); 
     $this->form_validation->set_rules('con_password', 'Password Confirmation', 'trim|required|matches[password]'); 

     if($this->form_validation->run() == FALSE) 
     { 
     $this->index(); 
     } 
     else 
     { 
     $this->user_model->add_user(); 
     $this->thank(); 
     } 
    } 

    public function logout() 
    { 
     $newdata = array(
     'user_id' =>'', 
     'user_name' =>'', 
     'user_email'  => '', 
     'logged_in' => FALSE, 
    ); 

     $this->session->unset_userdata($newdata); 
     $this->session->sess_destroy(); 
     $this->index(); 
    } 
    } 
    ?> 

Вот вид файла registration_view.php

<html> 
<div id="content"> 
<div class="signup_wrap"> 
<div class="signin_form"> 


<?php echo form_open("user/login"); ?> 

    <label for="email">Email:</label> 
    <input type="text" id="email" name="email" value=""/> 

    <label for="password">Password:</label> 
    <input type="password" id="pass" name="pass" value=""/> 

    <input type="submit" class="" value="Sign in"/> 

<?php echo form_close(); ?> 




</div><!--<div class="signin_form">--> 
</div><!--<div class="signup_wrap">--> 





<div class="reg_form"> 
<div class="form_title">Sign Up</div> 
<div class="form_sub_title">It's free and anyone can join</div> 



<?php echo validation_errors('<p class="error">'); ?> 
<?php echo form_open("user/registration");?> 

    <p> 
    <label for="user_name">User Name:</label> 
    <input type="text" id="user_name" name="user_name" value="<?php echo set_value('user_name'); ?>" /> 
    </p> 

    <p> 
    <label for="email_address">Your Email:</label> 
    <input type="text" id="email_address" name="email_address" value="<?php echo set_value('email_address'); ?>" /> 
    </p> 

    <p> 
    <label for="password">Password:</label> 
    <input type="password" id="password" name="password" value="<?php echo set_value('password'); ?>" /> 
    </p> 

    <p> 
    <label for="con_password">Confirm Password:</label> 
    <input type="password" id="con_password" name="con_password" value="<?php echo set_value('con_password'); ?>" /> 
    </p> 

    <p> 
    <input type="submit" class="greenButton" value="Submit" /> 
    </p> 

<?php echo form_close(); ?> 

</div><!--<div class="reg_form">--> 
</div><!--<div id="content">--> 

</html> 

Я думаю, что главная проблема с Form_Open ('формы');

Вот файл htacess

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

+0

Вы разместили файл '.htaccess'? или попробуйте ' ' –

+0

@Abdulla только что добавил –

+0

запишите свой контроллер' form_open («Пользователь/логин») ' –

ответ

0

Вам нужно будет пройти полный URL к Form_Open функции как этот

echo form_open(base_url()."/user/login"); 
+0

Пробовал, все еще бесполезно :( –

0

изменения этого: <?php echo form_open("user/login"); ?>
к этому : <?php echo form_open(base_url()."User/login"); ?>
в конфигурации:

$config['base_url'] = 'http://localhost/projectname/'; 
$config['index_page'] = ''; 

после этого, если не работает вызове метода из URL Если работа правильно разместить данные на ваш метод !!!

0

EDIT: в вашем файле htaccess, перейдите на. (Еще одно предложение, нет никакой гарантии)

RewriteBase /project 
RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

сделал это, бесполезно. –

+0

хорошо, могу точно сказать, что ваша проблема заключается в том, что вы пытаетесь запустить codeigniter во вложенной папке вашего домена. Это можно сделать, но есть несколько настроек сервера, которые нужно изменить (я не знаю, как их создавать). Было бы проще для изменения вашего httpd.conf в apache и создания вашего Cir-файла (или проекта), вашего корневого каталога для сервера, но это сделает невозможным доступ к другим проектам, которые вы можете иметь на том же уровне, что и вы. это «установка CodeIgniter в подпапку» .Если вы Google, что вы можете найти некоторые решения, то –

+0

Так что, по-вашему, я должен делать? Я имею в виду, должен ли я просто вынуть из папки папку codeigniter и ma ke это главная папка? –

0

Проверьте ваш /etc/apache2/apache2.conf или /etc/apache2/httpd.conf в зависимости от того, существует. В принципе, apache не подтверждает файл .htaccess, если вы не объявите директиву AllowOverride.

Таким образом, вы должны открыть указанный файл конфигурации, и добавить к нижней, если ваш полный путь к поддиректории является /var/www/html/subdirectory/

<Directory /var/www/html/subdirectory/> 
    AllowOverride all 
</Directory> 

И не забудьте перезапустить Apache!

Смежные вопросы