Как да направя регистрационна/вход форма в Laravel

+3 гласа
673 прегледа
попитан 2016 юни 29 от Stoqn Ivanov (150 точки)
Здравейте, в момента уча Laravel PHP Framework и имам затруднения с кодирането на регистрация и вход. Ще може ли някой да сподели своят код и ако може да обясни всеки ред какво прави.

2 отговори

+2 гласа
отговорени 2016 юни 29 от Nolongerexists2 (1,790 точки)

Файловете които ще използвам са routes.php, TestController.php, login.blade.php, register.blade.php

routes.php

Route::get('/login', function () {
    return view('login'); // При въвеждането на /login в url ще използва данните от login.blade.php
});

Route::get('/register', function () {
    return view('register'); // При въвеждането на /login в url ще използва данните от login.blade.php
});

Route::post('login', 'TestController@login'); // Задаваме, че ще използва POST и ще пращаме данни към TestController с function login

Route::post('register', 'TestController@register'); // Задаваме, че ще използва POST и ще пращаме данни към TestController с function register

TestController.php 
Създаваме две функции login() и register()

register()

   public function register()
   {
        // Взимаме данните от FORM в register.blade.php
        $nickname = Request::get('nickname'); 
        $password = Request::get('password');
        $email = Request::get('email'); 
        // Избираме всичко от table users в базата данни където nickname = на въведенето в $nickname и email на въведеното в $email

        $user = \DB::table('users')
            ->where('nickname', '=', $nickname)
            ->orwhere('email', '=', $email)
            ->first();
            
        // Проверка дали има такъв потребител
        if (is_null($user)) {
            // Ако няма такъв потребител
            \DB::table('users')->insert(
                array('nickname' => $nickname, 'password' => $password, 'email' => $email)
            );
            
        } else {
            // Ако има такъв потребител
        }

   }

login()

   public function login()
   {

       // Взимаме данни от login.blade.php и ги задаваме като променливи
       $nickname = Request::get('nickname');
       $password = Request::get('password');
       // Избираме всичко от table users където името = $nickname и паролата = $password
        $user_exist = \DB::table('users')
            ->where('nickname', '=', $nickname)
            ->where('password', '=', $password)
            ->first();
            // Ако потребителят не съществува
        if(is_null($user_exist)){
            return \Redirect::to('login');
        }else{

            // Ако потребителя съществува създавам сесии и задавам nickname като горе посоченото в $nickname и logged = yes
            \Session::set('nickname',$nickname);
            \Session::set('logged','yes');
            return \Redirect::to('dashboard');
        }
   }

register.blade.php

     // Ще ти обясня кода с HTML синтаксис                   

                          {!! Form::open() !!}
                                {!! Form::text('nickname','', array('class'=>'form-control','placeholder'=>'Никнейм')) !!} // <input type="text" class="form-control" placeholder="Никнейм">
                                {!! Form::password('password', array('class'=>'form-control','placeholder'=>'Парола' ) ) !!} // <input type="password" class="form-control" placeholder="Парола">
                                {!! Form::email('email','', array('class'=>'form-control','placeholder'=>'Имейл'))  !!}<br> // <input type="email" class="form-control" placeholder="Имейл">
                                {!! Form::submit('Регистрирай се', array('class'=>'btn btn-primary signup')) !!} // <input type='submit" class="btn btn-primary signup" value="Регистирай се">
                            {!! Form::close() !!}

login.blade.php

// Ще ти обясня кода с HTML синтаксис
                            {!! Form::open() !!}
                                {!! Form::text('nickname','', array('class'=>'form-control','placeholder'=>'Никнейм')) !!} // <input type="text" class="form-control" placeholder="Никнейм">
                                {!! Form::password('password', array('class'=>'form-control','placeholder'=>'Парола' ) ) !!} // <input type="password" class="form-control" placeholder="Парола">
                                {!! Form::submit('Влез', array('class'=>'btn btn-primary signup')) !!} <input type='submit" class="btn btn-primary signup" value="Влез">
                            {!! Form::close() !!}

+2 гласа
отговорени 2016 юни 29 от ilinovster (1,870 точки)

Laravel има вграден модул за Authentication. Има два контролера отговарящи за регистрация, вход и забравена парола - AuthController и PasswordController , които се намират в пространството App\Http\Controllers\Auth. Не е необходимо да правите всичко ръчно. Laravel ще направи повечето неща заради вас.
Просто инсталирайте Laravel, влезте в папката с инсталацията и изпълнете командата:

php artisan make:auth
Тази команда ще създаде регистрационните и логин views, а също и HomeController, който управлява пост-логин зявките. Генерираните views може да намерите в resources/views/auth и resources/views/layouts. Може да ги подмените със шаблон, който вие пожелаете. 
Трябва и да защитите и своите routes. Просто в тях включете middleware auth:
Route::get('dashboard', ['middleware' => 'auth', function() {
    // Само за регистрирани потребители
}]);
За повече ще трябва да разгледате и документацията.
https://laravel.com/docs/5.2/authentication
Успех.
...