在“索引”页面中显示用户名

时间:2014-10-01 08:44:50

标签: php mysql session

我知道在SO中有这么多问题。但是,我的代码与那里有点不同。

我所拥有的是登录页面,我必须先登录才能进入索引页面。

首先,我想说我从某人那里得到的代码几天前没有工作。但是当我今天再次检查它时,令人难以置信的是它现在正在工作。

所以,今天我在这里有两个问题,如下:


  1. 我想在索引页面中显示用户信息。其实我只想显示用户名。但是,由于我在数据库表中没有用户名行,如果它只能显示用户电子邮件,我会暂时接受它。

    1. 我希望这里的一些专家能够查看我的代码。正如我上面提到的,几天前的代码不起作用。今天它没有我改变的单一事物。

    2. 这里的重要问题是第一个问题,即显示用户信息。

      这是我的代码:

      1。 Index.php

      <?php
      include('UserSessionAdmin.php');
      ?>
      
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>DASHBOARD</title>
      <link rel="stylesheet" type="text/css" href="css.css"/>
      
      
      </head>
      
      <body>
      <?php echo "$myemail";?>
      

      2。 UserSessionAdmin.php

      <?php
      session_start();
      
      if ( $_SESSION['login_id'] == 0 || $_SESSION['login_id'] == '' ) {
          header('location: login.html');
          exit();
      }
      
      require_once('configPDO.php');
      ?>
      

      第3。的login.html

                      <div id="login-form">
                      <form method="post" action="CheckLogin.php">
                          <span class="identity">E-mail</span>
                              <input type="text" id="myemail" name="myemail" class="text" />
                          <span class="identity">Password</span>
                              <input type="text" id="mypassword" name="mypassword" class="text" />
                          <p id="button">
                              <input type="submit"/></p> 
                      </form>
                  </div>
      

      4。 CheckLogin.php

      <?php
      // Start Session because we will save some values to session varaible.
      session_start();
      
         include("configPDO.php");
      
         $myemail=$_POST['myemail']; 
         $mypassword=$_POST['mypassword']; 
      
         $STM = $dbh->prepare("SELECT * FROM user WHERE myemail = :myemail AND mypassword = :mypassword");
      
         $STM->bindParam(':myemail', $myemail);
         $STM->bindParam(':mypassword', $mypassword);
      
         $STM->execute();
      
         $count = $STM->rowCount();
      
         $row  = $STM -> fetch();
      
         if($count==1)
      
         {
           $_SESSION['login_id']=$row['id'];
      
          if($_SESSION['login_id'] == 1) { 
              header( "location:index.php");  
          }
          else { 
              header( "location:login3.html");  
          }
      
      }
      
      else 
      {
      header("location:login4.html");
      }
      
      $dbh = null;
      ?>
      


      感谢您的帮助。干杯和问候,

3 个答案:

答案 0 :(得分:2)

你必须做的第一个改变是在Checklogin.php文件中:

1)CheckLogin.php:

if($_SESSION['login_id'] == 1) { 
    $_SESSION['myemail'] = $myemail;
    header( "location:index.php");  
}
else { 
    header( "location:login3.html");  
}

您必须进行的第二次更改是在index.php文件中:

2)Index.php

<?php echo $_SESSION['myemail'];?>

但实际上在CheckLogin.php文件中存在检查login_id的问题。数据库中的所有用户是否都具有login_id等于1.出于何种目的,您在数据库表中添加了login_id字段。根据此代码,只有那些拥有login_id的用户等于1且用户名&amp;密码可以登录。否则,即使他输入了正确的用户名,密码将无法登录,因此在我认为之前就会发生这种情况。

答案 1 :(得分:2)

<强> CheckLogin.php

if ( $count == 1 )  {
    $_SESSION['login_id'] = $row['id'];
    $_SESSION['username'] = $row['username']; // added

    if ( $_SESSION['login_id'] != '' || $_SESSION['login_id'] > 0 ) { // edited
        header("location: index.php");  
    } else { 
        header("location: login3.html");  
    }
}

<强>的index.php

<?php
    require_once 'UserSessionAdmin.php'; // edited
    $username = $_SESSION['username']; // added
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>DASHBOARD</title>
    <link rel="stylesheet" type="text/css" href="css.css"/>
</head>

<body>
<?php echo $username; ?> // edited

答案 2 :(得分:0)

创建一个方法,您可以使用该方法传递电子邮件,并返回如下所示的用户名:

function usernameFromEmail($email) {
    $username = $db->prepare('SELECT username FROM table WHERE email = ?');
    $username->execute(array($email));

    return $username->fetch();
}

然后,您可以调用此方法并通过电子邮件,并且您将拥有用户名。

将表替换为表的名称,使用列的真实名称发送电子邮件,使用列的真实名称替换用户名。