0

私はphpとmysqlに非常に慣れていません。サイトに登録およびログイン セクションを作成するための優れたチュートリアルを見つけました。私はそれをかなりうまく解体し、小さな変更を加えています。でも...

ユーザーがログインすると、次を使用してページへのアクセスを許可できます-

<?php
session_start();

if(!isset($_SESSION['username'])){
header("Location: index.php");
}
?>

ユーザーがログインしていて、「ログイン」ページに再度アクセスした場合、それを表示したくありませんが、「メンバーエリア」内のページにリダイレクトされます。これどうやってするの?

4

5 に答える 5

2

たとえばhttp://domain.com/のように URL に同じページをロードしたいが、ログインしているユーザーとログアウトしているユーザーで異なるページをロードしたい場合。あなたはこれを行うことができます。

session_start();

if(!isset($_SESSION['username'])) {
    require_once("pathToLoggedOutFile.php");
} else {
    require_once("PathToLoggedInFile.php");
}
die;

ログイン時に別のページにリダイレクトしたい場合は、同じことができます。たとえば、ヘッダーを使用してこれを行うことができます。

session_start();

if(isset($_SESSION['username'])) {
    header("Location: /pathtologgedinpage.php");
    die;
}
于 2013-01-26T02:17:37.720 に答える
0
//Your Logout.php script should look something like this.
$session_variable = $_SESSION['variable'];
session_unset($session_variable);
session_destroy();
header('Location: blah.php');

//Your session check script should look something like this. 
$session_variable = $_SESSION['variable'];
if(!isset($session_variable)) {
session_unset();
session_destroy();
header('Location: blah.php');
}
于 2013-01-26T02:38:36.993 に答える
0

header("Location: http://www.site.com")それ以前に何か書いてあると使えません。PHPヘッダー関数は次のようにする必要があります

<?php header("Location: http://www.site.com") ?>
于 2013-11-22T04:04:02.233 に答える
0

次のように、ナビゲーション メニューに 2 つのパスを設定します。

<?php
if (isset($_SESSION['username']))
{
?>
<a href="loggedinpage.php">PageName</a>
<?php
}
elseif (!isset($_SESSION['username']))
{
?>
 <a href="login.php">Login</a>
 <a href="bla.php">Page</a>
<?php
}
?>

したがって、 $_SESSION[] が設定されているかどうかに応じて..異なるアンカーが表示されます。

コメントへの返信

制限されたファイルで配列を作成してみてください..例:

if (isset($_SESSION))
{
   $Restrictions = array ("login.php", "index.php", "register.php");
  if (in_array($_SERVER['REQUEST_URI'], $Restrictions ))
  {
    die ("You Must Login To View These Pages!"); //I use die and an include in my scripts, but this will be called when the user is navigating to a page such as login.php when they already have an active session
  } 
}

上記の処理では、要求された URL に $_SERVER 配列が使用されます。ユーザー セッションがアクティブで、ユーザーが配列内の前述のフィールドに移動しようとすると、dieメッセージが表示されます。もちろん、これはニーズに合わせて変更できます。ログインしていないユーザーを制限することで、同じチャンクを使用して同様のことを行うこともできます。ログインが必要なページの閲覧から。

リダイレクトの場合

index.php では、次のようになります。

if (isset($_SESSION))
{
 header("Location: member_area.php");
 exit; // exit to stop the rest of your page (index.php for example) from processing.
}

これにより、アクティブなセッションがある場合、ユーザーはページにリダイレクトされます。


あなたの質問を見て; がアクティブな場合、ユーザーを member_area にリダイレクトする必要があります。次に、「リダイレクトの場合$_SESSION」という名前の下の最後のチャンクを使用します

于 2013-01-26T02:03:14.977 に答える
0

あなたが上に持っているものは、おおよそあなたが望むものであるようです。ログイン スクリプトが のセッション値を書き込むと仮定しますusername。よくわからない場合、または確認したい場合、およびあなたが初心者だと言っているので、どのセッション変数が設定されているかを確認すると役立つ場合があります。これを行のすぐ下に置くだけsession_start()です:

echo '<pre>';
print_r($_SESSION);
exit;

これは開発用にのみ使用し、使い終わったらコメントアウトしてください。

于 2013-01-26T02:03:22.657 に答える