如何在PHP中区分menubar中的登录和注销

时间:2012-03-07 11:51:11

标签: php html mysql

我正在创建会话,我可以有效地登录和注销。但我的问题是在菜单栏中我有登录选项。 当用户点击它并登录如何更改文本登录到文本注销?

例如

<a href"home.php">Home</a>
<a href"aboutus.php">Aboutus</a>
<a href"login.php">Login</a>

默认情况下,它们出现在主页中。但是当用户登录时,我希望将其更改为

<a href"home.php">Home</a>
<a href"aboutus.php">Aboutus</a>
<a href"logout.php">Logout</a>

自动即可。我知道我们必须创建一个会话并检查用户ID,我完全不知道如何。请帮帮我

7 个答案:

答案 0 :(得分:0)

您需要针对您的用户数据库验证登录信息。如果登录有效,则需要将其存储在会话中。 您可以使用PHP在会话中存储大量信息。会话ID使用cookie来回发送(这是一个自动过程)。因此,PHP将在每个连续请求中提供此会话信息。

您可以通过在每个请求开始时调用session_start();来启动会话加载会话信息。

您可以使用$_SESSION超全局在PHP中阅读此会话信息,并相应地更改输出。

this turorial中可以找到关于会话以及如何使用PHP实现它们的更好,更详细的解释,尽管还有许多其他方面可能同样出色。

答案 1 :(得分:0)

尝试使用

当您尝试输入用户电子邮件,密码并单击登录按钮

// login.php中

   public function check_login($emailid,$password)
   {

    $sql="select * from users where user_email='$emailid' and pwd='$password'" or die(mysql_error());
    $sql=mysql_query($sql);
    $user_data=mysql_fetch_array($sql);
    $num_of_rows=mysql_num_rows($sql);

 if($num_of_rows==1)
 {

     $_SESSION['user_id']=$user_data['id'];
     return true;

 }
 else
 {
  return false;

 }
  }


session_start();

   if(!$_SESSION['user_id'])
    {
        echo '< a href"login.php">Login</a>';
    }
    else
    {
        echo"<span><b>Welcome <?php $_SESSION['user']; ?></b></span>";
        echo '< a href"logout.php">Logout</a>';
    }

答案 2 :(得分:0)

你可以把这样的东西放在你的“主表”中:

<?php if ($USER_IS_LOGGED_IN){ ?>
  <a href"logout.php">Logout</a>
<?php }else{ ?>
  <a href"login.php">Login</a>
<?php } ?>

您可以声明一个$USER_IS_LOGGED_IN变量,或查看用户是否通过其他方式登录。

答案 3 :(得分:0)

简单的if语句。如下所示:

<?php
$loggedin = logincheck($_SESSION['username'],$_SESSION['password']);
?>
<a href"home.php">Home</a>
<a href"aboutus.php">Aboutus</a>
<?php 
  if ($loggedin) {
?>
<a href"logout.php">Logout</a>
<?php } else { ?>
<a href"login.php">Login</a>
<?php } ?>

注意:我不确定您是如何存储登录数据,或者您是如何检查用户是否已登录。因此,需要更改此代码以适应此情况。

答案 4 :(得分:0)

您应该编写isLoggedIn函数。 如果会话的名称为uid且其值为user id,请执行以下操作:

function isLoggedIn()
{
 if(!isset($_SESSION['uid']) || intval($_SESSION['uid']) == 0)
  return false;

 $uid = md5($_SESSION['uid']);
 $q = mysql_query("SELECT id FROM members WHERE md5(id) = '$uid'");
 if(mysql_num_rows($q) > 0)
  return true;
 return false;
}

在菜单栏中写下条件:

if(isLoggedIn())
{
 echo "logout";
}
else
{
 echo "login";
}

请注意,这只是一个例子,您需要根据需要重新编写它。

答案 5 :(得分:0)

你可以使用php来做到这一点..你创建一个php块,使用echo生成Login .. 它应该是这样的

<?php if(isset($_SESSION['username'])) echo "<a href'login.php'>Login</a>"; else echo "<a href'logout.php'>Logout</a>"; ?>

答案 6 :(得分:0)

使用会话变量来识别当前用户是否已登录,然后创建if-else语句以获得所需的功能......

示例---:

如果用户已登录,则在登录功能中创建会话变量:

function log_in()
{
   ...
   session_start();
   $_SESSION['user_id'] = 'user_id';
   ...
}

然后在你想要的地方尝试这样的事情......

function check_log()
{
  if(isset($_SESSION['user_id']))
  {
    ...
    echo "<a href='logout.php'>logout</a>";
    ...
  }
  else
  {
    ...
    echo "<a href='login.php'>login</a>";
    ...
  }
}