سلام دوستان من میخام ابتدا احراز هویت با کد ملی انجام بشه
بد وارد صفحه ثبت نام بشه و اطلاعات کامل تو دیتابیس ذخیره بشه
برای احراز هویت من به این شکل زیر نوشتم در حال حاظر روت صفحه ای که میخام احراز هویت با کد ملی انجام شه رو اجرا میکنم
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'));
}
}
}
یعنی منظورتون اینه که اصلا نمیتونین اطلاعات رو وارد کنین و از همون اول ریدایرکت میشین یا اینکه بعد از وارد کردن اطلاعات اینجوری میشه؟
و چون از متده post استفاده کردین فک کنم بجای get در روت بنویسین post البته من درحال یادگیری لاراول هستم واگ اشتباهی چیزی رو گفتم دوستان که حرفه ای هستن پاسخ بدن
@behzadi
اصلا این روت
http://localhost:8000/registercod
برام اجرا نمیشه از اول ریدایرکت میشم به صفحه اصلی
سلام یکبار cookie و کش مرورگرتون رو پاک کنید.( شاید قبلا ریجستر کردید و ریدایرکت به همون علت هست)
@wxyz
بعد دوست عزیز در اینجا دو روت با یک متد و url قرار دادید.
Route::get('/registercod' ,'Auth\RegistercodController@registerview')->name('registercod');
Route::get('/registercod'/* نام در اینجا تکراری هست */ ,'Auth\RegistercodController@registercod');
@websaz
ممنونم درسته دقت نکردم روت درست شد
بد از اینکه کد ملی وارد شد من برای دکمه ثبت این روت قرار دادم
<a href="{{ route('register') }}" type="submit" class="btn bg-secondary btn-block text-light">
{{ __('شروع ثبت نام') }}
</a>
میدونم اشتباهه فقط سوالی که هست چون نمیخام تو این مرحله تو دیتابیس ذخیره بشه و کد ملی احراز هویت بشه
چی باید بنویسم ؟
میخام اول کد ملی احراز هویت بشه اگه درست بود وارد صفحه ثبت نام اصلی بشم اگه نبود مجوز ورود به صفحه register نباشه
سلام می توانید بعد از درخواست پست چک کنید اگر درست بود در همان کنترلر و فانکشن فرم بعدی رو نشون بدید ( بدون ریدایرکت ).
کنترلر به این صورت نوشتم
public function registercod(Request $request)
{
$validData = $request->validate([
'codemeli' => ['required', new Nationalcode],
]);
if($validData){
return redirect(route('register'));
}
}
من پیشنهادم می کنم به این شکل باشد.
public function registercod(Request $request)
{
$validData = $request->validate([
'codemeli' => ['required', new Nationalcode],
]);
if($validData){
/* نمایش فورم جدید */
}
}
ممنون
مشکل از روت بود حل شد
الان میخام اگه کاربر تو مرورگر روت 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');
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟