php – Laravel – 检查帐户何时创建
在我正在构建的网站上,当访问者加载页面时会自动生成帐户.创建帐户时,将要求新用户通过创建模态窗口来选择用户名,当用户提交新用户名时,数据将被发送回服务器并且模式将关闭.
所以现在唯一的问题是,我不知道如何在生成新帐户时调用此模态窗口.现在它每次都会显示页面重新加载,但应该发生的事情是仅在生成帐户之后. 所以这应该在制作帐户时调用,但只有在发生时才会调用: $('#i-modal').foundation('reveal','open'); 创建帐户时,会发生这种情况.请求被发送到/ createUser UserController的: public function createUser() { $newUser = new User; $newUser->username = 'user-'.Helpers::randomLowerCase(4); $newUser->save(); // Check if user isn't logged in yet if (!Auth::check()) { Auth::login($newUser); } else { // ... } // Return the user home return Redirect::action('HomeController@showHome'); } 那么我该如何做,只调用$(‘#i-modal’).foundation(‘reveal’,’open’);什么时候创建帐户? 解决方法
一种方法可以是在http会话中存储用户输入的用户名,并且可能还自动将用户登录到系统.然后,如果页面重新加载,则UserController会在会话中检查是否已存储用户名或用户是否已登录.根据结果显示模式或不显示模式.
因此,当首次加载页面时,您可以执行以下步骤(然后是未经测试的代码,作为可以放置代码的每个部分的示例), 1.检查会话(php http session,egsession_start(); if(isset($_ SESSION [$username])){..)以查看用户名是否存在或Auth :: check(). PHP Route::get('checkUser','UserController@checkUser'); Route::get('createUser/{username}','UserController@createUser'); class UserController extends BaseController { public function checkUser(){ session_start(); if(isset($_SESSION["username"])){/*or use something like Auth::check()*/ return Response::json(array('exists' => 'true')); /*or redirect e.g. return Redirect::action('HomeController@showHome');*/ /*or render a view e.g. return View::make('user.page',array('username' => $username));*/ }else{ return Response::json(array('exists' => 'false')); } } .... 1.1如果存在,请不要执行显示基础模态和欢迎用户的js代码. 1.2如果它不存在,执行js代码并显示模态窗口,要求用户登录. js(或通过视图从您的php代码输入,例如从控制器返回View :: make(‘user.page’,array(‘username’=> $username));) $.ajax({ url: "checkUser" success: function(data) { if(!data.exists) { $('#i-modal').foundation('reveal','open'); }else{ /*set any content e.g. welcome user*/ } } }); 1.2.1如果用户输入现有用户名或生成新用户名,请登录用户并将用户名存储在会话中. PHP .... Route::get('createUser/{username}','UserController@createUser'); class UserController extends BaseController { .... /*your code slightly modified*/ public function createUser($username) { // Check if user isn't logged in yet if (!Auth::check()/*&& if persistence is used,which is best to actually use it to persist usernames,check if the username is available*/) { $newUser = new User; //$newUser->username = 'user-'.Helpers::randomLowerCase(4); $newUser->username=$username; $newUser->save(); Auth::login($newUser); } else { return Response::json(array('created' => 'false')); /* or return Redirect::action('HomeController@loginFailed');*/ } // Return the user home return Redirect::action('HomeController@showHome'); } .... JS $.ajax({ url: "createUser",data:{usernae:the_username_from_modal} success: function(data) { if(!data.created) { /*if the redirection is not handled by the controller,handle the failed login/registration of existing username*/ } } }); 同样在您的代码中,您应该将用户名存储到持久层,以便检查现有用户名,允许用户使用他们现有的用户名,并恢复/检索您可能在应用程序中持久保存的任何类型的状态或数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |