-1

2つのスニペットがあります(以下)。if ($loggedin != NULL){問題は、変数がnullでなくても、2番目のスニペットのifstatemntが渡されないことです。$loggedin1番目のスニペットの変数のようなものは適用されません。2つのスニペットを1つに組み合わせると、正常に機能します。

2つのスニペットを互いに「話す」方法を知っている人はいますか?(ps、Revo 2.1.3を実行)

<?php
$loggedin = "";
if (!isset($_SESSION['user_id'])) {
 // redirect to login page
}
else {
$loggedin = "true";
}

2番目:

<?php
if ($loggedin != NULL){
echo  "logged in";
}
else {
echo  "error";
}
4

1 に答える 1

1

まず、$loggedin 変数を 2 番目のスニペットに渡しません。これは通常、投稿またはセッション変数で行います。

次に、もっと簡単に確認する方法があります。これらは Bob のガイドから直接引用したものです。

There are various methods. One easy method is to use this code:

if ($modx->user->get('username') == '(anonymous)') {
    /* user is not logged in */
}    
Here is the official method for seeing if the user is logged in 
to the current context:

if ($modx->user->hasSessionContext($modx->context->get('key'))) {
    /* user is logged in */
}    
If you know the name of the current context (e.g., web), 
you can use this method. The name of the context is required:

if $modx->user->isAuthenticated('web') {
    /* user is logged in to web context */
}  

つまり、何らかの理由で独自の認証をロールする必要がある場合です。~ それ以外の場合は、ログイン/登録エクストラがこれらすべてを行います。

*UPDATE*** 同じリソース内の 1 つのスニペットから別のスニペットに 2 つのパス変数を渡すと、プレースホルダーを設定/取得できます。

<?php
// snippet one

$modx->setPlaceholder('output','Place holder set!');



<?php
// snippet two

$myvar = $modx->getPlaceholder('output');

echo 'this is the value of "output": '.$myvar;
于 2012-09-21T16:53:03.423 に答える