网页无法识别Cookie

时间:2018-08-10 12:45:53

标签: php cookies

我是一位经验丰富的程序员(自1974年以来!),他对使用高级网络技术(我了解HTMLbasic PHPMYSQL的方式是相当陌生的)。我以前从未使用过Cookie,但似乎无法读取已设置的Cookie,这让我很困惑。

在这种情况下,将递归调用此页面来处理和显示表单。用户第一次显示该页面时,我正在寻找一个cookie(不应存在一个cookie)。用户填写表格并提交。表单操作再次调用该页面,然后我寻找一个cookie。仍然不是一个,但有$_POST数据,因此我为用户设置了Cookie(此部分有效)。如果用户在提交表单后返回页面,则应该有一个cookie,并且我使用cookie值来查找用户并在表单中填充标识信息。

编写cookie即可。但是,当我再次访问该页面时,该cookie为空白。

我在浏览器(Chrome)中检查了内容设置; cookie在那里,并且具有必需的信息(并且尚未过期)。使用页面浏览器中的控制台功能,我可以看到该域中的所有cookie,但是无法访问该程序的特定cookie。我已经删除了Cookie,并经过几次例行程序以确保已重写Cookie,并且在下次访问时仍然没有Cookie。我已删除Cookie,并刷新了浏览器中的缓存,然后重试一次,但没有成功。我已经关闭浏览器,重新启动它,但仍然没有收到Cookie。我已经检查了php.ini文件,以确保正确设置了variables_order标志(显式EGPCS)。我搜索了前面的问题,没有发现这里发生的事情(大多数与JS相关,或者与在Cookie中设置路径有关)。

我在<html>标记后添加了一些echo语句,以向我显示cookie处理的状态,并且始终表明$_COOKIE为空(或不存在)。

因此,我在代码中忽略了一些东西。也许有人可以看到我不是。

这是代码(由于我的PHP很弱,我直接使用JS-fu):

<?php 
//make sure I display errors
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

//cookie routine

//initialize variables
$cookie_name="SHS74"; //self-explanatory    
$cookie_set=FALSE; //flag to help debugging
$returning=FALSE;  //FALSE = no cookie, TRUE=cookie has been read
$returned_user=""; //value of the cookie

//actual  routine  
      if(!isset($_COOKIE['$cookie_name'])) {  //user has never submitted anything
              if (isset($_POST['email_from'])) {  //but has submitted a form this time – required field
              setcookie ($cookie_name, $_POST['email_from'], time()+3600*24*30, '/'); //works
              $returning=FALSE;  //so I don’t look for database records for this user
              $cookie_set=TRUE;  //flag to help debugging
              } // end of if $_POST[ email_from] - note: if not isset  $_POST[‘email_from’], I can safely fall through since flags are already initialized to FALSE
      } //if not isset
         else {   //the user has a cookie
         $returned_user = $_COOKIE['$cookie_name']; //who the user is
         $returning=TRUE; //user has been here before, submitted a form, and has a database record
         } //end else 

//database initialization
      session_start(); 
      include("connection.php");

?>

<!DOCTYPE HTML>
 <html>
     <head>

[...片段...]

(是的,很老的学校)

那么,我在做什么错?是我错过了配置错误,还是在一开始就搞砸了$_COOKIE的处理?

谢谢!

2018年8月10日11:00edt-根据建议,在'isset'测试中我删除了$ cookie_name附近的单引号,其他地方我引用了$ _COOKIE。有效!谢谢。是的,这对我来说是全新的-我以前的Web建设经验非常基础-没有数组处理,没有Cookie,因此我的学习曲线非常艰难。感谢所有提供帮助的人!

0 个答案:

没有答案