会话变量或cookie
session variable or cookies
我有一个网页welcome.php
,用户在welcome.php
页面输入一些信息并提交数据,它通过$_POST['data']
将用户数据发布到registration.php
页面。这是基本的概念。
但是如果用户通过一些搜索引擎或任何其他方式打开我的registration.php
。我能把他重定向到欢迎页面吗?答案是Yes
我知道这是可能的。
但混乱是是否设置session variable
在php或使用cookies
(但如果用户禁用cookie ?)或有任何其他简单的方法来做到这一点?
我的方法
在php中创建一个会话变量并设置它的值。现在,当用户打开registration.php
检查变量isset()
,如果它没有设置重定向到welcome.php
我想的是尽可能减少服务器完成的工作。谢谢。也让我知道cookies
和sessions
是什么,什么时候我们需要它们,它们的独特性是什么。
会话和cookie的相似之处在于会话依赖于cookie。编辑:@swapnesh的有效评论-如果用户禁用cookie,会话仍然会通过在URL中发送会话ID而不是在cookie中工作。
Cookie是在用户代理(浏览器)中设置的值。PHP脚本将使用HTTP头进行设置。具体来说,它将是一个Set-Cookie
头(详见RFC 6265, 4.1)。在UA发出的任何后续请求中,它也将发送报头中的cookie(使用Cookie
报头,RFC 6265, 4.2)。您使用cookie设置的值将直接存储在UA中。
对于您的具体问题-如果用户通过某些搜索引擎或其他(无效)手段访问registration.php,则此请求将是POST,或者它将不包含所需的表单字段。因此,您可以做的只是验证registration.php中的参数,如果这些参数不存在,则将用户重定向到welcome.php。即使没有cookie/会话,它也可以工作。如果这种方法在您的用例中是可接受的,请查看http_redirect()。此方法将用于HTTP 301或HTTP 307响应示例。
如果我说错了请指正....
如果您通过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
}
希望能有所帮助。
我不认为你要解决的问题是要用Cookies
或$_SESSION
变量来解决。如果你在检查是否the user came from a search engine
上是dead-set,你想检查推荐人是什么,即看看它是否来自搜索引擎。引荐者基本上是"哪个页面将用户发送到这个页面"。
你可以检查$_SERVER['HTTP_REFERER']
,你可以做preg_match()
或其他东西,看看它是否来自谷歌,或必应。
您还可以使用不同的条件the user has never been to the site before
将它们重定向到欢迎页面。您可以这样做:在第一次访问时设置一个cookie,发送到欢迎页面,然后在每次页面访问时检查是否设置了cookie,以决定是显示欢迎还是只显示页面。你不会想在这里使用会话的。
要回答你关于"服务器做的工作更少"的问题,从技术上讲,赢家是cookie,但你不应该根据这个做出决定,因为它是微不足道的。
cookie是客户端,可以被客户端轻易篡改,但是session是服务器端,不能被客户端篡改。所以我建议最好使用会话来检查他是否登录了。
- 如何在提交表单时将PHP变量传递到Javascript cookie中
- Cookie,用于保存包括一个变量在内的多个值
- javascript测试用于设置cookie的变量
- 是否将Javascript变量保存为PHP变量?获取、发布、COOKIE
- 像cookie这样的全局变量,它在回发后保留值,但应该为不同的实例保存不同的值(选项卡/窗口)
- 传递一个变量's值添加到另一个页面,而不使用cookie(Javascript)
- 将多变量 Cookie 解析为 Web 表单值
- 使用 Cookie 传输数值变量
- Cookie 数据在离开主页后仅存储一个变量
- 记录整个网站的用户偏好的 Cookie 或会话变量
- 发送 JavaScript 变量 (cookie) 作为联系表 7
- 如何使用javascript中的split()方法从内部有2个变量的Cookie中获取Last Value
- 如何比较保存在变量中的querystring参数,并将变量保存在cookie中,并在每页上进行比较
- 通过cookie变量动态更改HTML元素
- 在cookie中保存变量- console.log返回具有会话id的变量
- 使用cookie传递变量到另一个页面
- 会话变量或cookie
- jQuery从cookie中读取国家并放入Google变量
- Jquery cookie变量没有更新
- Javascript cookie变量问题