0

ユーザーが 1 日に Web サイトにアクセスしていない場合は、Cookie を作成し、データベース レコードのサイト カウンターを更新する次のスクリプトがあります。それ以外の場合は、現在のアクセス数を表示するだけです。現在、インデックス ページをリロードするたびに Cookie が NULL を表示しているため、テーブルが必要以上に更新され続けています。このスクリプトが含まれている場合、インデックス ページで Cookie の値を維持するにはどうすればよいですか?

if (empty($_COOKIE["visits"])) {
            // increment the counter in the database
            mysql_query("UPDATE visit_counter ".
                     " SET counter = counter + 1 ".
                     " WHERE id = 1");

            /* Query visit_counter table and assign counter
               value to the $visitors variable */
            $QueryResult = mysql_query("SELECT counter ".
                    " FROM visit_counter WHERE id = 1");

            // Place query results into an associative array if there are any
            if (($row = mysql_fetch_assoc($QueryResult)) !== FALSE) {
                $visitors = $row['counter'];
            } else {
                // else if this is the first visitor set variable to 1
                $visitors = 1; 
            }

            // Set cookie value
            setcookie("visits", $visitors, time()+(60*60*24));
        } else {
            $visitors = $_COOKIE["visits"];
        }

Cookieスクリプトはインデックスファイルに含まれているため、以下がインデックスファイルになります...

<?php include("Includes/cookie.php"); ?>
var_dump($_COOKIE["visits"]);        /* Always returns NULL on this page but
                                        returns the cookies real value if 
                                         run straight from cookie.php script */


    /* Some main page content goes here */


   /* The cookie value is echoed in the footer file that is included by
      creating a statement that says echo "total visitors: ".$visitors; */
   <?php include("Includes/footer.php"); ?>
4

1 に答える 1

0

問題は次のset_cookie
セットにあります。

<?php
// Set cookie value
setcookie("visits", $visitors, time()+(60*60*24));
?>

<?php
// Set cookie value
setcookie("visits", $visitors, time()+(60*60*24),'/'); // Define the cookie path to be used on this domain
?>

幸運を

于 2013-10-23T12:31:02.573 に答える