2013-03-25 4 views
1

enter image description hereполучить данные пользователя, вошедшего в

так что я эту базу данных вместе с этим кодом. эти коды позволят пользователю войти на страницу с сеансом.
LOGIN FORM (login.php)

<?php 
    require("common.php"); 
    $submitted_username = ''; 
    if(!empty($_POST)) 
    { 
     $query = " 
      SELECT 
       id, 
       username, 
       password, 
       salt, 
       email 
      FROM users 
      WHERE 
       username = :username 
     "; 
     $query_params = array(
      ':username' => $_POST['username'] 
     ); 

     try 
     { 
      $stmt = $db->prepare($query); 
      $result = $stmt->execute($query_params); 
     } 
     catch(PDOException $ex) 
     { 
      die("Failed to run query: " . $ex->getMessage()); 
     } 
     $login_ok = false; 
     $row = $stmt->fetch(); 
     if($row) 
     { 
      $check_password = hash('sha256', $_POST['password'] . $row['salt']); 
      for($round = 0; $round < 65536; $round++) 
      { 
       $check_password = hash('sha256', $check_password . $row['salt']); 
      } 

      if($check_password === $row['password']) 
      { 
       $login_ok = true; 
      } 
     } 
     if($login_ok) 
     { 
      unset($row['salt']); 
      unset($row['password']); 
      $_SESSION['user'] = $row; 
      header("Location: private.php"); 
      die("Redirecting to: private.php"); 
     } 
     else 
     { 
      print("Login Failed."); 
      $submitted_username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8'); 
     } 
    } 

?> 
<h1>Login</h1> 
<form action="login.php" method="post"> 
    Username:<br /> 
    <input type="text" name="username" value="<?php echo $submitted_username; ?>" /> 
    <br /><br /> 
    Password:<br /> 
    <input type="password" name="password" value="" /> 
    <br /><br /> 
    <input type="submit" value="Login" /> 
</form> 
<a href="register.php">Register</a> 

Session (common.php)

<?php 

    // These variables define the connection information for your MySQL database 
    $username = "root"; 
    $password = ""; 
    $host = "localhost"; 
    $dbname = "phplogin"; 


    $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 
    try 
    { 
     $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to connect to the database: " . $ex->getMessage()); 
    } 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 

    if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) 
    { 
     function undo_magic_quotes_gpc(&$array) 
     { 
      foreach($array as &$value) 
      { 
       if(is_array($value)) 
       { 
        undo_magic_quotes_gpc($value); 
       } 
       else 
       { 
        $value = stripslashes($value); 
       } 
      } 
     } 

     undo_magic_quotes_gpc($_POST); 
     undo_magic_quotes_gpc($_GET); 
     undo_magic_quotes_gpc($_COOKIE); 
    } 

    header('Content-Type: text/html; charset=utf-8'); 
    session_start(); 
?> 

Показать страницы (private.php)

<?php 
    require("common.php"); 
    if(empty($_SESSION['user'])) 
    { 
     header("Location: login.php"); 
     die("Redirecting to login.php"); 
    } 
?> 
<?php 
    $query = " 
     SELECT 
      id, 
      username, 
      email, 
      task, 
      task_name 
     FROM users 
    "; 

    try 
    { 
     $stmt = $db->prepare($query); 
     $stmt->execute(); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to run query: " . $ex->getMessage()); 
    } 
    $rows = $stmt->fetchAll(); 
?> 
<h1>Memberlist</h1> 
<table border='1'> 
    <tr> 
     <th>User</th> 
     <th>E-Mail Address</th> 
     <th>Task Name</th> 
     <th>Task Description</th> 

    </tr> 
    <?php foreach($rows as $row): ?> 
     <tr> 
      <td><?php echo htmlentities($row['username'], ENT_QUOTES, 'UTF-8'); ?></td> 
      <td><?php echo htmlentities($row['email'], ENT_QUOTES, 'UTF-8'); ?></td> 
      <td><?php echo htmlentities($row['task_name'], ENT_QUOTES, 'UTF-8'); ?></td> 
      <td><?php echo htmlentities($row['task'], ENT_QUOTES, 'UTF-8'); ?></td> 

     </tr> 
    <?php endforeach; ?> 
</table><br /> 

то, что я хотел сделать, это отобразить данные пользователя, который в настоящий момент находится в системе. например, когда пользователь1 регистрирует все детали в своем профиле lng имя пользователя, адрес электронной почты, задачи и имя задачи, будет отображаться, но в моем коде он будет отображать все детали.

+0

Вы хотите отобразить всех пользователей, которые вошли в систему, или сведения о пользователе, которые вошли в систему сейчас? –

+0

человек, который в настоящее время вошел в систему/сейчас – Yinks

ответ

0

В вашей странице private.php изменить что-то вроде этого запроса:

$query = " 
     SELECT 
      id, 
      username, 
      email, 
      task, 
      task_name 
     FROM users 
     WHERE id = '".$_SESSION['user']['id']."' 
    "; 

Здесь $_SESSION['user']['id'] Содержит идентификатор зарегистрированного пользователя, So onl y получить сведения об этом пользователе, используя WHERE в mysql.

1

Ваш select запрос не является неправильным

$query = " 
     SELECT 
      id, 
      username, 
      email, 
      task, 
      task_name 
     FROM users WHERE username = '".$_SESSION['user']['username']."' 
    "; 

нет необходимости foreach

<tr> 
    <td><?php echo htmlentities($rows['username'], ENT_QUOTES, 'UTF-8'); ?></td> 
    <td><?php echo htmlentities($rows['email'], ENT_QUOTES, 'UTF-8'); ?></td> 
    <td><?php echo htmlentities($rows['task_name'], ENT_QUOTES, 'UTF-8'); ?></td> 
    <td><?php echo htmlentities($rows['task'], ENT_QUOTES, 'UTF-8'); ?></td> 
</tr> 
+1

'$ _SESSION ['user']' на самом деле является массивом, поэтому я предполагаю, что это должно быть что-то вроде: '$ _SESSION ['user'] ['username']' в вашем запросе –

+0

@PrasanthBendra спасибо –

Смежные вопросы