[英]PHP redirect if user not log in - Yii2
如果 CO 最終確定,我的站點會向用戶發送帶有鏈接的電子郵件。
如果用戶未登錄,則用戶必須首先轉到登錄頁面,並且只有當用戶登錄時,他們才會被重定向到 url。
現在,如果用戶已登錄,他們會直接轉到 url,但未登錄會轉到登錄頁面,他可以登錄,但不能直接訪問 url 任何人都可以幫忙嗎?
這個帶有一些參數的頁面 url 作為鏈接發送給用戶
<?php
if(isset($_SESSION['ssid']) && $_SESSION['ssid'] == session_id() )
{
// do you staff, after login confirm
}
else {
// redirect to loginPage.php
}
use yii\helpers\Html;
use yii\helpers\Url;
use yii\widgets\ActiveForm;
use yii\widgets\Pjax;
use kartik\grid\GridView;
use backend\models\Item;
use backend\models\Respond;
use kartik\time\TimePicker;
use backend\models\RespondItem;
use backend\models\RequestItem;
use backend\models\DistributorHasItemCode;
?>
<?php
$check = null;
$checknow = null;
$checkfield = null;
$today = date('Y-m-d');
$date = date("Y-m-d H:i:s", time());
$date1 = new DateTime($date);
$date2 = new DateTime($model->end_date.' '.$model->end_time);
if(empty($model->end_date))
{
$model->end_date = $today;
}
if (Yii::$app->user->identity->ref_table =="sales_rep")
{
$sales_rep = Yii::$app->user->identity->ref_id;
$respond = Respond::find()->where(['sales_rep_id'=>$sales_rep,'customer_order_request_id'=>$model->id])->one();
if (!empty($respond) && $respond->status == 'Finalized and customer Notified' || $date1>=$date2 )
{
$check = "disabled='disabled'";
}
if ($model->status == 'Finalized and Sales Rep Notified') {
$checknow = "disabled='disabled'";
}
}else {
if ($model->status == 'Finalized and Sales Rep Notified') {
$check = "disabled='disabled'";
}
}
?>
<?= Yii::$app->session->getFlash('success') ?>
<div class="customer-order-request-form">
<?php $form = ActiveForm::begin(['id'=>'cor']); ?>
<fieldset <?= $check?> >
<fieldset <?= $checknow?> >
<div class="row">
<div class="col-lg-4">
<?= $form->field($model, 'code')->textInput(['maxlength' => 10,'readonly'=>TRUE]) ?>
</div>
<div class="col-lg-2" disabled>
<?= $form->field($model, 'end_date')->widget(\yii\jui\DatePicker::classname(), [
'dateFormat' => 'yyyy-MM-dd',
'clientOptions'=> ['defaultDate'=>$today,'minDate' =>$today,],
'options'=>[
'class'=> 'form-control',
],
])
?>
</div>
<div class="col-lg-2">
<?= $form->field($model, 'end_time')->widget(TimePicker::classname(), [
'pluginOptions' =>
[
'showMeridian' => true,
],
]);
?>
</div>
<div class="col-lg-4">
<?= $form->field($model, 'status')->textInput(['readonly'=>TRUE]) ?>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<?= $form->field($model, 'description')->textarea(['rows'=>3]);?>
</div>
</div>
</fieldset>
<div class="form-group">
<?= Html::submitButton((Yii::$app->user->identity->ref_table =="sales_rep")?'Save':'Update', ['class' =>'btn btn-success']) ?>
<?= Html::button((Yii::$app->user->identity->ref_table =="sales_rep")?'Finalize & Notify Customer':'Finalize & Notify Sales Reps', ['class' => 'btn btn-primary finalize']) ?>
</div>
</fieldset>
<?php ActiveForm::end(); ?>
應該使用會話來處理登錄。
假設您的網址是http://somedomain.com/somepage.php?token=some_tokan
。 因此,在somepage.php ,使用會話檢查進行登錄確認,例如:
<?php
ob_start();
session_start();
if(isset($_SESSION['ssid']) && $_SESSION['ssid'] == session_id() )
{
// do your stuff, after login confirm
}
else {
// redirect to loginPage.php
// With "header('Location:yoururl'); for example
}
在loginPage.php 中,成功登錄憑據后,分配$_SESSION['ssid']
值,如:
ob_start();
session_start();
// if login credentials are verified.
$_SESSION['ssid'] = session_id();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.