我正在尝试制作一个cookie。它没有成功。
此代码正常运行,但在最近的系统中无效。 login_check.html如下所示。
<?
include "../_cfg/siteCfg.php"; //Site common values
include "$SITE_PATH/_class/dbms.php"; //mysql_class
include "$SITE_PATH/_class/Function.php";
$my_func = new PublicFunction();
$db = new mydb(); //DB Access
if ( $HTTP_POST_VARS[id] && $HTTP_POST_VARS[passwd] ) {
$sql = "select uid, passwd, m_id, name, level from member_list where m_id = '$HTTP_POST_VARS[id]'";
$result = $db->select($sql);
if ( !$result ) {
$my_func->virtual_function( "login_error ('ID_ERR')" );
}
else if ( $HTTP_POST_VARS[passwd] != $result[0][1] ) {
$my_func->virtual_function( "login_error ('PW_ERR')" );
}
else if ( $result && ( $HTTP_POST_VARS[passwd] == $result[0][1] )) {
$m_id = $result[0][m_id];
$uid = $result[0][uid];
$name = $result[0][name];
$level = $result[0][level];
setcookie("c_m_id",$m_id,0,'/');
setcookie("c_uid",$uid,0,'/');
setcookie("c_name",$name,0,'/');
setcookie("c_level",$level,0,'/');
$my_func->virtual_function("alert($_COOKIE[c_level])"); // This is for a log
$my_func->virtual_function( "loginOk()" );
}
} else {
$my_func->virtual_function("alert('Bad Access!!!')");
}
&GT;
当我发出警告以检查COOKIE值时,它为空。
我使用var_dump(isset($ _ COOKIE [c_uid]));,然后它返回 bool(false)。
另外,我更改了标题 @header('P3P:CP =“ALL CURA ADMa DEVa TAIa我们的公共电子邮件系统UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC”'); 到标题('P3P:CP =“NOI CURA ADMa DEVa TAIa我们的DELA BUS IND PHY ONL UNI COM NAV INT DEM PRE”'); 。
这也行不通。
此代码由以下调用。上面的代码是login.html
<?
require_once "$DOCUMENT_ROOT/_cfg/siteCfg.php"; //site value
require_once "$SITE_PATH/_class/htmlHead.php";
$title = "Login"; //title value
$htmlTPL = new htmlTPL($title); //HEAD Instance creation
?>
<title></title>
<link href="<?=$SITE_HOME?>/_styles/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="<?=$SITE_HOME?>/_js/common.js"></script>
<script>
//<!--
function login_check(){
var fm = document.login_form;
fm.target = "vr_url";
fm.action = "./login_check.html";
fm.submit();
}
function login_error ( num ) {
fm = document.login_form;
if ( num == "ID_ERR" ) {
alert ( "Not registered user.");
fm.passwd.value = "";
fm.id.focus();
fm.id.select();
} else if ( num == "PW_ERR" ) {
alert ( "Wrond Pasword." );
fm.passwd.focus();
fm.passwd.select();
}
}
function loginOk(){
opener.location.reload(true);
window.close();
}
//-->
</script>
这是siteCfg.php的一部分
<?
//@header("Cache-Control: no-cache,must-revalidate");
//@header ("Pragma: no-cache");
@header('P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"');
//header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
//error_reporting(E_ALL);
$SITE_PATH = $DOCUMENT_ROOT;
$IMG_PATH = $SITE_PATH."/image";
$MANAGER_PATH = $SITE_PATH."/manager";
$SITE_HOME = 'http://www.mysite.com';
$MANAGER_HOME = $SITE_HOME."/manager";
$IMAGE_HOME = $SITE_HOME."/image";
$ADMIN_HOME = $SITE_HOME."/manager_admin";
//Login Return URL
$PREURL = urlencode($SITE_HOME.$_SERVER["REQUEST_URI"]);
//Values Setting
$_name = $_COOKIE[c_name];
$_mid = $_COOKIE[c_m_id];
$_uid = $_COOKIE[c_uid];
$_mlevel = $_COOKIE[c_level];
//var_dump(isset($_name));
//FTP Setting
PHP版本5.2.17。有什么我可以检查来解决这个问题。请告诉我。 我测试了IE 11,Chrome 30.0.1599.101 m,Firefox,Safari。根本不工作
答案 0 :(得分:1)
脚本开头有一个空格。 如果您之前有HTTP正文,则不会设置Cookie。
请参阅:
<?
^-----
include "../_cfg/siteCfg.php"; //Site common values
incl....
您的编码风格can be much improved。例如,不使用短开放标签并将单引号置于字符串索引:$varRS['id']
。
这不会起作用:
virtual_function("alert($_COOKIE[c_level])");
你需要正确连接变量并使用引号arround strings:
virtual_function("alert(" . $_COOKIE['c_level'] . ")");
如果您没有看到任何错误消息,请确保您已启用错误报告。 http://blog.flowl.info/2013/enable-display-php-errors/
答案 1 :(得分:0)
您可能会尝试将$ HTTP_POST_VARS转换为$ _POST(因为$ HTTP_POST_VARS已弃用,我甚至不确定它仍支持PHP&gt; 5,如果它停止在新系统上工作,这可能是您的问题)。