جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.


×
×
با حمایت نقدی خود در افزایش سطح کیفی خدمات لام تا کام سهیم باشید.
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

چطور میتوانم اطلاعات کاربری را در پروفایل کاربری ویرایش کنم؟


0
0
485

سلام من پروفایل کاربری راساختم که شبیه زیر است.

توضیح تصویر

من میخواهم فقط آدرس و ایمیل و پسورد آپدیت بشود. چیزی که برای من سخته این پسوردها است. چطور میشه ئسورد قدیمی را پیدا کرد بعدش هم بیاید پسورد جدید را وارد کرد.

edit.blade.php

<form method="POST" action="{{ route('sqlupdate') }}">
    @csrf
    {{ method_field('PATCH') }}
    <div class="form-group row">
        <label for="email" class="col-md-1 col-form-label text-md-right">{{ __('ایمیل') }}</label>
        <div class="col-md-5">
            <input id="email" type="text" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') ? : user()->email }}" required autocomplete="email" autofocus>
            @error('email')
            <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
            @enderror
        </div>
    </div>
    <div class="form-group row">
        <label for="oldPassword" class="col-md-1 col-form-label text-md-right">{{ __('رمز عبور قدیمی') }}</label>
        <div class="col-md-5">
            <input id="oldPassword" type="password" class="form-control @error('oldPassword') is-invalid @enderror" name="oldPassword" value="{{ old('oldPassword') }}" autocomplete="oldPassword" autofocus>
            @error('oldPassword')
            <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
            @enderror
        </div>
    </div>
    <div class="form-group row">
        <label for="password" class="col-md-1 col-form-label text-md-right">{{ __('رمز عبور') }}</label>
        <div class="col-md-5">
            <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
            @error('password')
            <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
            @enderror
        </div>
    </div>
    <div class="form-group row">
        <label for="password-confirm" class="col-md-1 col-form-label text-md-right">{{ __('تکرار رمز') }}</label>
        <div class="col-md-5">
            <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
        </div>
    </div>
    <div class="form-group row">
        <label for="address" class="col-md-1 col-form-label text-md-right">{{ __('آدرس') }}</label>
        <div class="col-md-5">
            <textarea id="address" type="text" class="form-control @error('address') is-invalid @enderror" name="address" required autocomplete="address" autofocus>{{ old('address') ? : user()->address }}</textarea>
            @error('address')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
            @enderror
        </div>
    </div>
    <div class="form-group row mb-0">
        <div class="col-md-1">
            <button type="submit" class="btn btn-block btn-primary">
                {{ __('ثبت') }}
            </button>
        </div>
    </div>
</form>

MyCpntroller

public function sqlupdate(Request $request)
{
    Auth::user()->update([
        'address' => $request['address'],
        'email' => $request['email'],
    ]);

    $hashedPassword = auth()->user()->password;
    if (Hash::check($request->oldpassword, $hashedPassword)){
        $user = User::find(Auth::id());
        $user->password = Hash::make($request->password);
    }
    return redirect()->back();
}
سایر لاراول
سوال شده در Mahmoud Khosravi
132 امتیاز


به لحاظ معماري نرم افزار، منطقي نيست كه رمز عبور و ساير اطلاعاتي مثل ادرس، از طريق يك فرم (به صورت يكجا) ويرايش بشن. با يك يك فرم جدا و تنها براي ويرايش رمز عبور داشته باشي. ضمنا مطميني ميخواي ايميل رو قابل ويرايش بزاري؟ نام كاربري كاربر ها توي سامانه ي تو ايميل نيست؟ ــ سجاد شفی زاده در 2 سال قبل

@سجاد.شفی.زاده.★ خوب چکار کنم طرف خواسته فقط اینا ویرایش بشه. حالا هم باید چکار کنم؟ میشه بگید ممنون میشم. ــ Mahmoud Khosravi در 2 سال قبل

فکر میکنم آقای شفی زاده منظورشون این نبود که چیزای دیگه ای رو هم ویرایش کن، احتمالا منظورشون این بوده که توی 2 تا فرم html جداگانه باید رمز عبور و سایر چیزها رو ویرایش کنی. نباید همش رو توی یه فرم ویرایش کنی. ــ سعید مرادی در 2 سال قبل

500 کاراکتر باقی مانده

2 جواب

1

به عنوان پاسخ به بخشی از سوال شما، از اونجایی که توی کدهای HTMLتون نام فیلد های «رمز عبور» و «تکرار رمز» رو به ترتیب password و password_confirmation گذاشتید، به راحتی میتونید از validator خود لاراول با نام confirmed استفاده کنید، به این شکل:

$this->validate($request, [
    'password' => 'required|confirmed|min:6',
]);

که این خودش سه چیز رو چک میکنه:

  1. فیلم های رمز عبور باید پر شده باشند.
  2. فیلد «رمز عبور» و «تکرار رمز» باید دقیقا عین هم باشند.
  3. حداقل رمز عبود انتخاب شده باید 6 کاراکتر باشد. (این اولین ساده ترین سطح یک رمز عبور امن است)

طبق پیامی که زیر پست من گذاشتید، ظاهرا مشکلتون اعتبارسنجی مقادیر وارد شده از سمت کاربر نیست و صرفا توی بروزرسانی مشکل دارید. پیشنهاد من برای بروزرسانی به این شکل هستش:

$current_password = Auth::User()->password;           
if(Hash::check($request->oldpassword, $current_password))
{           
  $user_id = Auth::User()->id;                       
  $obj_user = User::find($user_id);
  $obj_user->password = Hash::make($request->password);
  $obj_user->save();
}
ویرایش شده در 2 سال قبل
جواب داده شده در ساناز رضایی
1295 امتیاز


این را من در اعتبار سنجی خودم اضافه کردم من فقط می خوام ویرایش بشه همین ــ Mahmoud Khosravi در 2 سال قبل

@Mahmoud.Khosravi پاسخم رو ویرایش کردم، امیدوارم اون چیزی باشه که لازم دارید و مشکلتون حل بشه. ــ ساناز رضایی در 2 سال قبل

پس آدرس و ایمیل کجاست؟ ــ Mahmoud Khosravi در 2 سال قبل

@Mahmoud.Khosravi اونا رو هم خب خودتون باید بزارید، من نمیدونم اسم ستونهایی که توی دیتابیس برای این فیلدها در نظر گرفتید چیه. من فکر میکردم مشکلتون فقط «رمز عبور» هستش. ــ ساناز رضایی در 2 سال قبل

والا من همین الان تست کردم هنوز مشکل حل نشد که ــ Mahmoud Khosravi در 2 سال قبل

مشکل حل نشده دقیقا به چه معناست؟ چه اروری دریافت میکنید؟ ــ ساناز رضایی در 2 سال قبل

هیچ خطایی من نمیبینم فقط رمز عبور تغییر نکرد ــ Mahmoud Khosravi در 2 سال قبل

الان دقیقا همون زمانی هستش که باید شروع کنید مراحل دیباگ رو انجام بدید. من اگر بجای شما بودم، اولین کاری که انجام میدادم این هستش که $obj_user->save(); رو توی یک متغییر میریختم و بلافاصله توی خط بعدی چاپش میکردم (با var_dump()) که ببینم نتیجه بروزرسانی چی هستش. ــ ساناز رضایی در 2 سال قبل

والا من به این شکل نوشتمش $a = $obj_user->save(); var_dump($a); صفحه سفید برای من نمایش داد. ــ Mahmoud Khosravi در 2 سال قبل

آدرس بدون عنوان ــ Mahmoud Khosravi در 2 سال قبل

به طور عادی کدتون نباید خروجیش بشه یه صفحه سفید. چرا که تابع save() بولین برمیگردونه و شما یا باید true بگیرید یا false به عنوان خروجی. شاید app_mode رو روی production گذاشتید که ارورها رو بهتون نشون میده و نمیبینید، اگه اینطوریه، بزاریدش روی debug که ببینیم خروجی چیه و بتونیم دیباگش کنیم. ــ ساناز رضایی در 2 سال قبل

والا من نمیدونم منظورتون چیه؟ من dd($request->all()) را گزاشتم این آدرس بدون عنوان برای من نمایش داد یا خودت هم میتونی با anydesk وصل شی به سییستم من ــ Mahmoud Khosravi در 2 سال قبل

منظورم اینه که توی پروژه های لاراول، توی فایل .env میشه mode نرم افزار رو تعیین کرد. که اگه دارید توسعه میدید باید بزاریدش روی debug، در غیر این صورت اگر پروژه رو روی سرور آپلود کردید باید بزاریدش روی product. همچنین طبق آخرین عکسی که نشون دادید، ظاهرا تمام مقادیر ارسالی از توی فرم html به این صفحه میرسن. خب این اولین مرحله دیباگ بود که ازش عبور کردیم. مرحله دوم اینه که آیا توی اون if میره؟ اگه اره، آیا میتونه کاربر رو شناسایی کنه؟ پس از $obj_user هم یه dd() بگیرید. ــ ساناز رضایی در 2 سال قبل

500 کاراکتر باقی مانده


1

در تکمیل پاسخ خانم رضایی، برای اینکه چک بکنی که رمز عبور قبلی درست وارد شده، که در فقط در اون صورت اجازه ویرایش رو بهش بدی، میتونی از همون validator لاراول استفاده کنی به این شکل:

/*
* Validate password input fields
*/
$this->validate($request, [
    'oldPassword' => Auth::user()->password,
    'password' => ''required|confirmed|min:6|different:password',
]);

مورد دوم رو که خانم رضایی توضیح دادند، فقط من different:password رو بهش اضافه کردم که به این معنی هست:

رمز عبور جدید، باید با رمز عبور قبلی قطعا فرق بکنه. یعنی نمیتونی رمز عبور جدیدت رو دقیقا مثل رمز عبور قبلیت انتخاب کنی، چرا که در این صورت ویرایش معنی خودش رو از دست میده و صرفا یه ریکوئست اضافه به سرور زده میشه.

برای مورد اول هم، ما رمز عبور فعلی کاربر رو میگیریم و با رمزی که به عنوان رمز عبور قبلی وارد شده چک میکنیم که درست باشه. همونطور هم که میدونید هدف از این کار این هستش که مطمین بشیم خود کاربر واقعی هست که میخواد رمزش رو عوض کنه.

جواب داده شده در سعید مرادی
1758 امتیاز

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


لام تا کام نسخه صفحه کلید نیز راه اندازی شده است. شما با استفاده از کلیدهای موجود بر روی صفحه کلید دستگاهتان می توانید با وب سایت ارتباط برقرار کنید.
لیست کلید های میانبر

تبلیغات توضیحی


اقتصاد رفتاری بررسی روشهای تاثیرگذار بر رفتار کاربران
مردم همیشه به دنبال چیزهایی هستند که نمیتونن اونارو داشته باشن، و با به سادگی نمیتونن اون رو به دست بیارن.

تبلیغات تصویری


محک