【发布时间】:2014-02-08 08:29:52
【问题描述】:
我对 CakePHP 还很陌生,我尝试搜索与我正在尝试做的事情相关的问题,但我认为它没有被问到所以这里是:
我正在为一所学校开发学生表格网站。学校有他们自己的特殊登录系统,他们希望用户能够使用它,而不是拥有自己单独的登录系统的网站。所以在我的User 视图中,我的login.ctp 文件从UserController 调用login(),登录功能成功连接到学校的登录系统并验证用户的凭据(用户名和密码被存储在$user_name 和$user_pass)。
然后我让登录功能检查用户是否是第一次登录,方法是检查 User 模型中用于登录学校系统的用户名。如果用户名不存在,表单将重定向到register.ctp(仍然是User 视图),用户需要填写他们的名字、姓氏和一些其他信息,这些信息存储在User 模型中。我还需要这个注册表来存储用于登录学校系统的用户名和密码。用户注册后应重定向到Student/forms 视图并使用StudentController。
如何以这种新形式访问$user_name 和$user_pass?我不希望用户能够输入这些信息(它应该放在只读输入框中)。
我应该只在UserController 中创建一个函数register() 来创建一个新的User 以添加到数据库吗?
对不起,如果之前已经介绍过!
这是我的代码的伪示例:
UserController:
login(){
$user_name = $_POST['username'];
$user_pass = $_POST['pwd'];
$data = array('username' => $user_name, 'pwd' => $user_pass);
if(validate($user_name, $user_pass)){
if(!exists($user_name)){
$this->redirect(array('action' => 'register', $data));//Passing the log in data to the register function and view
} else {$this->redirect(array('controller' => 'forms', 'action' => 'students'));}
} else {//display invalid credential message}
}
register(){
AppController::loadModels(array('User'));
$this->set($data);//Setting the data passed by login() so the register.ctp view can use it
//grab post data from registration form
}
我得到一个错误,说 $data 是一个未定义的变量,尽管在注册函数中,即使我在重定向中传递它。我该如何正确地做到这一点?
登录视图:
<div class="main-content">
<div class="hero-unit span5 centerIt">
<?php echo $this->Session->flash(); ?>
<?php echo $this->Session->flash('auth'); ?>
<?php echo $this->Form->create('User', array('action'=>'login')); ?>
<fieldset id="login">
<h2> User Login</h2>
<p> Please Enter your [sic] Credentials </p>
<p>
<?php echo $this->Form->input('username', array('label' => 'Username: ', 'type' => 'text', 'value' =>'')); ?>
</p>
<p>
<?php echo $this->Form->input('password', array('label' => 'Password: ', 'type' => 'password')); ?>
</p>
<p>
<?php echo $this->Form->input('remember', array('type'=>'checkbox', 'label'=>'Remember me')); ?>
</p>
</fieldset>
<div class="submit pull-right">
<input type="submit" value="Login" class="btn btn-primary">
</div>
</div>
</div>
注册查看:
<div class="main-content">
<div class="hero-unit span5 centerIt">
<?php echo $this->Form->create('User', array('action'=>'register')); ?>
<fieldset>
<legend><?php echo __('Register New User'); ?></legend>
<p class="subHead"> Note: This information can't be changed later, please check that your info is correct.</p>
<?php echo $this->Form->input('username', array(
//'value' => $_POST['data']['username'],
'readonly' => 'readonly'));
echo $this->Form->input('password', array(
//'value' => $_POST['data']['pwd'],
'readonly' => 'readonly'));
echo $this->Form->input('fname', array(
'label' => 'First Name'));
echo $this->Form->input('lname', array(
'label' => 'Last Name'));
echo $this->Form->input('role', array(
'options' => array('student' => 'Student')));
?>
</fieldset>
<div class="submit pull-right">
<input type="submit" value="Submit" class="btn btn-primary">
</div>
</div>
</div>
【问题讨论】:
-
轻松使用会话