2015-11-04 3 views
-2

Мой сайт отправляет электронное письмо со ссылкой на пользователя, если CO завершено.PHP перенаправление, если пользователь не зарегистрировался - Yii2

Если пользователь не подписан, пользователь должен сначала перейти на страницу входа в систему, и только если пользователь будет подписан, то они будут перенаправлены на 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(); ?> 

+4

Может вы делитесь с нами своим кодом? Что ты уже испробовал ? – Nirnae

+0

Я добавлю код назначения URL. что вам нужно для решения проблемы? – learnwhat

+1

https://stackoverflow.com/questions/33514216/how-to-redirect-user-to-particular-link-after-login-in-php/33514268#33514268 https://stackoverflow.com/questions/768431/ Как сделать-а-redirect-in-php – Jameson

ответ

0

Если использовать сеанс для обработки входа.

Предположим, ваш url is 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(); 
Смежные вопросы