【问题标题】:Don't want errors if Cookies are not set [duplicate]如果未设置 Cookie,则不希望出现错误 [重复]
【发布时间】:2016-05-16 22:15:09
【问题描述】:

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

注意:未定义的索引:cup1 在 /opt/lampp/htdocs/cafe/orders.php 第 56 行`

这很糟糕。

我将留下一些屏幕截图。以及我的代码的下载链接。

更新

Links to webpage

【问题讨论】:

    标签: javascript php html css cookies


    【解决方案1】:

    使用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%'>";}
    
     ?>

    【讨论】:

    • Thankx Guy,我刚刚发布了一个指向该网站的链接,请检查一下。是的,isset() 函数解决了它......干杯
    • @xuki-team 很高兴知道您的问题是解决好工作 Smit。
    【解决方案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
    
    }
    

    【讨论】:

      【解决方案3】:

      使用 isset 语句。它可能会有所帮助。 &lt;?php if (isset($_COOKIE['cup1'])){ echo '&lt;img'; } if (!(isset($_COOKIE['cup1']))){ echo '&lt;img src=\'noimage.jpg\'&gt;'; } ?&gt;

      【讨论】:

        【解决方案4】:

        根据您的问题:

        从一开始我就没有为这些 cookie 设置任何东西

        是的,您需要使用isset() 来检查COOKIE 是否设置。

        示例:

        if(isset($_COOKIE['cup1'])) {
             echo "<img src='img//coffee69.png' width='10%' onClick='erasec1()'>";
        } 
        
        if(isset($_COOKIE['cup2'])) {
        ........
        

        【讨论】:

          猜你喜欢
          • 2015-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-09
          • 1970-01-01
          • 2015-08-27
          • 2021-11-28
          • 2014-09-18
          相关资源
          最近更新 更多