首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我在不同的php文件中使用变量,而不使用session_start()。关于session_start()我遗漏了什么?我应该在什么时候使用这个函数?

我在不同的php文件中使用变量,而不使用session_start()。关于session_start()我遗漏了什么?我应该在什么时候使用这个函数?
EN

Stack Overflow用户
提问于 2018-08-16 06:10:52
回答 3查看 68关注 0票数 0

我是PHP新手。我正在做一个小项目(我从数据库中读取数据,密码)来学习PHP,我正在使用一些变量,这些变量是我在不同的PHP文件中从表单中获得的。我想我应该使用session_start()和全局变量$_SESSION在不同的PHP文件中使用相同的变量。下面是我的代码,我在一个文件夹中有这个文件:index.php(超文本标记语言和表单),conn.php(连接到数据库),login.php (我从数据库中读取数据的文件)

有人能给我解释一下为什么在这种情况下不需要使用session_start(),在什么特定情况下需要使用全局变量$_SESSION吗?

index.php:

代码语言:javascript
复制
<?php
include_once "conn.php";

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

    <form id="login" method="POST" action="login.php">
        <label for="loginUsername">Username</label>
        <input type="text" id="loginUsername" name="loginUsername">
        <br>
        <label for="loginPassword">Password</label>
        <input type="password" name="loginPassword" id="loginPassword"><br>
        <input type="submit" name="login" value="Login">
    </form>
</body>
</html>

conn.php:

代码语言:javascript
复制
<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "loginsystem";

    $conn = mysqli_connect($servername, $username, $password, $dbname);

login.php:

代码语言:javascript
复制
<?php
    include_once "conn.php";


    if(isset($_POST["login"])){

        $username = $_POST["loginUsername"];
        $password = $_POST["loginPassword"];

        echo $password;
        $sql = "SELECT password FROM users WHERE username=?;";

        $stmt = mysqli_stmt_init($conn);

        mysqli_stmt_prepare($stmt, $sql);
        mysqli_stmt_bind_param($stmt, 's', $username);
        mysqli_stmt_execute($stmt);

        $result = mysqli_stmt_get_result($stmt);
        while($row=mysqli_fetch_assoc($result)){
            echo $row["password"];
        }

    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-16 06:45:10

你不需要会话在不同的php文件中使用一个变量。但是,您可以使用会话来存储和访问来自不同请求的数据。

这可能是你项目的下一步。用户登录后,可能会被授权执行此操作。你不会想让她每项任务都登录的。因此,您需要一种方法来允许她执行这些任务,而无需再次传输她的密码。

这是一个例子,会话可以帮助你(或者你可以用不同的方式解决它)。

但是对于您现在拥有的代码来说,您不需要会话,这是可以接受的。

票数 0
EN

Stack Overflow用户

发布于 2018-08-16 06:14:09

首先你需要使用session_start,你只能在session_start之后使用$ _SESSION变量,我建议你写config.php的第一行。

票数 0
EN

Stack Overflow用户

发布于 2018-08-16 06:50:08

如果我没理解错的话,您可能想知道为什么可以从一个脚本访问另一个脚本中的变量。

答案很简单:无论何时调用includerequire,所包含代码中的所有内容-所有变量和方法-都可以在调用者脚本中使用。这意味着所包含脚本的每一行代码都在调用方脚本中执行。

这意味着您必须小心地处理include :如果您在脚本中定义了一个函数并将该脚本包含了两次,PHP将抛出一个错误,指出已经定义了具有此名称的函数。为了避免这种情况,您可以使用include_oncerequire_once

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51867133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档