Php 如果未设置会话变量,则出现Smarty错误

Php 如果未设置会话变量,则出现Smarty错误,php,session,smarty,Php,Session,Smarty,我正在修改我们网站上的优惠券系统,现在出现了以下问题: 我正在检查会话的cc_id(couponcode_id),如果设置了,我会将变量提供给一个PHP文件,其中包含一些函数。举个例子: {if $smarty.session.cc_id} <div class="coupon-outter"> <div class="coupon"> <div class="coupon-code-start">

我正在修改我们网站上的优惠券系统,现在出现了以下问题:

我正在检查会话的cc_id(couponcode_id),如果设置了,我会将变量提供给一个PHP文件,其中包含一些函数。举个例子:

{if $smarty.session.cc_id}
    <div class="coupon-outter">
        <div class="coupon">
            <div class="coupon-code-start">
                <p>Ihr Coupon ist aktiv.<br>
                Klicken Sie hier für Details</p>
            </div>
        <div class="coupon-code-detail">
           <div class="coupon-block-headline">
              <p class="coupon-headline">{$smarty.session.cc_id|@get_coupon_code}</p>
           </div>   
        </div>
        </div>
    </div>  
{/if}
因此,我知道如果未设置会话cc_id,Smarty将无法传递该会话。但是如果没有设置,它甚至不应该执行整个代码块,但是它正在尝试,然后我得到了错误,因为它无法传递cc_id

这里是我的PHP:

function get_coupon_code($ccid){
    $sql = "SELECT coupon_code FROM coupons WHERE coupon_id='".$ccid."'";
    $retval = mysql_query($sql);
    $row = mysql_fetch_assoc($retval);

    return $row['coupon_code'];
}

任何解决此问题的建议?

{if isset($smarty.session.cc\u id)}都可以解决此问题。

为什么要抑制来自
获取优惠券代码的错误处理它们总比忽视它们好我不是故意压制它们的。我真的不知道怎么解决这个问题。对我来说,它为什么不工作毫无意义。只是出于好奇,如果你编写initest{$smarty.session.cc_id}endtest或{$smarty.session.cc_id | var_dump}我已经找到了错误。由于某种原因,my.php数据不会包含在每个页面中,smarty会尝试将cc_id传递给php,即使它不在那里,即使返回值为空。但它会检查该功能是否有效。
function get_coupon_code($ccid){
    $sql = "SELECT coupon_code FROM coupons WHERE coupon_id='".$ccid."'";
    $retval = mysql_query($sql);
    $row = mysql_fetch_assoc($retval);

    return $row['coupon_code'];
}