0

わかりましたこれで立ち往生しています。isset 関数を試しましたが、何も起こりません...

ログインすると、ユーザーは特定のページにリダイレクトされます。

モデレーターが彼女の user_type の場合、彼女は moderator.php ページにリダイレクトされます エージェントが彼女の user_type の場合、彼女は agent.php にリダイレクトされます

ログインフォームが含まれているindex.phpをここに持ってきました

<form action="index.php" method=get>
    <?php
    session_start();
    if ($_SESSION["logging"] && $_SESSION["logged"]) {
        printme();
    }
    else {
        if (!$_SESSION["logging"]) {
            $_SESSION["logging"] = true;
            loginform();
        }
        else if ($_SESSION["logging"]) {
            $number_of_rows = checkpass();
            if ($number_of_rows == 1) {
                $_SESSION[user]   = $_GET[userlogin];
                $_SESSION[logged] = true;
                echo "<h1>You have logged in successfully</h1><br/>";
                echo "<a href='logout.php'>Logout</a> | <a href='users.php'>Click to proceed</a>";
            }
            else {
                loginform();
            }
        }
    }

    function loginform() {
        print ("<center><div id='login_header'><b><font face='Arial Black' color='black' size='4px'>Sign in to Minquep!</font></b></div></cen                   ter>");
        print("<br/><br/>");
        print ("<center><label>Username:</label><input type='text' name='userlogin' size='20'><br/><label>Password:</label><input type='                password' name='password' size='20'></center>");
        print "<br/><input type='submit' value='Submit' name='submit' class='submit'>";
    }

    function checkpass() {
        $dbHost = 'localhost';
        $dbUser = 'root';
        $dbPass = '';
        $dbname = 'minquep_test';
        $conn   = mysql_connect($dbHost, $dbUser, $dbPass); // Connection Code        mysql_select_db($dbname, $conn); // Connects to database      
        $sql    = "select * from users where login='$_GET[userlogin]' and password='$_GET[password]'";
        $result = mysql_query($sql, $conn) or die(mysql_error());
        $fetched = mysql_fetch_array($result);
        if ($fetched['user_type'] == "moderator") {
            echo '<script type="text/javascript">window.alert("You have logged in successfully!\n")</script>';
            print("<b><h1>hi mr.$_SESSION[user]</h1>");
            echo "<meta http-equiv=\"refresh\" content=\"0;URL=pages/moderator.php\">";
        }
        else if ($fetched['user_type'] == "agent") {
            echo '<script type="text/javascript">window.alert("You have logged in successfully!\n")</script>';
            echo "<meta http-equiv=\"refresh\" content=\"0;URL=pages/agent.php\">";
        }
    }

    function content() {
        print("<b><h1>hi mr.$_SESSION[user]</h1>");
        print "<br><h2>only a logged in user can see this</h2>";
    }

    function printme() {
        echo '<script type="text/javascript">window.alert("You have logged in successfully!\n")</script>';
    }

    ?>

</form>

上記のコードから、user_type に基づいてユーザーを特定のページにリダイレクトする方法を次に示します。

if ($fetched['user_type'] == "moderator") {
    echo '<script type="text/javascript">window.alert("You have logged in successfully!\n")</script>';
    print("<b><h1>hi mr.$_SESSION[user]</h1>");
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=pages/moderator.php\">";
}
else if ($fetched['user_type'] == "agent") {
    echo '<script type="text/javascript">window.alert("You have logged in successfully!\n")</script>';
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=pages/agent.php\">";
}

これで、moderator.php 内で、ログインしているユーザーのユーザー名と user_type を出力するはずの moderator_include.php を呼び出すだけです。

moderator.php

<div id="wrapper">
    <div id="container">

        <div id="header">

            <?php include "moderator_header.php"; ?>

        </div>

これには、moderator_header.php が含まれています。

<div class="logo">
    <a href="moderator.php"><img class="logo_img" src="../images/minquepLOGO.png"/></a>
</div>

<div id="title">
    <img src="../images/title.gif"/>

</div>
<br/>

<?php
    session_start();
    if ($_SESSION["logged"] = true) {


        print("<b><h1>hi mr. $_SESSION[user] . You are logged in as /*THE USER_TYPE GOES HERE */ </h1>");
    }
?>

ユーザー名を次のように出力しようとしました

if (isset($_SESSION['logged'])){
    print("<b><h1>hi mr. $_SESSION[user] . You are logged in as /*THE USER_TYPE GOES HERE */ </h1>"); }

しかし、何も起こりません...

ユーザーのuser_typeを出力する方法について... index.phpで発生したセッションの一部ではないため、これを行う方法がわかりません

ところで私のlogout.phpはこのようなものです

<?php
    session_start();
    if (session_destroy()) {
        print"<h2><B><blink>you have logged out successfully</B></blink></h2>";
        print "<h3><a href='index.php'>back to main page</a></h3>";
    }
?> 

助けてください...ありがとう

4

2 に答える 2

0
print("<b><h1>hi mr " . $_SESSION['user'] . "You are logged in as" . $userType . "</h1>"); }

それを試してみてください :)

編集

変数$userTypeを編集して本来の状態にします...

于 2012-07-21T10:32:52.997 に答える
0

時々、php は少しトリッキーになります...覚えておくべきいくつかのこと

1)常に出力の前にセッションを開始します。つまり、セッションを開始する前に、コードの先頭に空白スペースや空行があってはなりません。

2)セッションを開始するファイルがあり、別のファイルが含まれている場合、含まれているファイルで再度開始する必要はありません。

セッションを追跡するには、任意のページに次のコードを追加するだけです。

<pre><?php print_r($_SESSION); ?></pre>

そして結果がどうなるか見てください。

于 2012-07-21T10:35:29.803 に答える