Für die Yii2-Aktion ist eine Autorisierung erforderlich, obwohl sie für jedermann verfügbar istPhp

PHP-Programmierer chatten hier
Anonymous
 Für die Yii2-Aktion ist eine Autorisierung erforderlich, obwohl sie für jedermann verfügbar ist

Post by Anonymous »

Ein dynamisches Banner wird auf der Seite des veröffentlichten Beitrags platziert (das Banner wird aus der Datenbank übernommen). Unter einem autorisierten Benutzer wird es normal geladen, aber wenn ich ohne Autorisierung auf die URL gehe, wird aus irgendeinem Grund zur Site/Login weitergeleitet. Wenn ich den Bannercode von der Seite lösche, wird der Inhalt des Beitrags für jeden Benutzer normal geladen, unabhängig davon, ob er autorisiert ist oder nicht. Das Problem tritt sowohl in der Produktion als auch auf dem lokalen Computer auf
Seiten-URL:
http://site.local/ru/topic/view?title=anons
Controller:

Code: Select all

    class TopicController extends Controller {
public $layout = 'main';
public $defaultAction = 'index';

public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
['allow' => true, 'actions' => ["create", "update", 'admin'], 'roles' => ['@']],
['allow' => true, 'actions' => ["index", "view"], 'roles' => ['?', '@']]
]
]];
}

/**
* Displays a particular model.
* @param string $title the title of the model to be displayed
*/
public function actionView($title) {
$model = Topic::findOne(["code"=>$title]);
if (empty($model))
return $this->redirect(['/404']);

if (!$model->published && (Yii::$app->user->isGuest))
return $this->redirect(['/404']);

if ($model->paid > 0)
Yii::$app->params["nofollow"] = 1;

return $this->render('view', array(
'model'=>$model
));
}
Ansicht:

Code: Select all

    





[i][/i]




Banner/Viewh anzeigen:

Code: Select all

    
id?>" data-bid="">
[url=" title="" target='_blank' rel="nofollow">
[img]" alt="" loading="lazy">
[/url]


Wenn ich die Zeile auskommentiere

Code: Select all

    $banner = Banner::getRandom($type);
dann funktioniert alles wie es soll, - die Seite lädt und erfordert keine Autorisierung.
Bannersuche:

Code: Select all

    public static function getRandom($type = "main_banner") {
$lang = Yii::$app->language;
$country = self::getCountry();
$now = date("Y-m-d");
$tbl = self::tableName();
$tbs = Service::tableName();
$sql = "select $tbl.* from $tbl
inner join $tbs on $tbl.serviceid = $tbs.id
where published = 1
and $tbs.code like :position
and $tbs.lang = :lang
and (finaldate is null or
(initialdate = :now))
and (options is null or length(options) = 0 or options like :country)
order by rand()
limit 1";

$postfix = ("ru" == $lang) ? "" : "_".$lang;
$query = self::findBySql($sql, [
":position"=>$type.$postfix,
":lang"=>$lang,
":now"=>$now,
":country"=>"%".$country."%"
]);
return $query->one();
}
Ich kann das Problem nicht herausfinden, bitte helfen Sie mir. Wenn kein Banner vorhanden ist, wird die Seite für jeden Benutzer normal geladen – einen autorisierten Benutzer oder einen Gast. Wenn ein Banner vorhanden ist, sieht der autorisierte Benutzer sowohl die Seite als auch das Banner, der Gast wird jedoch aus irgendeinem Grund zu site/login weitergeleitet

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post