#javascript #php #html #jquery #laravel-7
Вопрос:
Я загрузил свой проект Laravel с хост-сервера. Промежуточный сервер правильно загружен и работает. В моем локальном, страница входа и регистрации была полностью загружена. Но я получал 500 ошибок сервера каждый раз после входа в систему с моими учетными данными. И почему мне нужно генерировать
ключ php artisan:создание
всякий раз, когда я перезапускаю сервер, в противном случае он показывает мне 500 ошибок сервера. Я не могу найти никакого решения за последние дни. У меня от этого голова болит. Извините за мой английский.
В корневой папке моего проекта у меня есть
общедоступный/.htaccess
lt;IfModule mod_rewrite.cgt; lt;IfModule mod_negotiation.cgt; Options -MultiViews -Indexes lt;/IfModulegt; RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (. )/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] lt;/IfModulegt;
В моем контроллере входа в систему,
public function userLogin(Request $request) { // login when add to cart or wishlist $action = $request-gt;input('action'); $id = $request-gt;input('id'); $type = $request-gt;input('type'); $redirect = $request-gt;input('redirect'); $rules = [ 'email' =gt; 'required|email', 'password' =gt; 'required' ]; $messages = [ 'email.required' =gt; __('Email is required field'), 'email.email' =gt; __('Invalid email'), 'password.required' =gt; __('Password is required field'), ]; if (ReCaptchaEngine::isEnable() and setting_item("user_enable_login_recaptcha")) { $codeCapcha = $request-gt;input('g-recaptcha-response'); if (!$codeCapcha or !ReCaptchaEngine::verify($codeCapcha)) { $errors = new MessageBag(['message_error' =gt; __('Please verify the captcha')]); return response()-gt;json([ 'error' =gt; true, 'messages' =gt; $errors ], 200); } } $validator = Validator::make($request-gt;all(), $rules, $messages); if ($validator-gt;fails()) { return response()-gt;json([ 'error' =gt; true, 'messages' =gt; $validator-gt;errors(), 'redirect' =gt; false ], 200); } else { $email = $request-gt;input('email'); $password = $request-gt;input('password'); $request-gt;session()-gt;put('user_email', $email); //session('user_email',$email); $request-gt;session()-gt;put('user_password', $password); session('user_password', $password); $tempUser = User::where('email', $email)-gt;first(); $url = strip_tags($request-gt;input('redirect')) ? strip_tags($request-gt;input('redirect')) : url(''); if (empty($tempUser)) { $errors = new MessageBag(['message_error' =gt; __('Username or password incorrect')]); return response()-gt;json([ 'error' =gt; true, 'messages' =gt; $errors, 'redirect' =gt; false ], 200); } if ($tempUser-gt;status == 'blocked') { $errors = new MessageBag(['message_error' =gt; __('Your account has been blocked')]); return response()-gt;json([ 'error' =gt; true, 'messages' =gt; $errors, 'redirect' =gt; false ], 200); } // $temp = strtolower($tempUser-gt;roles[0]-gt;name); // if ($temp == "administrator") { // $checkUser = Hash::check($password, $tempUser-gt;password); // if ($checkUser) { // Auth::attempt([ // 'email' =gt; $email, // 'password' =gt; $password // ], false); // $remember = !empty($request-gt;remember) ? true : false; // if ($remember) { // $lifetime = time() 60 * 60 * 24 * 365; // one year // Cookie::queue(Cookie::make('uplyrn_email_login', $email, $lifetime)); // //$response_cooki-gt;withCookie(cookie('save_email_login',Auth::user()-gt;email , $lifetime)); // } else { // Cookie::queue(Cookie::forget('uplyrn_email_login')); // } // Auth::login($tempUser, $remember); // if (!empty($request-gt;input('id'))) { // if ($this-gt;handleActionLogin($action, $id, $type)) { // if (!empty($type)) { // $key = 'isWishList'; // $value = "true"; // $request-gt;session()-gt;put($key, $value); // } // BravoCart::where("user_id", Auth::user()-gt;id)-gt;get()-gt;each(function ($item) { // Cart::add($item-gt;course, 1); // }); // return response()-gt;json([ // 'error' =gt; false, // 'messages' =gt; false, // 'redirect' =gt; $redirect // ], 200); // } // } // BravoCart::where("user_id", Auth::user()-gt;id)-gt;get()-gt;each(function ($item) { // Cart::add($item-gt;course, 1); // }); // return response()-gt;json( // [ // 'error' =gt; false, // 'messages' =gt; false, // 'redirect' =gt; '/admin' // ] // ); // } else { // $errors = new MessageBag(['message_error' =gt; __('Username or password incorrect')]); // return response()-gt;json([ // 'error' =gt; true, // 'messages' =gt; $errors, // 'redirect' =gt; false // ], 200); // } // } $remember = !empty($request-gt;remember) ? true : false; if (Auth::attempt([ 'email' =gt; $email, 'password' =gt; $password ], $remember)) { $remember = !empty($request-gt;remember) ? true : false; Auth::login($tempUser, $remember); Auth::logoutOtherDevices($password); if (in_array(Auth::user()-gt;status, ['blocked'])) { Auth::logout(); $errors = new MessageBag(['message_error' =gt; __('Your account has been blocked')]); return response()-gt;json([ 'error' =gt; true, 'messages' =gt; $errors, 'redirect' =gt; false ], 200); } $remember = !empty($request-gt;remember) ? true : false; if ($remember) { $lifetime = time() 60 * 60 * 24 * 365; // one year Cookie::queue(Cookie::make('uplyrn_email_login', $email, $lifetime)); //$response_cooki-gt;withCookie(cookie('save_email_login',Auth::user()-gt;email , $lifetime)); } else { Cookie::queue(Cookie::forget('uplyrn_email_login')); } Auth::login($tempUser, $remember); // $url = strip_tags($request-gt;input('redirect')); // $url = url(''); if (isset(Auth::user()-gt;roles) amp;amp; !empty(Auth::user()-gt;roles)) { if (isset(Auth::user()-gt;roles[0])) { switch (strtolower(Auth::user()-gt;roles[0]-gt;name)) { case 'administrator': case 'admin': //$url .= '/admin'; Auth::logout(); $request-gt;input('redirect') ? $url : $url .= '/show2Fa'; break; case 'lecturer': $request-gt;input('redirect') ? $url : $url .= '/user/profile '; break; case 'student': case 'customer': $request-gt;input('redirect') ? $url : $url .= '/all-courses'; break; default: break; } } } if (!empty($request-gt;input('id'))) { if ($this-gt;handleActionLogin($action, $id, $type)) { if (!empty($type)) { $key = 'isWishList'; $value = "true"; $request-gt;session()-gt;put($key, $value); } BravoCart::where("user_id", Auth::user()-gt;id)-gt;get()-gt;each(function ($item) { Cart::add($item-gt;course, 1); }); return response()-gt;json([ 'error' =gt; false, 'messages' =gt; false, 'redirect' =gt; $redirect, ], 200); } } BravoCart::where("user_id", Auth::user()-gt;id)-gt;get()-gt;each(function ($item) { Cart::add($item-gt;course, 1); }); // var_dump(auth()-gt;user()); return response()-gt;json([ 'error' =gt; false, 'messages' =gt; false, 'redirect' =gt; $url ? e($url) : url(app_get_locale(false, '/')) ], 200); } else { $errors = new MessageBag(['message_error' =gt; __('Username or password incorrect')]); return response()-gt;json([ 'error' =gt; true, 'messages' =gt; $errors, 'redirect' =gt; false ], 200); } } }
После входа в систему с контроллера я вернул данные Json в свой метод успеха ajax. В моем методе seccess я перенаправляю маршрут на (127.0.0.1:8000/), то есть из data.redirect. После этого я получил ошибку сервера 500.
$.ajax({ url: bookingCore.routes.login, data: { email: form.find('input[name=email]').val(), password: form.find('input[name=password]').val(), remember: form.find('input[name=remember]').is(':checked') ? 1 : '', 'g-recaptcha-response': form.find('[name=g-recaptcha-response]').val(), redirect: form.find('input[name=redirect]').val(), action: form.find('input[name=action]').val(), id: form.find('input[name=id]').val(), type: form.find('input[name=type]').val(), }, type: 'POST', beforeSend: function() { form.find('.error').hide(); form.find('.icon-loading').css('display', 'inline-block'); }, success: function(data) { console.log(data); form.find('.icon-loading').hide(); if (data.error === true) { if (data.messages !== undefined) { for (var item in data.messages) { var msg = data.messages[item]; console.log(item); form .find('.error-' item) .show() .text(msg[0]); } } if (data.messages.message_error !== undefined) { $('.form-right-question p').addClass('form-right-question-change'); form .find('.message-error') .show() .html( 'lt;div class="message-login"gt;' data.messages.message_error[0] 'lt;/divgt;' ); } } var data = JSON.parse(JSON.stringify(data)); if (data.redirect !== undefined amp;amp; data.redirect) { window.location.href = data.redirect; } }, });
Есть ли что-нибудь, что я пропустил, спасибо, извините за плохой английский.
Комментарии:
1. Если вам приходится звонить
php artisan key:generate
каждый раз, когда вы запускаете сервер, значит, с вашим сервером что-то не так. Можете ли вы опубликовать файлы журналов (сервер, Laravel, PHP)? Даже HTTP 500 может содержать ошибку в журнале сервера, чтобы помочь найти проблему.2. Да, я обнаружил, что это проблемы с кодовой базой. Но этот код действительно работает на сервере, а не на моем локальном хосте.
if(Auth::id())
этот код работает на сервере, а не на моем локальном. Поэтому мне приходится редактировать код вручную в моем локальном сif(!empty(Auth::id()))
помощью вместоif(Auth::id())
. Пожалуйста, в чем проблема?3. Почему бы не проверить, содержит ли URL-адрес локальный хост, а затем выполнить код a, иначе код b. У меня действительно есть это для меня, работает как заклинание. Тогда не нужно менять код
4. Потому что эти коды написаны другим разработчиком. Мы должны поддерживать. Но проблема в том, почему бы не работать в моем локальном, даже если это один и тот же код?
5. Опять же, просмотр файлов журналов поможет. Вы можете размещать сообщения здесь или напрямую в Google.