هاست لاراول با پشتیبانی 24 ساعته و امکانات کامل از مدیرهاست
Paradox
-
تعداد ارسال ها
112 -
تاریخ عضویت
-
آخرین بازدید
-
Days Won
1
پست ارسال شده توسط Paradox
-
-
تو متد token به این شکل هم نوشتم باز اشتباهه درسته ؟
$user = User::find($request->user()->id); $status = ActiveCode::verifyCode($request->token , $user); if(Auth::loginUsingId($user->id , true)) { $user->activeCode()->delete(); return redirect('/'); }
-
ارور از سمت سرویس پیامک بود حل شد
الان این ارور دارم
lluminate\Auth\SessionGuard::login(): Argument #1 ($user) must be of type Illuminate\Contracts\Auth\Authenticatable, Illuminate\Http\RedirectResponse given, called in C:\xampp\htdocs\project\vendor\laravel\ui\auth-backend\RegistersUsers.php on line 36
کد ادامه بخش چجوری به هلپر فانکشن ورود دسترسی داشته باشم کاربر لاگین بشه ؟
این شکلی که نوشتم ارو بالا گرفتم
public function showToken() { return view('auth.code'); } public function token(Request $request) { $user = $request->validate([ 'token' => 'required' ]); $status = ActiveCode::verifyCode($request->token , $user); if(auth()->loginUsingId($request->user()->get('auth.remember'))) { $user->activeCode()->delete(); return redirect('/'); } if($status) { return redirect(route('rule')); } else { // alert()->error('شماره تلفن و احرازهویت دو مرحلهای شما تایید نشد.' , 'عملیات ناموفق بود'); return redirect(route('phone.token')); } return redirect(route('phone.token')); }
-
در در ۱۴۰۱/۸/۲۳ در 00:38، saber گفته است :شما همون روشی رو که گفتم انجام بدید کارتون درست پیش میره و مشکلی پیش نمیاد اول شماره موبایل رو تایید و کاربر رو ایجاد میکنید که گفتید مشکلی در اینقسمت ندارید
بعد کاربر رو لاگین کنید و با یه میدلور چک کنید ببینید اگر مقدار register_at برای کاربر لاگین شده برابر با null بود کاربر رو به صفحه قوانین منتقل کنید تا ثبت نامش رو تکمیل کنه
و در نهایت بعد از تکمیل ثبت نام مقدار register_at رو برابر تایم استمپ بذارید که این رو هم مقدارش رو از کلاس کربن به شکل Carbon::now میتونید دریافت کنید.
اگر هم register_at مقدار داشت و کاربر ثبت نامش رو قبلا تکمیل کرده بود به صفحه اصلی هدایت میکنید این روند مشکل شما رو حل میکنه خیلی پیچیدگی خاصی نداره
سشن رو برداشتم مثل همون ارور بالا رو دارم
این کد مشکلی داره ؟
protected function validator(array $data) { return Validator::make($data, [ 'phone' => 'required|unique:users,phone|digits:11|numeric|regex:/[0]{1}[0-9]{10}/', 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return \App\Models\User */ protected function create(array $data) { $user = User::create([ 'phone' => $data['phone'], 'password' => Hash::make($data['password']), ]); $apiKey = config('services.ghasedak.key'); $code = ActiveCode::generateCode($user); try{ $message = "کد احراز هویت شما : " . $code . " "; $lineNumber = "10008566"; $receptor = $data['phone']; $api = new \Ghasedak\GhasedakApi($apiKey); $api->SendSimple($receptor,$message,$lineNumber); } catch(ApiException $e){ throw $e; } catch(HttpException $e){ throw $e; } return redirect(route('phone.token')); }
کد تو دیتابیس ساخته میشه ولی اس ام اس نمیشه
و از این لاین ارور میگیره
$api->SendSimple($receptor,$message,$lineNumber);
-
آموزشی هست که معرفی کنید ؟
یکم گیج شدم برای ادامه روند
برام خیلی مهمه و 3 هفته متاسفانه درگیر این بخش هستم
یه آموزش خریدم قبلا ولی برای ورود بود ، کد زمان ثبت نام ارسال نمیشد فقط زمانی که کاربر وارد میشه ارسال کد انجام میشه
آموزش های یوتیوب هم به همین شکل بود
من میخام یک بار موقع ثبت نام کد احراز هویت ارسال بشه و دفعات بعد کاربر از طریق شماره موبایل و رمز عبور وارد بشه
ارسال کد انجام میشه اکیه فقط همون بخش که گفتم مشکل دارم ، روش درست برام مهمه که فرمودید نیاز به سشن نیست
-
در 3 ساعت قبل، saber گفته است :میتونید در دیتابیس توی جدول کاربران یه فیلد به اسم register_at اضافه کنید که پیشفرض null قرار بدید بعد زمانی که کاربر مراحل ثبت نام رو تموم کرد مقدار register_at رو برابر با
تایم استمپ اون تاریخ قرار بدید که مشخص بشه این کاربر در این تاریخ ثبت نامش تموم شده بعد هر بار کاربری لاگین میکنه چک میکنید که اگر مقدار register_at خالی نبود یعنی
کاربر ثبت نامش تموم شده و مجاز به دیدن صفحه home یا هر صفحه ای که دوست دارید هست
با میدلور هم میشه انجام داد؟
چطوری میتونم مقدار register_at رو برابر با تایم استمپ تاریخ قرار بدم ؟
-
در ۱ ساعت قبل، saber گفته است :ولی در کل در مورد پروژه ای که انجام بدید بهتره روش کارتون رو تغییر بدید چون اینطوری از سشن که استفاده میکنید اگر کاربری کارش رو نیمه کاره بذاره و بعد یه مدت بیاد ادامه بده بخاطر اینکه اطلاعات داخل سشن منقضی میشن برای ادامه کار مشکل میخورید و مجدد کار زیادی برای اعتبار سنجی دوباره شماره موبایل و چک کردن اینکه کاربر از قبل بوده یا خیر انجام بدید. به نظرم بهتر هست بعد از اینکه کاربر شماره موبایل رو تایید کرد و ثبت نام شد بطور اتوماتیک لاگینش رو هم انجام بدید و مراحل بعدی تکمیل فرمها رو انجام بدید و تا زمانی که مرحله ای رو تکمیل نکرده اجازه رفتن به مرحله بعد رو ندید. اینطوری دیگه نیازی به سشن ندارید و بعد از لاگین از طریق هلپر فانکشن auth به همه اطلاعات کاربر دسترسی دارید.
بله دقیقا دغدغه منم همین بود اگه نصفه ول کنه چیکار میشه کرد
حالا کاربر اگه لاگین شده در نظر بگیریم در ابتدا بعد از احراز هویت با موبایل به روت home دسترسی داره ؟
چون میخام وقتی دفعات بعد لاگین کرد بره به روت home
ولی در حالت عادی بعد از اعتبار سنجی موبایل بره به روت قوانین
میشه در هر حالت بره به صفحه home ولی شرط بزاریم تا اطلاعات پر نشد روت home نشون نده ؟؟
چطوری میشه این رو بررسی کرد ؟یا اشتباهه این روش؟
-
وقتی به این شکل نوشتم
$request->session()->flash('auth' , [ 'user_id' => $user->id, ]);
ارور زیر نمایش داد
Ghasedak \ Exceptions \ ApiException error
عکس هم ارسال شد
-
این خط کد که تو متد register هست یعنی اشتباهه؟
$request->session()->flash('phone' , $data['phone']);
و باید این شکل بنویسم؟
$request->session()->flash('auth' , [ 'user_id' => $user->id, ]);
-
در 27 دقیقه قبل، saber گفته است :شما با کلید auth.user_id میخواید شناسه کابر رو بگیرید ولی جایی این رو set نکردید زمانی که کاربر رو با متد create ایجاد میکنید بعدش با همون کلید auth.user_id شناسه کاربر رو توی سشن set کنید تا بعدش بتونید با متد get دریافتش کنید. البته اگه بعد ثبت نام کاربر بطور خودکار توی سایت لاگین میشد به این session نیازی نبود و براحتی از طریق هلپر فانکشن auth به اطلاعات کاربر دسترسی داشتین
من میخام ثبت نامم چند مرحله ای باشه بعد از اینکه کاربر احراز هویت شد با شماره موبایل بره به صفحات بعدی اطلاعات پر کنه تا به صفحه home دسترسی داشته باشه و بعدا هر وقت login کرد وارد صفحه home بشه
این روشی که دارم میرم یعنی اشتباهه ؟؟
الان من تو متد craete باید auth.user_id رو قرار بدم ؟
متوجه نشدم چطوری تعریفش کنم
-
در 1 ساعت قبل، saber گفته است :خب پس مشکل از همون قسمت هست باید ببینید جایی که session رو set میکنید چه ایرادی داره چون اصلا ست نمیشه توی کدهایی که گذاشتید قسمت ست شدن session رو ندیدم
من کل کدهارو میزارم اینجا
controller
class RegisterController extends Controller { /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest'); } public function showRegister() { return view('auth.register'); } public function register(Request $request) { $data = $request->validate([ 'phone' => 'required|unique:users,phone|digits:11|numeric|regex:/[0]{1}[0-9]{10}/', 'password' => ['required', 'string', 'min:8', 'confirmed'], 'reagent_code' => ['nullable' , 'string' , 'max:255' , 'min:3'], ]); $user = User::create([ 'phone' => $data['phone'], 'password' => Hash::make($data['password']), 'reagent_code' => $data['reagent_code'], ]); $apiKey = config('services.ghasedak.key'); $code = ActiveCode::generateCode($user); $request->session()->flash('phone' , $data['phone']); try{ $message = "کد احراز هویت شما : " . $code . " "; $lineNumber = "10008566"; $receptor = $data['phone']; $api = new \Ghasedak\GhasedakApi($apiKey); $api->SendSimple($receptor,$message,$lineNumber); } catch(ApiException $e){ throw $e; } catch(HttpException $e){ throw $e; } return redirect()->route('phone.token'); } public function showToken(Request $request) { if(! $request->session()->has('phone')) { return redirect()->route('register'); } $request->session()->reflash(); return view('auth.code'); } public function token(Request $request) { $request->validate([ 'token' => 'required' ]); if( ! $request->session()->has('phone')) { return redirect()->route('register'); } // $request->session()->reflash(); $user = User::findOrFail(dd($request->session()->get('auth.user_id'))); $status = ActiveCode::verifyCode($request->token , $user); if(! $status) { // alert()->error('شماره تلفن و احرازهویت دو مرحلهای شما تایید نشد.' , 'عملیات ناموفق بود'); return redirect()->route('register'); } else { $user->activeCode()->delete(); return redirect()->route('rule'); } return redirect()->route('register'); } public function rule(Request $request) { // $request->validate([ // 'rule' => 'required' // ]); // if($request) // { // return redirect(route('auth.child')); // } return view('auth.rule'); } }
route
Route::namespace('Auth')->middleware('guest')->group(function() { Route::get('register' , [RegisterController::class , 'showRegister'])->name('register'); Route::post('register' , [RegisterController::class , 'register']); Route::get('/token' , [RegisterController::class , 'showToken'])->name('phone.token'); Route::post('/token' , [RegisterController::class , 'token']); Route::get('rule' , [RegisterController::class , 'rule'])->name('rule'); });
-
در 9 ساعت قبل، saber گفته است :مقدار داخل session رو با dd تست کنید ببینید اصلا بهتون خروجی میده؟
null برمیگردونه دقیقا همون خط رو
null // app\Http\Controllers\Auth\RegisterController.php:95
-
این خط از کد مشکل نداره ؟
$user = User::findOrFail($request->session()->get('auth.user_id'));
-
در 46 دقیقه قبل، saber گفته است :سلام به نظر مشکل بخاطر این هست که شما کلا یوزر رو از دیتابیس حذف میکنید شما بعد از تایید کاربر برای حذف کد ارسالی فقط باید فیلد کد ارسالی رو آپدیت کنید و مقدارش رو خالی بذارید.
نباید از متد delete استفاده کنید چون کلا کاربر رو از دیتابیس حذف میکنه و بعد ارور 404 میده چون کاربری وجود نداره
به چه شکل باید بنویسم؟
چون هم کاربر تو دیتابیس هست هم کد تایید هیچی پاک نشده تو دیتابیس
-
سلام شب بخیر
من میخام کاربر با شماره موبایل ثبت نام انجام بده و بعد از اینکه کد براش ارسال شد وارد صفحه قوانین بشه ، ثبت نام با موبایل و احراز هویت رو انجام دادم و اکیه
فقط یه بخش مشکل دارم که میخام چک کنم اگه کاربر کدی که وارد کرد درست بود از دیتابیس کد ارسال شده حذف بشه و کاربر هدایت بشه به صفحه قوانین
که مشکلی که دارم اینه صفحه 404 نمایش میده که یعنی کاربر وجود نداره
public function token(Request $request) { $request->validate([ 'token' => 'required' ]); if( ! $request->session()->has('phone')) { return redirect()->route('register'); } $user = User::findOrFaild($request->session()->get('auth.user_id')); $status = ActiveCode::verifyCode($request->token , $user); if(! $status) { // alert()->error('شماره تلفن و احرازهویت دو مرحلهای شما تایید نشد.' , 'عملیات ناموفق بود'); return redirect()->route('register'); } else { $user->activeCode()->delete(); return redirect()->route('rule'); } return redirect()->route('register'); }
با سشن انجام دادم
این خط کد مشکل داره
$user = User::findOrFaild($request->session()->get('auth.user_id'));
وقتی هم به جای findOrFaild از find استفاده میکنم این ارور دارم
call to a member function activecode() on null
تو این متد به چه شکل باید بنویسم که اگه کدی که کاربر وارد کرد درست بود هدایت بشه به صفحه مد نظر؟
-
سلام من یک ویرایشگر نیاز دارم مثل همین ویرایشگری که تو انجمن هست
ک قابلیت قرار دادن و نمایش کد داشته باشه
markdown به سایتم اضافه کردم ولی خودم به طور دستی باید داخل بک تیک کدارو ``` بزارم
از ckeditor استفاده کردم ولی موفق به نمایش کد نشدم
لطفا یه ویرایشگر معرفی کنید خیلی ضررویه
-
در در ۱۴۰۰/۳/۸ در 01:16، saber گفته است :شما اسم متدلی رو که تعریف کردید files گذاشتید ولی موقع فراخوانی file نوشتید برای همین خطا میده
الان به این شکل نوشتم
و باز هم ارور زیر دارم
Call to a member function getClientOriginalName() on null
public function store(Request $request , File $files) { $validData = $request->validate([ 'title' => 'required', 'description' => 'required', 'image' => 'required', 'file' => 'required', 'categories' => 'required', 'slug' => 'unique:files', 'status' => '' ]); if (empty($request->slug)) { $slug = SlugService::createSlug(File::class, 'slug', $request->title); } else { $slug = SlugService::createSlug(File::class, 'slug', $request->slug); } $request->merge(['slug' => $slug]); $files = Storage::disk('public')->putFileAs('files' , $request->file('file') , $request->file('file')->getClientOriginalName($files))->create($request->all()); $files->categories()->sync($validData['categories']); alert()->success('مطلب مورد نظر با موفقیت ثبت شد' , 'با تشکر'); return redirect(route('admin.files.index')); }
تو مدل فایل اینو قرار دادم درسته؟
public function users() { return $this->belongsToMany(User::class); }
تو مدل یوزر باید این رابطه رو قرار بدم ؟
public function files() { return $this->hasMany(File::class); }
-
تو دیتابیس باید اضافه کنم ؟
تو مدل یوزر این رابطه رو قرار دادم
public function files() { return $this->hasMany(File::class); }
تو مدل فایل هم باید چیزی اضافه کنم ؟
-
سلام وقت همگی بخیر من میخام بعد از پرداخت کاربران بتونن فایل رو دانلود کنن
الان نمیدونم چجوری باید اطلاعات داخل دیتابیس فرستاده بشه
چیزی که نوشتم و میدونم اشتباهه و یک ارور هم دارم
Call to undefined method App\User::file()
public function store(Request $request , File $file) { $validData = $request->validate([ 'title' => 'required', 'description' => 'required', 'image' => 'required', 'file' => 'required', 'categories' => 'required', 'slug' => 'unique:files', 'status' => '' ]); if (empty($request->slug)) { $slug = SlugService::createSlug(File::class, 'slug', $request->title); } else { $slug = SlugService::createSlug(File::class, 'slug', $request->slug); } $request->merge(['slug' => $slug]); $files = auth()->user()->file()->create($request->all()); $files->categories()->sync($validData['categories']); alert()->success('مطلب مورد نظر با موفقیت ثبت شد' , 'با تشکر'); return redirect(route('admin.files.index')); }
ممنون میشم راهنمایی کنید نمیدونم چیکار کنم
-
ممنون از شما ایدی هارو تغییر دادم درست شد
فقط موقع ثبت تو دیتابیس یه خطا دارم که متاسفانه نتونستم حل کنم
BadMethodCallException Call to undefined method App\User::file() http://localhost:8000/admin/files
از این خط ارور میگیره
$files = auth()->user()->file()->create($request->all());
-
کسی هست راهنماییم کنه؟
ضررویه
-
سلام وقتتون بخیر
من میخام دوتا تصویر شاخص اضافه کنم به پروژم
یکی برای اپلود تصویر و یکی برای اپلود فایل های دانلودی
ایدی دکمه رو تغییر دادم کدهای جی اس دوباره نوشتم ولی خب اشتباه بود و جواب نگرفتم
ممنون میشم راهنمایی کنید
<script src="/js/ckeditor/ckeditor.js"></script> <script> CKEDITOR.replace('description', { filebrowserImageBrowseUrl: '/file-manager/ckeditor' }); document.addEventListener("DOMContentLoaded", function() { document.getElementById('button-image').addEventListener('click', (event) => { event.preventDefault(); window.open('/file-manager/fm-button', 'fm', 'width=1400,height=800'); }); }); // set file link function fmSetLink($url) { document.getElementById('image_label').value = $url; }
<div class="form-group"> <label class="col-sm-2 control-label">آپلود تصویر شاخص</label> <div class="input-group"> <input type="text" id="image_label" class="form-control" name="image"> <div class="input-group-append"> <button class="btn btn-outline-secondary" type="button" id="button-image">انتخاب</button> </div> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label">آپلود فایل</label> <div class="input-group"> <input type="text" id="image_label" class="form-control" name="file"> <div class="input-group-append"> <button class="btn btn-outline-secondary" type="button" id="button-image">انتخاب</button> </div> </div> </div>
-
کسی نیست راهنمایی کنه؟
-
سلام به همگی
برای مسدود کردن کاربران این روش انجام دادم ولی وقتی کاربر رو غیرفعال میکنم هیچ اتفاقی نمیفته و همچنان فعال هست
نمیدونم چیکار باید کرد ممنون میشم راهنمایی کنید
Route::get('/users/status/{user}', 'User\UserController@updatestatus')->name('admin.users.status');
@foreach($users as $user) @switch($user->status) @case(1) @php $url = route('admin.users.status',$user->id); $status = '<a href="'.$url.'" class="badge badge-success">فعال</a>' @endphp @break @case(0) @php $url = route('admin.users.status',$user->id); $status = '<a href="'.$url.'" class="badge badge-warning">غیر فعال</a>' @endphp @break @default @endswitch
<td>{!!$status!!}</td>
protected $attributes = [ 'status' => 1 , ];
public function updatestatus(User $user) { if ($user->status == 1) { $user->status = 0; } else { $user->status = 1; } $user->save(); return redirect(route('admin.users.index')); }
- 1
-
سلام برای نمایش اسلاگ من با توجه به فیلم پیش رفتم ولی وقتی بر اساس اسلاگ میزارم تو سینگل پیج ارور 404 میده
روت
Route::get('/blog/{blog}/', 'frontend\BlogController@single')->name('blog');
چرا روت رو پیدا نمیکنه؟
این بخش رو رو ماژول کردم بخاطر این هس نمیشناسه؟
public function single(Blog $blog) { $blog->increment('hit'); return view('blog::home.single-blog' , compact('blog')); }
<a href="{{route('blog', $blog->slug)}}" class="btn btn-primary">جزئیات مطلب</a>
تو نوار ادرس اسلاگ میاد ولی در نهایت صفحه
404Not Foundنمایش میده
مشکل در ثبت نام با موبایل
در رفع مشکلات و سوالات عمومی لاراول Laravel
ارسال شده در · Report reply
اینجا مشکل از remmber هست ؟
اروری که داده این لاین از متد اشاره کرده
public function login(AuthenticatableContract $user, $remember = false)
تو متد token به این شکل نوشتم
public function token(Request $request , User $user) { $request->validate([ 'token' => 'required' ]); $status = ActiveCode::verifyCode($request->token , $user); if(Auth::loginUsingId($user->id , $request->get('remember'))) { $user->activeCode()->delete(); return redirect('/'); } if($status) { return redirect(route('rule')); } else { // alert()->error('شماره تلفن و احرازهویت دو مرحلهای شما تایید نشد.' , 'عملیات ناموفق بود'); return redirect(route('phone.token')); } return redirect(route('phone.token')); }
تو loginController به این شکل نوشتم که نمیدونم اشتباه از متد token هست یا متد login
اینجا validate تو متد login باشه مشکلی نداره؟
public function login(Request $request) { $request->validate([ 'phone' => 'required|exists:users,phone|digits:11|numeric|regex:/[0]{1}[0-9]{10}/', 'password' => 'required|string', ]); $remember = ($request->has('remember')) ? true : false; return redirect()->route('home'); }