我在使用JavaScript编写的正确读取PHP的问题时遇到了问题。具体来说,问题是PHP将只读取整数,并忽略所有其他字符。例如,如果我将'firstName'存储为'Bob',并且'phoneNumber'显示为'555-1234',则PHP将为'firstName'显示0,为'phoneNumber'显示'555'。
我正在存储的示例数据(cookieName = value)
AreCookiesEnabled=344
firstName=Bob
lastName=Smith
email=bsmith@email.com
hpID=PL7H88
company=Bobcorp
phoneNumber=555-1234
language=en
os=Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMNTDF; BRI/1; .NET4.0C; .NET4.0E)
browser=5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMNTDF; BRI/1; .NET4.0C; .NET4.0E)
description=This is a description.
这是我用来编写cookie的JavaScript函数:
function SetCookie(cookieName, cookieValue, nDays)
{
//alert("SetCookie("+cookieName+", "+cookieValue+", "+nDays+")");
var today = new Date();
var expire = new Date();
if (nDays==null || nDays==0)
{
nDays=1;
}
if(cookieValue == '')
{
cookieValue = 'none';
}
expire.setTime(today.getTime() + 3600000*24*nDays);
document.cookie = cookieName+"="+escape(cookieValue)+";expires="+expire.toGMTString()+";domain=.ourdomain.com;path=/";
}//
在PHP页面上,我有phpinfo()显示cookie。对于_REQUEST [“firstName”]和_COOKIE [“firstName”]我得到“Bob”,但是当我回显$ _COOKIE [“firstName”]时我得到0.实际上,使用上面的示例信息,我得到了这个输出:
Are cookies enabled: 108
First Name: 0
Last Name: 0
Email: 0
HP ID: 0
Company: 0
Phone Number: 555
Language: 0
Operating System: 0
Browser: 5
Description: 0
我也做print_r($ _ COOKIE);得到这个输出:
Array ( [testsession] => true [firstName] => Bob [lastName] => Smith [email] => bsmith@email.com [hpID] => PL7H88 [company] => Bobcorp [phoneNumber] => 555-1234 [language] => en [AreCookiesEnabled] => 108 [description] => This is a description. [browser] => 5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMNTDF; BRI/1; .NET4.0C; .NET4.0E) [os] => Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMNTDF; BRI/1; .NET4.0C; .NET4.0E) )
似乎一切都在那里并且正确,除了在最终输出中。谁能告诉我这里我做错了什么?谢谢。
编辑:根据大众需求,这是PHP文件......
<?php
phpinfo();
phpversion();
print_r($_COOKIE);
echo("<p>An error has occurred.</p>");
echo("<p><b>Are cookies enabled:</b> ");
echo($_COOKIE['AreCookiesEnabled']+"<br /></p>");
echo("<p><b>First Name:</b> ");
echo($_COOKIE['firstName']+"<br /></p>");
echo("<p><b>Last Name:</b> ");
echo($_COOKIE['lastName']+"<br /></p>");
echo("<p><b>Email:</b> ");
echo($_COOKIE['email']+"<br /></p>");
echo("<p><b>HP ID:</b> ");
echo($_COOKIE['hpID']+"<br /></p>");
echo("<p><b>Company:</b> ");
echo($_COOKIE['company']+"<br /></p>");
echo("<p><b>Phone Number:</b> ");
echo($_COOKIE['phoneNumber']+"<br /></p>");
echo("<p><b>Language:</b> ");
echo($_COOKIE['language']+"<br /><br /></p>");
echo("<p><b>Operating System:</b> ");
echo($_COOKIE['os']+"<br /></p>");
echo("<p><b>Browser:</b> ");
echo($_COOKIE['browser']+"<br /><br /></p>");
echo("<p><b>Description:</b> <br /><br />");
echo($_COOKIE['description']+"</p>");
?>
答案 0 :(得分:2)
问题显然不在于会话数据本身,而是你如何在PHP中获得它。
我在这里看到的行为是那些字符串(“Bob”和“555-1234”)正在转换为int。实际上PHP分别将这些字符串转换为0
和555
,如here所述。
特别是:
该值由字符串的初始部分给出。如果是字符串 从有效的数字数据开始,这将是使用的值。 否则,该值将为0(零)。
检查脚本是否为int cast(定义为(int)
)或任何隐式转换并将其删除。或发布您的PHP代码,让我检查一下。
编辑:
在PHP代码中,您使用的是+
运算符,该运算符是为数值保留的;因此导致隐式转换为int。使用.
代替字符串连接。