こんにちは、.htaccessとphpの間で情報を共有することはできますか?
PHPスクリプトと.htaccessの間で情報を共有することは可能ですか? 私は$ _ENVを実験していましたが、うまく動作しませんでした。
私がしたいこと:
ログインシステムの作成。すべてのHTMLリクエストに対して、.htaccessはPHPを書き換えルールで呼び出して、元のurlをパラメータとして渡します。PHPがユーザにログインしているかどうかテストしています。そうでない場合:ログインページに移動します。要求されたURL私はPHPの "header($ url)"を使っていました。
問題:PHPスクリプトはログテストが成功した後、PHPスクリプトを呼び出すことによって.htaccessで再度処理される元のURLを要求しているため、常にループを開始します。
私の考え:.htaccess-conditionでアクセスできるPHPで変数を設定する方法はありますか?それは安全な方法ですか?
更新:
として私のコードここでは、を求めました。
PHP:
session_start();
$sOriginUrl = $_GET["url"];
if(!$sOriginUrl){
return false;
}
if($_SESSION["userName"]) {
if($_SESSION["userName"] !== null){
header("Location: " . $sOriginUrl, TRUE, 301);
}
else {
$aTokenizedOriginalUrl = explode("/", $sOriginUrl);
$sLoginUrl = "/";
for($i=0, $il=count($aTokenizedOriginalUrl); $i<($il-1); $i++) {
$sLoginUrl = $sLoginUrl . $aTokenizedOriginalUrl[$i] . "/";
}
header("Location: //myurl.de/" . $sLoginUrl);
}
}
else {
$aTokenizedOriginalUrl = explode("/", $sOriginUrl);
$sLoginUrl = "/";
for($i=0, $il=count($aTokenizedOriginalUrl); $i<($il-1); $i++) {
$sLoginUrl = $sLoginUrl . $aTokenizedOriginalUrl[$i] . "/";
}
$_ENV["HTTP_user_logged"]="true";
header("Location: //myurl.de/" . $sLoginUrl);
}
.htaccessファイル:任意の助け
RewriteEngine on
# This prevents the rewrite engine from looping
RewriteCond %{ENV:HTTP_user_logged} true
#RewriteCond %{forced_responsecode} 301
RewriteRule^- [L]
#RewriteCond %{ENV:REDIRECT_STATUS} !=""
RewriteCond %{HTTP_REFERER} !^/myurl.de/basics/validate-user-login-for-url.php$
RewriteCond %{REQUEST_URI} !^(/.*)/$
RewriteCond %{REQUEST_URI} !^(/.*)/index.html$
RewriteRule ^(.*\.html)$ /myurl.de/basics/validate-user-login-for-url.php?url=%{REQUEST_URI}&ref=%{HTTP_REFERER} [L,QSA]
感謝!!
コードを投稿してください。私はそれがhtaccessの問題ではなく、あなたのPHPの論理的なエラーだと思います。あなたは2つの間で "共有"する必要はありません –