如果没有设置Cookie,请不要错误

时间:2016-02-07 03:50:48

标签: javascript php html css3 cookies

CoffeeNoticeError

好的,我试图查看可能的副本,但没有帮助

现在,我有一个咖啡网站,主要内置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

那很糟糕。

我会留下一些屏幕截图。和我的代码的下载链接。

更新

Links to webpage

4 个答案:

答案 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";
}

Output

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'])) {
........