加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel – 检查帐户何时创建

发布时间:2020-12-14 19:34:29 所属栏目:大数据 来源:网络整理
导读:在我正在构建的网站上,当访问者加载页面时会自动生成帐户.创建帐户时,将要求新用户通过创建模态窗口来选择用户名,当用户提交新用户名时,数据将被发送回服务器并且模式将关闭. 所以现在唯一的问题是,我不知道如何在生成新帐户时调用此模态窗口.现在它每次都会
在我正在构建的网站上,当访问者加载页面时会自动生成帐户.创建帐户时,将要求新用户通过创建模态窗口来选择用户名,当用户提交新用户名时,数据将被发送回服务器并且模式将关闭.

所以现在唯一的问题是,我不知道如何在生成新帐户时调用此模态窗口.现在它每次都会显示页面重新加载,但应该发生的事情是仅在生成帐户之后.

所以这应该在制作帐户时调用,但只有在发生时才会调用:

$('#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*/
                }
            }
        });

同样在您的代码中,您应该将用户名存储到持久层,以便检查现有用户名,允许用户使用他们现有的用户名,并恢复/检索您可能在应用程序中持久保存的任何类型的状态或数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读