当我重新加载页面值不会改变时,它们只在我登录时才会发生

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我重新加载页面值不会改变时,它们只在我登录时才会发生相关的知识,希望对你有一定的参考价值。

所以,我希望当用户重新加载页面时,他的统计信息会根据数据库进行更改。例如,假设我刚刚注册并且我的统计数据是Money-0,Diamond-0,Ruby-0,然后我以某种方式向用户添加了10个钱。现在,我想要的是用户只有在他决定重新加载页面时才能看到他的新统计数据(Money-10,Diamond-0,Ruby-0)。

我已经在身体上添加了onload功能,但它似乎不起作用。用户统计信息仅在用户注销然后再次登录时更改。

index2.php(应显示用户统计信息的位置)

<?php include('server.php') ?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>PwettyKittyPincesa</title>

  <link href="./style.css" type="text/css" rel="stylesheet" />

  <script>
    function getUserStats(){
        <?php
            $queryThree = "SELECT * FROM `register` WHERE username='$username'";
            $userStats = mysqli_query($db,$queryThree);
            while($userStatsTwo = mysqli_fetch_assoc($userStats)){
                $_SESSION['userid'] = $userStatsTwo['ID'];
                $_SESSION['username'] = $userStatsTwo['username'];
                $_SESSION['diamonds'] = $userStatsTwo['diamonds'];
                $_SESSION['ruby'] = $userStatsTwo['ruby'];
                $_SESSION['money'] = $userStatsTwo['money'];
                $_SESSION['level'] = $userStatsTwo['level'];
            };
        ?>
    }
  </script>
</head>
<body onload="getUserStats()">
    <div class="navWrapper">
        <div class="statistics">
            <div class="profilePicture" name="profilePicture">
                <label class="profilePictureLabel" for="profilePicture"><b><?php echo $_SESSION['username']; ?></b></label>
            </div>

            <div class="money" name="money">
                <label class="rubyLabel" for="ruby"><b><?php echo $_SESSION['money']; ?></b></label>
            </div>

            <div class="diamond" name="diamond">
                <label class="diamondLabel" for="diamond"><b><?php echo $_SESSION['diamonds']; ?></b></label>
            </div>

            <div class="ruby" name="ruby">
                <label class="rubyLabel" for="ruby"><b><?php echo $_SESSION['ruby']; ?></b></label>
            </div>

            <div class="level" name="level">
                <label class="levelLabel" for="level"><b>Level:<?php echo $_SESSION['level']; ?></b></label>
            </div>
        </div>
    </div>
</body>
</html>
答案

在这种情况下,您不需要任何javascript来实现此目的。您可以在文档顶部运行所有会话分配。此外,您需要在文档的最顶部包含session_start(),以确保会话变量成为全局值。但是,如果您不需要在其他页面中使用这些值,则可以使用标准变量来存储数据,而不是将其存储在会话中。

这是使用会话变量:

<?php
session_start();

include('server.php');

$queryThree = "SELECT * FROM `register` WHERE username='$username'";
$userStats = mysqli_query($db,$queryThree);
while($userStatsTwo = mysqli_fetch_assoc($userStats)){
  $_SESSION['userid'] = $userStatsTwo['ID'];
  $_SESSION['username'] = $userStatsTwo['username'];
  $_SESSION['diamonds'] = $userStatsTwo['diamonds'];
  $_SESSION['ruby'] = $userStatsTwo['ruby'];
  $_SESSION['money'] = $userStatsTwo['money'];
  $_SESSION['level'] = $userStatsTwo['level'];
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>PwettyKittyPincesa</title>

  <link href="./style.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <div class="navWrapper">
        <div class="statistics">
            <div class="profilePicture" name="profilePicture">
                <label class="profilePictureLabel" for="profilePicture"><b><?php echo $_SESSION['username']; ?></b></label>
            </div>

            <div class="money" name="money">
                <label class="rubyLabel" for="ruby"><b><?php echo $_SESSION['money']; ?></b></label>
            </div>

            <div class="diamond" name="diamond">
                <label class="diamondLabel" for="diamond"><b><?php echo $_SESSION['diamonds']; ?></b></label>
            </div>

            <div class="ruby" name="ruby">
                <label class="rubyLabel" for="ruby"><b><?php echo $_SESSION['ruby']; ?></b></label>
            </div>

            <div class="level" name="level">
                <label class="levelLabel" for="level"><b>Level:<?php echo $_SESSION['level']; ?></b></label>
            </div>
        </div>
    </div>
</body>
</html>

这是使用变量:

<?php
include('server.php');

$queryThree = "SELECT * FROM `register` WHERE username='$username'";
$userStats = mysqli_query($db,$queryThree);
while($userStatsTwo = mysqli_fetch_assoc($userStats)){
  $userid = $userStatsTwo['ID'];
  $username = $userStatsTwo['username'];
  $diamonds = $userStatsTwo['diamonds'];
  $ruby = $userStatsTwo['ruby'];
  $money = $userStatsTwo['money'];
  $level = $userStatsTwo['level'];
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>PwettyKittyPincesa</title>

  <link href="./style.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <div class="navWrapper">
        <div class="statistics">
            <div class="profilePicture" name="profilePicture">
                <label class="profilePictureLabel" for="profilePicture"><b><?php echo $username; ?></b></label>
            </div>

            <div class="money" name="money">
                <label class="rubyLabel" for="ruby"><b><?php echo $money; ?></b></label>
            </div>

            <div class="diamond" name="diamond">
                <label class="diamondLabel" for="diamond"><b><?php echo $diamonds; ?></b></label>
            </div>

            <div class="ruby" name="ruby">
                <label class="rubyLabel" for="ruby"><b><?php echo $ruby; ?></b></label>
            </div>

            <div class="level" name="level">
                <label class="levelLabel" for="level"><b>Level:<?php echo $level; ?></b></label>
            </div>
        </div>
    </div>
</body>
</html>

以上是关于当我重新加载页面值不会改变时,它们只在我登录时才会发生的主要内容,如果未能解决你的问题,请参考以下文章

我的 AdMob 广告仅在我导航到另一个页面然后返回时才会加载

重定向时获取用户信息

angular+ 路由学习 异步路由

运行stp协议的交换机只在本交换机某个端口出现故障时才会发送tcnbpdu啥

CollectionView + 页面控件

从ArrayAdapter每毫秒更新Android ListView中的一行