所以我试图让posts.php页面看起来像这样>> ' posts.php?user ='。$ username<<为每个用户。
以下是我的index.php页面上的代码(在用户登录/注册后转为>>' index.php?user ='。$ username:
<?php
include('header.php');
session_start();
if(!isset($_SESSION['username'])) {
//do nothing
} else {
$_SESSION['username'] = $_GET['user'];
$username = $_GET['user'];
$_SESSION['username'] = $username;
}
以下是我的posts.php页面上的代码:
<?php
include('header.php');
session_start();
if(!isset($_SESSION['username'])) {
header('location: must_login.php');
} else {
//idk what to put here
}
?>
我试图让我的posts.php页面标题看起来像这样&gt;&gt; &#39; posts.php用户=&#39;?$用户名
答案 0 :(得分:1)
我知道你是PHP学习的第一天。你得到了很多负面回答,因为你的问题不是很具体。你不清楚什么是“不工作”。你应该说出你预期会发生什么,以及发生了什么。
根据我的想法,这是我的答案。
由于用户名通常是从登录表单获取的,并且登录表单通常使用POST,因此您应该这样做。使用POST而不是GET。
包含的文件可以访问包含它们的文件中的所有全局变量。
文件#1:
// index.php
$username = $_POST['user'];
include('header.php');
文件#2:
// header.php
<div id="header">
<p>You are logged in as user "<?= $username ?>"</p>
</div>
您在index.php $username
中设置的变量可在header.php中使用。
答案 1 :(得分:0)
好的,这里有一些你需要考虑的事情,但我们都必须学习一次,所以我会尝试覆盖其中的大部分。
首先(正如@TrentonMaki所说):不要在URL中使用USERNAMES。如果这个网站上线,除了将你的密码打印到屏幕上之外,它可能是你可以做的最危险的事情。
在继续之前,您必须阅读有关授权和身份验证的信息。
其次,为了学习的利益:$_SESSION
超全局不适合用于URL变量。我们将URL变量称为“GET”变量,因此它们可以像这样访问:
$user = mb_convert_encoding($_GET['myVar'], ‘UTF-8′, ‘UTF-8′);
$user = htmlentities($user, ENT_QUOTES, ‘UTF-8′);
这些函数“转义”变量中的数据,使其免受XSS和SQL注入攻击(您还需要采取其他许多预防措施 - 但它们超出了本问题的范围)。 / p>
就会话而言,这些变量存储在服务器内存中并在页面之间保留。使用Sessions时有几个注意事项(像“会话劫持”这样的安全漏洞)以及可以使Sessions更安全的事情,但这是他们基本上工作的方式。
//start the session to retrieve or set variables
session_start();
//you should regenerate session_id here - you need to look up how to do this and other Session santisation.
//set a session var
$_SESSION['myVar'] = "myString";
现在,当加载新页面时,您可以获得$_SESSION
var:
//start the session to retrieve or set variables
session_start();
//you should regenerate session_id here - you need to look up how to do this and other Session santisation.
//get a session var
$myVar = $_SESSION['myVar'];
在进一步学习之前,您应该学习一些其他主题:
答案 2 :(得分:0)
注意:
1.Passing变量上面包含的文件将传递变量到所有包含的脚本
2.session_start();必须只有脚本ONTOP并且只调用session_start();避免会话已经启动错误。
<?php
session_start();
$username = $_POST['user'];
include('header.php');
?>