好的,我试图查看可能的副本,但没有帮助
现在,我有一个咖啡网站,主要内置HTML 4和CSS3,JavaScript和一些PHP。我所做的是在名为coffee.html
的页面上创建了一张图片。当我点击它时,会创建cookie
。
我在8
这样的网页上有coffee.html
个此类图片,我有4
个此类网页。
这意味着我可以创建8 x 4 = 32 cookies
。
在订单页面上,我可以看到我订购的商品。 我用了
<?php
if($_COOKIE['cup1'])
{echo "<img src='img//coffee69.png' width='10%' onClick='erasec1()'>";}
if($_COOKIE['cup2'])
{echo "<img src='img//coffee131.png' width='10%'>";}
if($_COOKIE['cup3'])
{echo "<img src='img//hot drink64.png' width='10%'>";}
if($_COOKIE['cup4'])
{echo "<img src='img//caffeine1.png' width='10%'>";}
if($_COOKIE['cup5'])
{echo "<img src='img//tea24.png' width='10%' onClick='erasec1()'>";}
if($_COOKIE['cup6'])
{echo "<img src='img//coffee20.png' width='10%'>";}
if($_COOKIE['cup7'])
{echo "<img src='img//cup31.png' width='10%'>";}
if($_COOKIE['cup8'])
{echo "<img src='img//coffee34.png' width='10%'>";}
?>
这仅适用于前8个Cookie。我会再多吃24个饼干。 所以我的问题是
从一开始我就没有为这些cookie设置一些东西
这就是它显示错误消息ugly error messages
注意:未定义的索引:第56行的/opt/lampp/htdocs/cafe/orders.php中的cup1
那很糟糕。
我会留下一些屏幕截图。和我的代码的下载链接。
答案 0 :(得分:2)
如何存储单个cookie呢?你基本上存储了一系列布尔值,可以很容易地压缩成一个数字。
<?php
$images = [
'coffee69.png', // 0
'coffee70.png', // 1
'coffee80.png', // 2
'tea96.png', // 3
'milk34.png', // 4
'cola53.png', // 5
'etc.png', // 6
'more.png' // 7
];
$number = get(3) | get(5) | get(6); //get me some tea, cola, and etc.
echo $number . "\n\n"; //echos 104
rtn($images, $number);
/* Functions */
function get($num) {
return pow(2, $num);
}
function rtn($images, $num) {
$size = sizeof($images);
for ($i = 0; $i < $size; $i++)
if ($num & get($i))
echo '<img src="img/' . $images[$i] . '" width="10%">' . "\n";
}
104
<img src="img/tea96.png" width="10%">
<img src="img/cola53.png" width="10%">
<img src="img/etc.png" width="10%">
因此,当您决定在JavaScript端设置哪个Cookie时,您只需使用此功能生成您的号码:
function get(num) {
return Math.pow(2, num);
}
alert(get(3) | get(5) | get(6)); //echos 104
所以现在你只需将你的cookie设置为104(或者它给你的任何输出):
document.cookie.coffee = 104;
现在在PHP中,您只需要检查一个cookie:
if (isset($_COOKIE['coffee'])) {
$coffee = $_COOKIE['coffee'];
//and coffee now is some number that can be process with:
rtn($images, $coffee); //check the above code for reference
}
答案 1 :(得分:2)
使用isset()函数检查cookie集。
<?php
if(isset($_COOKIE['cup1']))
{echo "<img src='img//coffee69.png' width='10%' onClick='erasec1()'>";}
if(isset($_COOKIE['cup2']))
{echo "<img src='img//coffee131.png' width='10%'>";}
if(isset($_COOKIE['cup3']))
{echo "<img src='img//hot drink64.png' width='10%'>";}
if(isset($_COOKIE['cup4']))
{echo "<img src='img//caffeine1.png' width='10%'>";}
if(isset($_COOKIE['cup5']))
{echo "<img src='img//tea24.png' width='10%' onClick='erasec1()'>";}
if(isset($_COOKIE['cup6']))
{echo "<img src='img//coffee20.png' width='10%'>";}
if(isset($_COOKIE['cup7']))
{echo "<img src='img//cup31.png' width='10%'>";}
if(isset($_COOKIE['cup8']))
{echo "<img src='img//coffee34.png' width='10%'>";}
?>
答案 2 :(得分:1)
使用isset语句。它可能有所帮助。 <?php if (isset($_COOKIE['cup1'])){ echo '<img'; } if (!(isset($_COOKIE['cup1']))){ echo '<img src=\'noimage.jpg\'>'; } ?>
答案 3 :(得分:1)
来自您的问题:
从一开始我就没有为这些cookie设置的东西
是的,您需要使用isset()
来检查COOKIE
设置与否。
示例:强>
if(isset($_COOKIE['cup1'])) {
echo "<img src='img//coffee69.png' width='10%' onClick='erasec1()'>";
}
if(isset($_COOKIE['cup2'])) {
........