簡體   English   中英

如果用戶未登錄,則 PHP 重定向 - Yii2

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM