Как сохранить пользовательские данные на разных страницах, используя php - PullRequest
1 голос
/ 18 января 2020

У меня есть 3 страницы, я пытаюсь создать простую систему входа в систему с использованием сессии.

На моей первой странице (индекс. php) у меня есть подключение к базе данных, настройка сеанса и следующий логин с:

<form action="index.php" method="POST">
  <table>
    <tr>
        <td><label>Username</label></td>
        <td><input type="text" name="username" /></td>
    </tr>

    <tr>
        <td><label>Password</label></td>
        <td><input type="password" name="password" /></td>
    </tr>

    <tr>
        <td></td>
        <td><input type="submit" name="submitbtn" value="Login" /></td>
    </tr>

  </table>
</form>

На странице профиля пользователя (member. php) , У меня есть таблица для извлечения данных из базы данных этого специфицированного c члена, вошедшего в систему:

<table>
  <?php $members=getMember(); ?>

  <?php  while($member = $members->fetch_assoc()) : ?>

  <tr><td><label>Name</label></td><td><?php echo $member['name'];?></td></tr>
  <tr><td><label>Age</label></td><td><?php echo $member['age'];?></td></tr>

  <?php endwhile; ?>
</table> 

и на dbconnection. php страница У меня есть эта функция:

<?php

function getMember(){
  $db_conn = getConnection();

  $username = isset($_POST['username']) ? $_POST['username'] : '';
  $password = isset($_POST['password']) ? $_POST['password'] : '';  

  if(!$db_conn) return false;

  $sql = "SELECT * FROM member WHERE username ='$username' AND password='$password'";

  $result = $db_conn->query($sql);

  $db_conn->close();

  return $result;
}

Код настройки сеанса:

<?php 
$username="";
$password="";
$success=true;

$_SESSION['username']=$username;

if(isset($_POST['username']) && isset($_POST['password']))
{
    $username=$_POST['username'];
    $password=$_POST['password'];       

    if(check_in_db($username,$password)){
        $_SESSION['logged_in']=1;
        $_SESSION['username']=$username;
        header("Location: adminPanel.php");
    }
    else{
        $success=false;
    }
}   

?>

Но когда я вхожу в систему, данные (имя и возраст) не извлекаются (отображаются) в элементе. php страница (я не могу добавить изображение, так как моя репутация меньше 10).

Спасибо за ваше время.

1 Ответ

0 голосов
/ 18 января 2020

Я бы посоветовал вам взглянуть на php сравнений типов , чтобы узнать, как работает isset(). Чтобы вы знали, как работает сеанс php и как пользователи сохраняются на разных страницах, вам нужно углубиться в сеанс php. Я бы порекомендовал вам использовать PDO и метод его подготовки при работе с пользовательскими данными. Здесь вы получите очень простой пример этого.

Следующий код работает. Поэтому, пожалуйста, взгляните на них, как они построены:

dbconnection. php

<?php

function getConnection() {

    $servername = "localhost";
    $username = "root";
    $password = "12345";
    $dbname = "db_test";

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
          die("Connection failed: " . $conn->connect_error);
    }

    return $conn;
}

function check_in_db($username, $password) {
  $db_conn = getConnection();

  if (!$db_conn) {
    return false;
  }

  $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
  $result = $db_conn->query($sql);

  return $result->num_rows > 0;
}

function getMember($username, $password) {
  $db_conn = getConnection();

  if (!$db_conn) {
    return false;
  }

  $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
    $result = $db_conn->query($sql);

  return $result;
}

index. php

<?php

session_start();

require_once('./dbconnection.php');

$success = true;

if(isset($_POST['username']) && isset($_POST['password'])) {
  $username = $_POST['username'];
  $password = $_POST['password'];

  if(check_in_db($username, $password)) {
    $_SESSION['logged_in'] = 1;
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;
    header("Location: adminPanel.php");
  }
  else{
      $success=false;
  }
}
?>

<form action="index.php" method="POST">
  <table>
    <tr>
        <td><label>Username</label></td>
        <td><input type="text" name="username" /></td>
    </tr>

    <tr>
        <td><label>Password</label></td>
        <td><input type="password" name="password" /></td>
    </tr>

    <tr>
        <td></td>
        <td><input type="submit" name="submitbtn" value="Login" /></td>
    </tr>

  </table>
</form>

и член. php

<?php 
    session_start();

    require_once('./dbconnection.php');

    $username = $_SESSION['username'];      
    $password = $_SESSION['password'];
    $members = getMember($username, $password);     

?>

<table>
  <?php  while($member = $members->fetch_assoc()) : ?>
        <tr><td><label>Name</label></td><td><?php echo $member['name'];?></td></tr>
        <tr><td><label>Age</label></td><td><?php echo $member['age'];?></td></tr>
  <?php endwhile; ?>
</table> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...