-4

次のようなセッションを設定するためのコードがあります。

if($found>0){
    session_start();
    $_SESSION['user_name']=$user;

    session_set_cookie_params(24*60*1,'/','.localhost');

    $expire=time()+60*60*24;
    setcookie("cookiename", $user, $expire);

    header("location:http://localhost/UI/user/userprofile.php");
} else{
    $message =  "Username or  password is not correct.";
    header("Location:index.php?message={$message}");
}

これがログインとログアウトを配置するヘッダーコンテンツです

session_start();
if (isset($_COOKIE["cookiename"])){
    $unm = $_SESSION["user_name"];
    echo "User :  " . $_SESSION["user_name"] . "";
    echo " <a href='http://localhost/UI/user/logout.php'>logout</a>";
    echo " <a class='addmeeting' href='http://localhost/UI/user/createmeeting.php' title='Create New Meeting'>Create Meeting</a>";
} else{
    echo "<li><a href='register.php'>Register</a></li>";
    echo " User : Guest!<br />";
}

私のセッションはサブフォルダーでは機能していますが、親フォルダーでは機能していません。ディレクトリ構造は次のとおりです。

UI 
   user
      userprofile.php
      login.php
      logout.php 
   index.php
   headers.php

私が間違っていることを教えてください。

4

1 に答える 1

2

私の推測では、セッションではなく、機能していないのはCookieです(セッションコードは、if()最初にCookieをチェックするブロック内にあります)。

Cookieはデフォルトで現在のフォルダに制限されているため、親フォルダには適用されません。

/サイト全体に適用する場合は、次のようにCookieでを指定する必要があります。

setcookie("cookiename", $user, $expire, '/');

これにより、サイト全体にCookieが設定されるため、コードが機能するはずです。

ただし、とにかくここでセッションを使用しているだけではない理由はよくわかりません。なぜCookieとセッションが同じコンテキストにあるのですか?セッションのすべてを設定して、それで済ませることもできます。(セッションはとにかくCookieベースです)

于 2012-09-07T14:43:31.157 に答える