我是PHP新手。我正在做一个小项目(我从数据库中读取数据,密码)来学习PHP,我正在使用一些变量,这些变量是我在不同的PHP文件中从表单中获得的。我想我应该使用session_start()和全局变量$_SESSION在不同的PHP文件中使用相同的变量。下面是我的代码,我在一个文件夹中有这个文件:index.php(超文本标记语言和表单),conn.php(连接到数据库),login.php (我从数据库中读取数据的文件)
有人能给我解释一下为什么在这种情况下不需要使用session_start(),在什么特定情况下需要使用全局变量$_SESSION吗?
index.php:
<?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:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "loginsystem";
$conn = mysqli_connect($servername, $username, $password, $dbname);
login.php:
<?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"];
}
}
发布于 2018-08-16 06:45:10
你不需要会话在不同的php文件中使用一个变量。但是,您可以使用会话来存储和访问来自不同请求的数据。
这可能是你项目的下一步。用户登录后,可能会被授权执行此操作。你不会想让她每项任务都登录的。因此,您需要一种方法来允许她执行这些任务,而无需再次传输她的密码。
这是一个例子,会话可以帮助你(或者你可以用不同的方式解决它)。
但是对于您现在拥有的代码来说,您不需要会话,这是可以接受的。
发布于 2018-08-16 06:14:09
首先你需要使用session_start,你只能在session_start之后使用$ _SESSION变量,我建议你写config.php的第一行。
发布于 2018-08-16 06:50:08
如果我没理解错的话,您可能想知道为什么可以从一个脚本访问另一个脚本中的变量。
答案很简单:无论何时调用include
或require
,所包含代码中的所有内容-所有变量和方法-都可以在调用者脚本中使用。这意味着所包含脚本的每一行代码都在调用方脚本中执行。
这意味着您必须小心地处理include :如果您在脚本中定义了一个函数并将该脚本包含了两次,PHP将抛出一个错误,指出已经定义了具有此名称的函数。为了避免这种情况,您可以使用include_once
或require_once
。
https://stackoverflow.com/questions/51867133
复制相似问题