为了账号安全,请及时绑定邮箱和手机立即绑定

从另一个PHP文件中检索数据

从另一个PHP文件中检索数据

PHP
尚方宝剑之说 2021-04-06 13:15:50
用户登录后,我一直试图将数据从一个php文件传递到另一个php文件。目标是当用户注册要重定向到显示其统计信息的另一个页面时(用户名,金钱,红宝石,钻石)。index.php<?php include('server.php') ?><?php include('errors.php'); ?><div class="form-popupRegister" id="myRegForm">    <form method="post" action="server.php" class="form-containerReg">        <h1>Регистрирация</h1>        <label for="username"><b>Име</b></label>        <input type="text" name="username" placeholder="Въведете името на лейдито" value="<?php echo $username; ?>">        <label for="email"><b>Е-майл</b></label>        <input type="text" name="email" placeholder="Въведете e-mail" value="<?php echo $email; ?>">        <label for="password_1"><b>Парола</b></label>        <input type="password" placeholder="Въведете парола" name="password_1">        <label for="password_2"><b>Повторете Парола</b></label>        <input type="password" placeholder="Въведете парола повторно" name="password_2">        <button type="submit" class="btnReg" name="reg_user">Register</button>        <button type="button" class="btn-cancelReg" onclick="closeRegForm()">Close</button>    </form></div>index2.php<?php require('server.php') ?><!DOCTYPE html><html><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">            <output name="money" for="money"><?php echo $money; ?></output>            </div>请检查我的代码并为我提供帮助。我已经尝试了很长时间,以至于我感觉自己将失去理智。我认为php中存在错误。
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

除非您没有在答案中显示任何内容,否则您实际上并没有做任何事情来保存会话数据。


...

    while($row = mysqli_fetch_assoc($resultsThree)){

        $username = $_SESSION['username'];

        $level = $row['level'];

        $money = $row['money'];

        $diamond = $row['diamond'];

        $ruby = $row['rubin'];

    }

    header('location: index2.php');

...

在这里,通过传递标头,您正在执行客户端重定向,该重定向导致将新请求发送到您的服务器。这意味着在请求1(index.php)中设置的变量将在请求2()中不可用index2.php。


您可能不想为这样简单的事情进行客户端重定向。在不重新构建代码的情况下解决此问题的最简单方法是将标头调用更改为包括


...

    while($row = mysqli_fetch_assoc($resultsThree)){

        $username = $_SESSION['username'];

        $level = $row['level'];

        $money = $row['money'];

        $diamond = $row['diamond'];

        $ruby = $row['rubin'];

    }

    include('index2.php');

...

(实际上不这样做,请参见下面的更新)。


但是,您可能想考虑如何组织代码。有include呼叫所有的地方可以迅速变得混乱和混淆。我建议研究一下PHP路由库。周围有一些,例如Klein。


最后,如果出于某种原因确实需要跨客户端重定向保留数据,则需要将其存储在会话变量或数据库中。这$_SESSION;阵列从读/写,你可以在其中存储的数据应在整个会议持续您获取你的用户名(与注意事项。使用数据库或文件存储在适当的时候)。有关更多信息,请参见PHP文档。


更新:


所以,我只注意到你实际上是include荷兰国际集团的server.php文件在您index2.php文件。在这种情况下,你不能include在index2.php在server.php文件的文件,因为这将是一个无限循环。


我不确定要推荐什么,但似乎您需要重组代码,同时要记住,使用header调用重定向将丢失所有当前PHP状态(变量等)。最简单的事情可能是只调用您的index2.php文件,让它包含您的服务器文件,然后die如果有错误。如果成功执行查询,您的变量将可用。


因此,在以下范围内server.php:


if (count($errors) == 0) {

   ....

} else {

  die('Unsuccessful registration');

}


查看完整回答
反对 回复 2021-04-23
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信