【发布时间】:2011-09-23 22:42:23
【问题描述】:
我之前发布了一个类似的问题,但从来没有真正得到帮助我的答案,所以我想再试一次。作为免责声明,我知道这里的很多信息都没有遵循完美的编码实践,但仅用于练习目的。我已经尝试了一百万件事,但似乎没有任何效果,因为我不确定一切都应该去哪里!我迫切需要一些(任何!)帮助,如果您能提供任何帮助,请提前致谢!
我正在尝试创建一个简单的表单/页面,它使用一些基本的 cookie 和会话内容来生成一些特定于用户的数据。在遇到一些我无法弄清楚的问题之前,我一直进展顺利。在我的第一页上,一切都很好,除了我只想要用户正在使用的浏览器的名称。 (例如,我只想要简单的标题:Firefox 而不是浏览器的整个长版本。)我已经看到这样做了,所以我认为这是可能的,我只是不知道该怎么做!
我真正的问题出现在这里,因为我不确定如何将 IP 地址、浏览器信息和当前日期/时间(我希望在第 2 页显示)存储为会话变量。尝试了一些我发现的东西,但我认为我做得不对。
我还无休止地尝试将用户名和密码分别存储为两个单独的 cookie...建议?最后,我需要做什么才能有一个带输出缓冲的位置标头(用于调用 form_data.php)?
(不确定这是否有用,考虑到我可能做错了一切!大声笑)这是我代码的完全精简版本。试图发布我最干净的版本,即使它没有太多信息,这样你就可以很容易地看到我想要做什么。
主文件代码:
<?php
header('Location: form_data.php');
setcookie('username', $_POST['username']);
setcookie('password', $_POST['password']);
//I know this isn't working.
//honestly I just left this in here as to show where I had been
//trying to save the cookie data. Pretty obvious how bad my
//trial and error with this went!
}
?>
<?php
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
echo " By the way, your IP address is: </b>".$_SESSION['ip']."<br />";
echo " You already know this, but the browser you are currently using
to view this page is:<br/>"; //What is the correct function that I should be using here?
echo "<form action=\"form_data.php\" method=\"post\">";
echo "username:<input type=\"text\" name=\"username\" size=\"20\" value=\"\"><br/>";
echo "password:<input type=\"password\" name=\"password\" size=\"20\" value=\"\"><br/>";
echo "<input type=\"submit\" value=\"Submit, please\" />";
echo "<br /><input type=\"hidden\" name=\"submitted\" value=\"true\" />";
?>
form_data.php
<?php
echo "Hello, ".$username;//I'm trying to get the cookie data for the username
echo "Your password is ".$password; //Samething here (want cookie data)
echo "The date and time you entered this form is: ".date("F j, Y")." -- ".date("g:i a");
echo "<br/>Your IP:".$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
echo "<br/>Your broswer:".;//I want full broswer data here...dont know how to do it.
//Overall, was this the way to get the session variables for IP, date/time and browser?
echo "Thank you for filling out this form!";
?>
【问题讨论】:
-
不要将您的用户名和密码存储在 cookie 中!而是在 cookie 中存储一些随机字符串,以便用户稍后通过将数据库中的值与 cookie 值匹配来返回,并在每次页面加载时重新生成该值。
-
永远不要使用
setcookie。只需始终使用$_SESSION并维护与服务器上的会话相关的所有数据。客户端需要的唯一 cookie 是会话 cookie,您不必显式处理它(除了在成功登录后重新生成一次以避免固定)。 -
@Kerrek SB Cookies 对于在服务器会话生命周期之外保留非敏感信息仍然有用。它们的用途与
$_SESSION不同。
标签: php session variables cookies