0

我有一个网页welcome.php,用户在页面上输入一些信息welcome.php并提交数据,它将用户数据发布到registration.php页面$_POST['data']。这是基本概念。

registration.php但是,如果用户通过某些搜索引擎或任何其他方式打开我的。我可以将他重定向到欢迎页面吗?答案是Yes我知道这是可能的。

但令人困惑的是是session variable在 php 中设置 a 还是使用cookies(但如果用户禁用 cookie?)还是有其他简单的方法可以做到这一点?

我的方法

在 php 中创建一个会话变量并设置它的值。现在,当用户打开registration.php检查变量时isset(),如果未设置变量,则将他重定向到welcome.php

我不知道这样做是否是个好主意。我不知道是否有一些更简单的方法可以做到这一点。请让我知道最好的方法。

我的想法是尽可能减少服务器完成的工作。谢谢。也让我知道我们需要它们,什么时候需要它们,它们的独特性是什么cookiessessions

4

4 回答 4

1

会话和 cookie 的相似之处在于会话依赖于 cookie。编辑:@swapnesh 的有效评论 - 如果用户禁用 cookie,会话仍然可以通过在 URL 中而不是在 cookie 中发送会话 ID 来工作。

Cookie 是在用户用户代理(浏览器)中设置的值。您的 PHP 脚本将使用 HTTP 标头进行设置。具体来说,它将是一个Set-Cookie标头(有关详细信息,请参阅RFC 6265, 4.1)。在 UA 发出的任何后续请求中,它也会在标头中发送 cookie(使用Cookie标头,RFC 6265, 4.2)。您使用 cookie 设置的值将直接存储在 UA 中。

会话是存储在与客户端 cookie 关联的服务器上的一些数据。此会话可以存储在服务器的内存中或某个持久位置(例如数据库)中。如果你使用会话,PHP 会为你设置 cookie,但这次它不会包含你设置的值,而是一些 ID。稍后,在另一个请求中,PHP 会读取这个 cookie 并使用 ID 在服务器端查找相应的数据。

至于您的具体问题-如果用户通过某些搜索引擎或其他(无效)方式访问registration.php,则此请求将是POST,或者不包含所需的表单字段。所以你可以做的只是验证registration.php中的参数,如果这些参数不存在,将用户重定向到welcome.php。即使没有 cookie/会话,它也可以工作。如果您的用例可以接受这种方法,请查看http_redirect()。此方法将用于示例 HTTP 301 或 HTTP 307 响应。

于 2013-06-14T08:32:39.580 回答
0

我不认为您要解决的问题将通过变量Cookies$_SESSION变量来解决。如果您一心想检查是否the user came from a search engine要检查推荐人是什么,即查看它是否来自搜索引擎。推荐人基本上是“哪个页面将用户发送到此页面”。

你可以通过查看来检查它,$_SERVER['HTTP_REFERER']你可以做preg_match()一些事情来看看它是来自 Google 还是 Bing。

您还可以使用不同的条件the user has never been to the site before将它们重定向到欢迎页面。您可以通过在第一次访问时设置 cookie、发送到欢迎页面来执行此操作,然后检查每个页面访问是否设置了 cookie 来决定是显示欢迎还是只显示页面。您不想在这里使用会话。

要回答您关于“服务器工作量减少”的问题,从技术上讲,获胜者将是 cookie,但您不应该基于此做出决定,因为它可以忽略不计。

于 2013-06-14T08:31:01.770 回答
0

如果我错了,请纠正我......

如果您通过 GET 或 POST 方法通过表单将页面信息发送给其他页面,则在目标页面 (registration.php) 上,您可以简单地检查是否设置了基本变量。例如:

    if (isset($_POST['user'])){//Check as many variables as You want with AND operator here

##Your code here...
##Here You'll store or manipulate Your properly received values...
##eg:
$user = $_POST['user'];
$email = $_POST['email'];

}
else {

header( 'Location: welcome.php' );//redirecting

}

希望能帮助到你。

于 2013-06-14T08:58:04.893 回答
-1

Cookies 是客户端的,很容易被客户端篡改,而 Session 是服务器端的,客户端无法篡改。因此,我建议您最好使用会话来检查他是否已登录。

于 2013-06-14T08:30:21.047 回答