将变量放在header = PHP中

时间:2014-05-26 00:40:41

标签: php session

所以我试图让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;?$用户名

3 个答案:

答案 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'];

在进一步学习之前,您应该学习一些其他主题:

  • mysqli extension - 不要使用mysql函数 - 这是新PHP开发人员最常犯的错误
  • Prepared statements - 这些都是实时数据安全的必备条件。你应该学习它们,这样你就不会使用其他任何东西

答案 2 :(得分:0)

注意:

1.Passing变量上面包含的文件将传递变量到所有包含的脚本

2.session_start();必须只有脚本ONTOP并且只调用session_start();避免会话已经启动错误。

<?php
session_start();
$username = $_POST['user'];
include('header.php');

?>