如果用户未登录则重定向PHP - Yii2

时间:2015-11-04 09:50:02

标签: php yii2

如果CO已完成,我的网站会发送一封电子邮件,其中包含指向该用户的链接。

如果用户未登录,则必须首先进入登录页面,并且只有在用户登录后才会将其重定向到网址。

现在如果用户已登录,他们直接转到网址,但没有登录进入登录页面,他可以登录,但他不是直接到网址,任何人都可以帮忙吗?

这个带有一些参数的网址会被发送给用户作为链接

<?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(); ?>

1 个答案:

答案 0 :(得分:0)

应使用会话来处理登录。

假设您的网址为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();