Paradox
3 سال پیش توسط Paradox مطرح شد
11 پاسخ

مشکل در احراز هویت با کد ملی

سلام دوستان من میخام ابتدا احراز هویت با کد ملی انجام بشه
بد وارد صفحه ثبت نام بشه و اطلاعات کامل تو دیتابیس ذخیره بشه
برای احراز هویت من به این شکل زیر نوشتم در حال حاظر روت صفحه ای که میخام احراز هویت با کد ملی انجام شه رو اجرا میکنم

http://localhost:8000/registercod

ریدایرکت میشه به صفحه اصلی
لطفا راهنمایی کنید خیلی ضرروریه ممنون

یک رول ایجاد کردم

    public function passes($attribute, $value)
    {
        if(!preg_match('/^[0-9]{10}$/',$value))
            return false;
        for($i=0;$i<10;$i++)
            if(preg_match('/^'.$i.'{10}$/',$value))
                return false;
        for($i=0,$sum=0;$i<9;$i++)
            $sum+=((10-$i)*intval(substr($value, $i,1)));
        $ret=$sum%11;
        $parity=intval(substr($value, 9,1));
        if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity))
            return true;
        return false;
    }

ویو

                        <form method="GET" action="/registercod">
                            @csrf

                            <div class="form-group">
                                <div class="col-md-8 m-auto">
                                    <input id="codemeli" type="text" class="form-control @error('codemeli') is-invalid @enderror" name="codemeli" required autocomplete="codemeli" autofocus placeholder="شماره ملی خود را وارد نمایید">

                                    @error('codemeli')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                    @enderror
                                </div>

                                    <a href="{{ route('register') }}" type="submit" class="btn bg-secondary btn-block text-light">
                                        {{ __('شروع ثبت نام') }}
                                    </a>
                            </div>
                        </form>

روت

Route::get('/registercod' ,'Auth\RegistercodController@registerview')->name('registercod');
Route::get('/registercod' ,'Auth\RegistercodController@registercod');

کنترلر

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Rules\Nationalcode;

class RegistercodController extends Controller
{

    public function registerview()
    {
        return view('auth.registercod');
    }

    public function registercod(Request $request)
    {
        $validData = $request->validate([

        'codemeli' => ['required', new Nationalcode],
     ]);

        if($validData){
             return redirect(route('register'));
        }

    }
}

ثبت پرسش جدید
amir
تخصص : بک اند و فرانت اند
@behzadi 3 سال پیش مطرح شد
-1

یعنی منظورتون اینه که اصلا نمیتونین اطلاعات رو وارد کنین و از همون اول ریدایرکت میشین یا اینکه بعد از وارد کردن اطلاعات اینجوری میشه؟


amir
تخصص : بک اند و فرانت اند
@behzadi 3 سال پیش آپدیت شد
0

و چون از متده post استفاده کردین فک کنم بجای get در روت بنویسین post البته من درحال یادگیری لاراول هستم واگ اشتباهی چیزی رو گفتم دوستان که حرفه ای هستن پاسخ بدن


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@behzadi
اصلا این روت

http://localhost:8000/registercod

برام اجرا نمیشه از اول ریدایرکت میشم به صفحه اصلی


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش آپدیت شد
0

سلام یکبار cookie و کش مرورگرتون رو پاک کنید.( شاید قبلا ریجستر کردید و ریدایرکت به همون علت هست)
@wxyz


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش آپدیت شد
1

بعد دوست عزیز در اینجا دو روت با یک متد و url قرار دادید.

Route::get('/registercod' ,'Auth\RegistercodController@registerview')->name('registercod');
Route::get('/registercod'/* نام در اینجا تکراری هست */ ,'Auth\RegistercodController@registercod');

@wxyz


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@websaz
ممنونم درسته دقت نکردم روت درست شد

بد از اینکه کد ملی وارد شد من برای دکمه ثبت این روت قرار دادم


                                    <a href="{{ route('register') }}" type="submit" class="btn bg-secondary btn-block text-light">
                                        {{ __('شروع ثبت نام') }}
                                    </a>

میدونم اشتباهه فقط سوالی که هست چون نمیخام تو این مرحله تو دیتابیس ذخیره بشه و کد ملی احراز هویت بشه
چی باید بنویسم ؟
میخام اول کد ملی احراز هویت بشه اگه درست بود وارد صفحه ثبت نام اصلی بشم اگه نبود مجوز ورود به صفحه register نباشه


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

سلام می توانید بعد از درخواست پست چک کنید اگر درست بود در همان کنترلر و فانکشن فرم بعدی رو نشون بدید ( بدون ریدایرکت ).


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@websaz
الان این روت که برای ثبت گذاشتم رو بردارم ؟


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

کنترلر به این صورت نوشتم

   public function registercod(Request $request)
    {
        $validData = $request->validate([

        'codemeli' => ['required', new Nationalcode],
     ]);

        if($validData){
             return redirect(route('register'));
        }

    }

سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

من پیشنهادم می کنم به این شکل باشد.

   public function registercod(Request $request)
    {
        $validData = $request->validate([

        'codemeli' => ['required', new Nationalcode],
     ]);

        if($validData){
             /* نمایش فورم جدید */
        }

    }

@wxyz


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش آپدیت شد
0

ممنون
مشکل از روت بود حل شد
الان میخام اگه کاربر تو مرورگر روت register تایپ کرد ریدایرکت بشه به روت registercod
برای این چیکار باید کرد ؟

من کد زیر نوشتم ولی تاثیری نداره ، تو متد registercod باید شرط بزارم ؟

        $user = User::whereCodemeli($request['codemeli'])->first();

        $request->session()->flash('register' , [
            'user_id' => $user->id,
            'registerform' => $request->has('registerform')
        ]);
        return redirect(route('registerform'));

این کد هم تاثیری نداشت

        if(! $request->session()->has('register')) {
            return redirect(route('registerform'));
        }

        $request->session()->reflash();

        return view('registerform');

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام