【问题标题】:Message: Undefined variable: username消息:未定义变量:用户名
【发布时间】:2013-02-20 09:04:54
【问题描述】:

我按照 Code Factory 上的教程为 codeigniter 编写了一个简单的登录脚本。 我现在可以登录,但是当我想通过代码向用户显示时

Welkom: <?php echo $username ?>!

我收到错误消息:未定义变量:用户名

我不知道问题是什么,所以我会在您要求时发布我的代码。

谢谢

编辑:

我的用户模型。

  <?php
    Class User extends CI_Model
    {
     function login($username, $password)
     {
       $this -> db -> select('id, username, password');
       $this -> db -> from('users');
       $this -> db -> where('username', $username);
       $this -> db -> where('password', MD5($password));
       $this -> db -> limit(1);

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

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

我的登录控制器:

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

class Login extends CI_Controller {

 function __construct()
 {
   parent::__construct();
 }

 function index()
 {
   $this->load->helper(array('form'));
   $this->load->view('login_view');
 }

}

?>

我的家庭控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
session_start(); //we need to call PHP's session object to access it through CI
class Home extends CI_Controller {

 function __construct()
 {
   parent::__construct();
 }

 function index()
 {
   if($this->session->userdata('logged_in'))
   {
     $session_data = $this->session->userdata('logged_in');
     $data['username'] = $session_data['username'];
     $this->load->view('home_view', $data);
   }
   else
   {
     //If no session, redirect to login page
     redirect('login', 'refresh');
   }
 }

 function logout()
 {
   $this->session->unset_userdata('logged_in');
   session_destroy();
   redirect('home', 'refresh');
 }

}

?>

【问题讨论】:

  • 链接到教程总是一个好主意:)
  • 实际登录用户并设置会话数据的代码在哪里?您有调用数据库的模型的代码,但我没有看到引用该模型的控制器。
  • 看教程。该代码未注释。但正如我所说,我是 codeigniter 的新手

标签: php codeigniter login


【解决方案1】:
Welkom: <?php echo (isset($username))?$username :"Guest" ?>!

【讨论】:

  • 错误出现在荷兰语 Serverfout Er is een fout opgetreden toen de website kees.een-site-bouwen.nl/owrb probeerde op te halen。 kan onjuist zijn geconfigureerd 的服务器 kan 离线 zijn wegens onderhoud。
  • 服务器错误尝试检索 kees.een-site-bouwen.nl/owrb 网站时发生错误。服务器可能因维护而停机或配置不正确。
  • 我在数据库中的用户叫 bob。但是当我登录时,会收到消息 Welkom:Guest!现在。所以有一个比我想象的更大的问题。
  • 是的,这是因为您在回显之前没有为$username$username = username from db ; 赋值
  • 嗯,我以为我做到了。也许那段代码有问题。我会检查的!谢谢
【解决方案2】:

尝试替换

Welkom: <?php echo $username ?>!

与:

Welkom: <?php echo (isset($data['username'])) ? $data['username'] : "Guest"; ?>!

【讨论】:

    【解决方案3】:

    我会进一步检查 Home 类,看看是否

    $data['username'] = $session_data['username'];
    

    已设置。试试这个:

    $session_data = $this->session->userdata('logged_in');
    $data['username'] = $session_data['username'];
    //$this->load->view('home_view', $data);
    echo "username: " . $data['username']; exit;
    

    【讨论】:

    • 我如何检查这个?因为我的主页上有我的登录消息和注销按钮。什么都没有发生
    • 只需将 Home 控制器的 index() 方法中的代码替换为我在上面放置的代码。它将不再显示视图(正如我已注释掉该行),而只会显示用户名。如果您仍然只获得“用户名:”,则表示该变量未正确设置。否则,你会得到一个“用户名:john”或类似的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多