0

訪問したページ数に関係なく、すべての訪問者に対してポップアップ広告を1回だけ表示したいと思います。したがって、このコードを使用していましたが、このコードは、アクセスしたページごとに新しい広告をポップアップしていることがわかりました。どうすれば修正できますか?:

<?php if(!isset($_COOKIE['ad_zedo'])) {

 setcookie('ad_zedo',1);
?>
<script language="JavaScript">
var zflag_nid="1185"; var zflag_cid="3307"; var zflag_sid="823"; var zflag_width="1"; var zflag_height="1"; var zflag_sz="15";
</script>
<script language="JavaScript" src="http://d8.zedo.com/jsc/d8/fo.js"></script>

<?php
}
?>
4

3 に答える 3

1

有効期限を設定していないため、Cookieの有効期限が切れています。次のように有効期限を設定します。

setcookie('ad_zedo',1, time()+60*60*24*30); // 30 days

マニュアルから:

期限切れ

0に設定するか省略した場合、Cookieはセッションの終了時(ブラウザが閉じたとき)に期限切れになります。

また、Cookieを設定するとHTTPヘッダーが送信されるため、を使用する前に出力を取得できないことを忘れないでくださいsetcookie()


Cookieの代わりにPHPセッションにフラグを保存することもできます。そのようにすると、新しいPHPセッションが開始されたときにポップアップが表示されます(その有効期限はサーバー構成によって定義されます)。

<?php if(!isset($_SESSION['ad_zedo'])) {

 $_SESSION['ad_zedo'] = true;
?>

session_start()各ページに必要です。

于 2012-06-11T10:26:54.917 に答える
0

MrCodeがすでに言ったように、OK:たとえば、コードは次のようになりますので、Sessionsで作業する必要があります-テストされていませんが、実行する必要があります...

<?php 
session_start();
if(!isset($_SESSION['ad_zedo'])) {
$_SESSION['ad_zedo'] = true;
?>
<script language="JavaScript">
var zflag_nid="1185"; var zflag_cid="3307"; var zflag_sid="823"; var zflag_width="1";      var zflag_height="1"; var zflag_sz="15";
</script>
<script language="JavaScript" src="http://d8.zedo.com/jsc/d8/fo.js"></script>

<?php
}
?>

Kこれは魔法を行う必要があります;)。

于 2012-06-11T10:50:12.457 に答える
0

出力またはヘッダーがサーバーに送信される前に、ページの最初でsetcookieを呼び出します。そうしないと、cookieが設定されません。

<?php 
    $showadzedo = false;
    if(!isset($_COOKIE['ad_zedo'])) { $showadzedo = true; setcookie('ad_zedo',1); } 
?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

[...]

<?php if($showadzedo) { ?>
    <script language="JavaScript">
    var zflag_nid="1185"; var zflag_cid="3307"; var zflag_sid="823"; var zflag_width="1"; var zflag_height="1"; var zflag_sz="15";
    </script>
    <script language="JavaScript" src="http://d8.zedo.com/jsc/d8/fo.js"></script>
<?php } ?>
于 2012-06-11T10:55:11.920 に答える