Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在多个页面之间共享PHP变量?_Php_Html_Forms_Login - Fatal编程技术网

如何在多个页面之间共享PHP变量?

如何在多个页面之间共享PHP变量?,php,html,forms,login,Php,Html,Forms,Login,想法/目标: 我在电脑的文本文件中有用户名和密码。索引页上的表单允许用户使用用户名和密码登录。登录页面是使用PHP验证用户输入的信息与我在本地文本文件中的信息的地方。在用户输入的信息与我的文本文件信息匹配后,用户将直接重定向到主页,在主页上显示他们的姓名,并显示欢迎消息 问题: 在验证工作开始之前,一切都很顺利。问题是,当我将用户重定向到Home.php时,我无法显示他们的用户名。在所有验证之后,我将如何显示他们的用户名?我是否可以将他们的用户名永久存储在一个变量中,该变量可以在我的所有页面中访

想法/目标:

我在电脑的文本文件中有用户名和密码。索引页上的表单允许用户使用用户名和密码登录。登录页面是使用PHP验证用户输入的信息与我在本地文本文件中的信息的地方。在用户输入的信息与我的文本文件信息匹配后,用户将直接重定向到主页,在主页上显示他们的姓名,并显示欢迎消息

问题:

在验证工作开始之前,一切都很顺利。问题是,当我将用户重定向到Home.php时,我无法显示他们的用户名。在所有验证之后,我将如何显示他们的用户名?我是否可以将他们的用户名永久存储在一个变量中,该变量可以在我的所有页面中访问

使用会话变量

设置:

获取:


我同意马列和哈默斯坦的观点。会话和/或cookie

<?php 
    // always need this
    session_start();

    // set the value
    $_SESSION['username'] = 'Person';
?>

<?php
    //get session data
    echo $_SESSION['username'];

   // output: Person
?>

使用
$\u会话
-

session_start();
$_SESSION['username'] = $_POST['username'];
您当然希望筛选/清理/验证您的$\u POST数据,但这超出了此问题的范围

只要调用
session_start()
在使用
$\u会话
之前-在用户关闭浏览器之前,
$\u会话
数组中的值将在页面间保持不变


如果您想在此之前结束会话,如在注销按钮中使用
session\u destroy()

可以启动会话并将表单值放入$\u session变量,该变量将在所有页面上可用

// On the page where your form is submitted:
session_start();
$_SESSION['name'] = $_POST['name'];

// On the page where the user is redirected:
session_start();
echo $_SESSION['name'];
请注意,实际上,您可能也希望包含一些表单验证

  • 在打开php标记后立即在每个页面上启动php会话:

    会话_start()

  • 确定名称和密码有效后,在执行重定向之前,添加此行:

    $\会话['name']=$name

    在随后的任何页面上,只需重复以下内容:

    echo "Welcome ".$_SESSION['name'];
    

    可能是会话还是cookies?看看$\u会话谢谢!工作得很有魅力!虽然你所说的过滤/验证/消毒是什么意思?这与MySQL有关吗?好吧,这完全取决于您对数据的处理方式——如果您在MySQL查询中使用数据,那么是的!虽然这是一个您应该彻底研究的主题,但我将给您一个概要:验证数据意味着-如果您需要字符串,请确保它是字符串。如果你想要一个数字,确保它是一个数字
    filter\u var()
    可以做到这一点,而9/10次就是您真正需要的
    filter\u var($\u POST['username'],filter\u SANITIZE\u STRING)
    -在这一点上,过滤/清理实际上是一个整体。但对数据进行清理和验证仍然是一个好主意——更详细地说,您希望验证您的数据是否符合其应符合的条件,如果不符合,则脱离其余代码(或者仅使值
    null
    )——此外,消毒可以确保没有人可以潜入可能引起麻烦的恶意东西-黑客可以很聪明,他们几乎总能找到一种方法。。。因此,格外谨慎也无妨——!-当我谈论它的时候,mysqli/PDO中有一些净化功能,你应该仔细研究,并确保你正在使用你的数据库-有很多文章在那里-谷歌是你的朋友。
    // On the page where your form is submitted:
    session_start();
    $_SESSION['name'] = $_POST['name'];
    
    // On the page where the user is redirected:
    session_start();
    echo $_SESSION['name'];
    
    echo "Welcome ".$_SESSION['name'];