Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter-会话登录错误_Php_Mysql_Sql_Codeigniter_Xampp - Fatal编程技术网

Php Codeigniter-会话登录错误

Php Codeigniter-会话登录错误,php,mysql,sql,codeigniter,xampp,Php,Mysql,Sql,Codeigniter,Xampp,嗨,我正在为登录和注册模块编码 我发现了类似这样的错误。 首先我登录,然后我关闭页面。之后,我重新打开页面并放置路径url,这将发生 如果我将路径url设置为“localhost/codeigniter/index.php/some controller”,它将以预登录状态显示viewpage 但如果我单击某个要更改的页面,它将在登录状态和路径url从“localhost/codeignite/index.php/some controller”更改为“[::1]/codeigniter/in

嗨,我正在为登录和注册模块编码 我发现了类似这样的错误。 首先我登录,然后我关闭页面。之后,我重新打开页面并放置路径url,这将发生

  • 如果我将路径url设置为“localhost/codeigniter/index.php/some controller”,它将以预登录状态显示viewpage
  • 但如果我单击某个要更改的页面,它将在登录状态和路径url从“localhost/codeignite/index.php/some controller”更改为“[::1]/codeigniter/index.php/some controller”后显示
    • 因此,如果我首先尝试将[::1]而不是localhost放在路径url中,它也会显示登录后的状态。发生了什么事?为什么我不能使用localhost?如果我使用localhost,它似乎没有会话。或者这是xampp mysql上的一个bug

在config/autoload.php中

   public function userPage() 
    {
        if($this->session->userdata('is_logged_in')) //if==true
        {
            $this->load->view('header');
            $this->load->view('regislogin/success');

        }
        else
        {
            redirect('login');
        }           
    }

请检查您的会话是否正常工作, 您还在控制器和注销上添加适当的条件。 最好在hooks中添加一个条件,这样就不必在每个控制器中都编写它。
您还可以提供一些代码片段以查看更多信息。

请检查您的会话是否正常工作, 您还在控制器和注销上添加适当的条件。 最好在hooks中添加一个条件,这样就不必在每个控制器中都编写它。
您还可以提供一些代码片段以查看更多信息。

我导入了您的代码,并且它正在正常工作。 请做下面的事情 1.添加一个空白数组$data=array();索引函数中的Register.php(controller)内部。 2.在函数userPage内的登录控制器中,Else条件在登录页面上添加一行重定向它


如果您有任何问题,请在出现错误的地方共享您的页面名称。

我导入了您的代码,它正在正常工作。 请做下面的事情 1.添加一个空白数组$data=array();索引函数中的Register.php(controller)内部。 2.在函数userPage内的登录控制器中,Else条件在登录页面上添加一行重定向它

如果您有任何问题,请在出现错误的地方分享您的页面名称。

好的,我解决它。 在文件夹路径config/config.php中 设定这个 $config['base\u url']='http://'。$\u SERVER['http\u HOST']./foldername'

好的,我来解决它。 在文件夹路径config/config.php中 设定这个
$config['base\u url']='http://'。$\u SERVER['http\u HOST']./foldername'

未在代码中看到错误。这可能是由于sessiondid的名称冲突导致的,代码中未出现错误。这可能是由于会话名称冲突造成的。请给我一个流程,比如你要进入index.php/login,然后进入index.php/userPage等,这样我才能理解整个场景1。我已经创建了home.php,但是没有得到哪个流给了你错误。只想知道你在做什么流7。如果把url像这样放置“[::1]/codeigniter/index.php/some_controller,比如home,register”,你会看到结果是show welcome!总之,如果我在路径url中使用“[::1]”而不是“localhost”,会话将正常工作。是的,如果我点击另一个页面,它会自动将localhost更改为[::1]并且工作正常。你能给我一个流程吗,比如你要去index.php/login,然后是index.php/userPage等等,这样我就能理解整个场景1。我已经创建了home.php,但是没有得到哪个流给了你错误。只想知道你在做什么流7。如果把url像这样放置“[::1]/codeigniter/index.php/some_controller,比如home,register”,你会看到结果是show welcome!总之,如果我在路径url中使用“[::1]”而不是“localhost”,会话将正常工作。是的,如果我点击另一个页面,它会自动将localhost更改为[::1],并且工作正常。
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
    class Login extends CI_Controller
    {
        public function __construct()
        {
            parent::__construct();
            $this->load->library(array('form_validation','session'));
        }
        public function index()
        {

            $this->load->view('header');

            $this->load->view('regislogin/loginform');

            $this->load->view('footer');
        }

        public function login_validation()
        {
            $this->load->view('header');

            $this->form_validation->set_rules('username','Username','required|trim|callback_validate_credentials');
            $this->form_validation->set_rules('password','Password','required|md5|trim');

            if($this->form_validation->run()) //==TRUE
            {
                $data = array(
                    'username' => $this->input->post('username'),
                    'is_logged_in' => true
                );
                $this->session->set_userdata($data);
                redirect('login/userPage');     
            }
            else
            {
                $this->load->view('regislogin/loginform');
            }


        }

        public function userPage() 
        {
            if($this->session->userdata('is_logged_in')) //if==true
            {
                $this->load->view('header');
                $this->load->view('regislogin/success');

            }
            else
            {

            }           
        }


        public function validate_credentials()
        {
            //$this->load->model('login_model');  //autoload already
            if($this->login_model->can_login()) //if can_login == true
            {
                return true;
            }
            else
            {
                $this->form_validation->set_message('validate_credentials','Username/Password Incorrect');
                return false;
            }
        }

        public function logout()
        {
            $this->session->sess_destroy();
            redirect('login');
        }
    }
<?php
class Login_model extends CI_Model
{
    public function can_login()
    {
        $this->db->where('username', $this->input->post('username'));
        $this->db->where('password', md5($this->input->post('password'))); 

        $query = $this->db->get('member');

        if($query->num_rows() == 1)  //if Found 1 match
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Register extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library(array('form_validation','session'));
    }
    public function index()
    {   
        $this->load->view('header');
    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[6]);


        if($this->form_validation->run() == FALSE)
        {
            $this->load->view('regislogin/register_view');
        }
        else
        {
            $key = md5(uniqid());
            $this->load->library('email', array('mailtype'=>'html'));//default mailtype is 'text'
            $this->email->from('supanat_thana@hotmail.com', "Webmaster");
            $this->email->to($this->input->post('email'));
            $this->email->subject("Confirm your account");
            $message = "<p>Thank you for register!</p>";
            $message .= "<p><a href='".base_url()."register/register_activate/$key'>Click Here</a> เพื่อยืนยันบัญ๙ีของคุณ </p>";
            $this->email->message($message);



            if($this->register_model->add_temp_user($key))
            {
                if($this->email->send())
                {
                    $data['emailstr'] = "Please activate your account by email";
                } 
                else
                {
                    $data['emailfail'] = "could not send the email.";
                }
            }
            else
            {
                echo "Problem: cannot insert to out database";
            }

            $this->load->view('regislogin/success', $data);
        }


    }

    public function register_activate($key)
    {
        if($this->register_model->is_key_valid($key))
        {
            if($newuser = $this->register_model->addMember($key))
            { 

                $data = array(
                    'username' => $newuser,
                    'is_logged_in' => true
                );
                $this->session->set_userdata($data);
                redirect('login/userPage');

                echo "successfully activate account <br/>";
                echo anchor('home', 'back to Home');
            } else echo "sorry cannot activate account";
        }
        else
        {
            echo "invalid key";
        }
    }


}
<?php
class Register_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
    }
    public function add_temp_user($key)
    {
        $data = array(
            'username' => $this->input->post('username'),
            'password' => md5($this->input->post('password')),
            'email' => $this->input->post('email'),
            'phone' => $this->input->post('phone'),
            'key' => $key
        );

        $query = $this->db->insert('temp_user', $data);
        if($query) {return true;}
        else {return false;}
    }

    public function is_key_valid($key)
    {
        $this->db->where('key', $key);
        $query = $this->db->get('temp_user');

        if($query->num_rows() == 1)
        {
            return true;
        }
        else{return false;}
    }

    public function addMember($key)
    {
        $this->db->where('key', $key);
        $temp_users = $this->db->get('temp_user');

        if($temp_users)
        {
            $row = $temp_users->row();

            $data = array(
                'username' => $row->username,
                'password' => $row->password,
                'email' => $row->email,
                'phone' => $row->phone
            );

            $did_adduser = $this->db->insert('member', $data);
        }
        if($did_adduser)
        {
            $this->db->where('key', $key);
            $this->db->delete('temp_user');
            return $data['username'];
        } else{return false;}
    }

    public function isUserExist()
    {
        $username = $this->input->post('username');
        $this->db->where('username',$username);
        $query = $this->db->get('member');
        if($query->num_rows() > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public function isEmailExist()
    {
        $email = $this->input->post('email');
        $this->db->where('email',$email);
        $query = $this->db->get('member','temp_user');
        if($query->num_rows() > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
<DOCTYPE! html>
<html>
<head>
    <title> Register </title>
    <meta charset="utf-8">
</head>
<body>
<?php
    if($this->input->post("btn"))
    {
        echo "<h3>Thank you for your registration</h3>";
        echo $emailstr."<br/><br/>";
        if(isset($emailfail)) {echo $emailfail."<br/><br/>";} else{}
        echo anchor('home', 'กลับสู่หน้าหลัก');

    }
    else
    {
        echo "<h3>Successful Login</h3>";
        echo "<pre>";
        echo "Welcome!, ". $this->session->userdata('username');
        echo "</pre>";

        echo anchor('login/logout', 'Logout')."<br/>"; 
        echo anchor('home', 'Back to Home');
    }
?>
</body>
</html>
<div class="loginbox">
    <?php echo form_open('login/login_validation');?>
        <h2> Login </h2>
        <ul id='login'>
            <li>
                Username: <br>
                <input type='text' name='username'>
            </li>
            <li>
                Password:<br>
                <input type='password' name='password'>
            </li>
            <br>
            <li>
                <input type='submit' name='btn2' value='Log in'>
            </li>
            <li>
                <br>
                <?php echo anchor("register/index","Register");?>
            </li>
        </ul>   
    <?php echo form_close();?>
</div>
<head>
    <meta charset="utf-8">
    <title>Register</title>
</head>

    <div id="wrapper_regis">
        <div id="header_regis">
        <h1>Register</h1>
        </div>

    <?php echo form_open('register');?>
        <table>
            <tr>
                <td>Username : </td>
                <td><input type="text" name="username"  value=""/></td>
            </tr> 
            <tr>
                <td>Password : </td>
                <td><input type="password" name="password" value=""/></td>

            </tr>
            <tr>
                <td>Confirmed Password : </td>
                <td><input type="password" name="pass_confirm" value=""/></td>
            </tr>
            <tr>
                <td>Email : </td>
                <td><input type="text" name="email" value=""/></td>
            </tr>

            <tr>
                <td>Phone : </td>
                <td><input type="text" name="phone"  value=""/></td>

            </tr>
        </table>
        <br/>
        <input class="btn" type="submit" name="btn" value="สมัครสมาชิก"/>

    <?php echo form_close();?>
    </div>
CREATE TABLE `temp_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(35) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(50) NOT NULL,
  `phone` varchar(15) NOT NULL,
  `key` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



CREATE TABLE `member` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(30) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(50) NOT NULL,
  `phone` varchar(15) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
$autoload['libraries'] = array('database', 'session');
$autoload['helper'] = array('url','form');
$autoload['model'] = array('register_model','login_model');
   public function userPage() 
    {
        if($this->session->userdata('is_logged_in')) //if==true
        {
            $this->load->view('header');
            $this->load->view('regislogin/success');

        }
        else
        {
            redirect('login');
        }           
    }