אתה נמצא כאן סקריפטים  >>  מונה

מונה

סקריפט שמנהל מונה (counter) המבוסס על עוגיות. המונה יתקדם ב-1 כל פעם שנכנסים לדף ואין מידע קודם שכבר ביקרו בדף זה. המונה לא יתקדם במקרה שיש עוגיה שמורה המסמנת כי היה ביקור קודם בדף. ניתן לשנות את זמן החיים של העוגיה (פרק הזמן שלאחריו כניסה תיחשב כחדשה, ללא ביקור קודם), וניתן להגדיר כי העוגיה תהיה קיימת כל עוד חלון הדפדפן לא נסגר. הסקריפט תומך בהדפסת המונה עפ"י תמונות של ספרות או בטקסט בגופן, בצבע ובגודל מוגדרים מראש.

הערות:
משתמש בקובץ שמכיל את מספר הכניסות. שימוש בעוגיות. ללא צורך בבסיס נתונים.

שימוש בפונקציות:
fclose()   file_exists()   filesize()   fopen()   fread()   fwrite()   getimagesize()   isset()   setcookie()   str_pad()   time()   

הורד סקריפט
שם קובץ: counter.zip
גודל קובץ: 16.5 KB

מבנה קבצים

counter.php - הקובץ הראשי של התוכנית. בקובץ זה מנוהל המונה ונוצרים העוגיות.
counter_conf.inc - קובץ ההגדרות של התוכנית הנכלל בראש הקובץ counter.php.

שימוש והתקנה

כדי להתקין את המונה, צריך ליצור קובץ טקסט לקריאה ולכתיבה (יש לדאוג שהרשאות הספריה בה שמור הקובץ הם הרשאות של קריאה וכתיבה). קובץ זה ישמור בתוכו את מספר הכניסות לדף מסויים או לאתר. את הקובץ נשאיר ריק מתוכן, התוכנית תכתוב לתוכו את מספר הכניסות העדכני. אפשר גם לכתוב את מספר הכניסות היישר לקובץ.

כעת נפתח את קובץ ההגדרות counter_conf.inc ונשנה את ההגדרות בהתאם לרצוי. $counter_file מכיל את הדרך לקובץ המונה שיצרנו (הדרך תיהיה יחסית למיקום הדף שבו מכלילים את הסקריפט). $counter_style יהיה אחת מן האפשרויות "image" או "text", ויגדיר את סוג ההצגה של המונה (תמונות או טקסט). $counter_initial יהיה הערך ההתחלתי של המונה באם הקובץ ריק או לא קיים. $counter_digit הוא מערך המכיל את המיקום של תמונות הספרות (יחסית למיקום הדף הראשי). ישנם עוד הגדרות שניתן לשנות ומוסברות בקובץ ההגדרות עצמו. במקום מיקום יחסי ניתן לכתוב את המיקום המלא ברשת, שזה יותר בטוח.

כעת כל שנותר הוא להשתמש במונה. כלול את קובץ המונה בדף שבו אתה מעוניין להשתמש בו בראש הדף לפני כל הדפסה לפלט, וזאת משום שהתוכנית משתמשת בעוגיות, ולא ניתן יהיה ליצור עוגיות אחרי שה-header-ים נשלחים, והמונה עלול לא לעבוד כמתוכנן. עצם ההכללה של קובץ המונה בדף לא מדפיסה את מספר הכניסות לדף. כדי להדפיס את מספר הכניסות יש לקרוא (במקום שבו רוצים להציג את המונה) לפונקציה CounterAutoIncrease(true), שמקדם את המונה במקרה הצורך ומדפיס לדפדפן את מספר הכניסות עפ"י ההגדרות שנקבעו, או לפונקציה CounterPrint() שמדפיסה את מספר הכניסות הנוכחי ללא קידום של המונה. ניתן להשתמש בפונקציה CounterIncrease($num) כדי לקדם את המונה ב-$num כניסות, ובפונקציה CounterSetTo($num) כדי לקבוע את מספר הכניסות ל-$num (2 הפונקציות הללו לא מדפיסות פלט).

הסבר

בתחילת הסקריפט אנו מייבאים את קובץ ההגדרות counter_conf.inc, וקובעים בהתחלה כי זהו ביקור ראשון בדף ($counter_visited=false) ומאתחלים את מספר הכניסות עם הערך ההתחלתי של המונה.

<?php
  /* sets/updates the cookie */
  if ($counter_cookie_with) //if cookies are enabled
  
{
     $counter_visited=isset($HTTP_COOKIE_VARS[$counter_cookie_name]); //checks if cookie exists
  
   if ($counter_cookie_time==0) //if we want to save the cookie just for the window
  
      setcookie($counter_cookie_name,"visited",0); //creates a cookie for this window only
  
   else //if we set a period of cookie life time
  
      setcookie($counter_cookie_name,"visited",time()+$counter_cookie_time); //creates/updates the cookie
  
}
?>

בקוד למעלה אנו בודקים אם אנו מבססים את המונה על עוגיות ($counter_cookie_with), ואם כן אז בודקים האם קיימת עוגיה שמוגדר בה המשתנה בשם $counter_cookie_name, ומעדכנים את $counter_visited בהתאם (שים לב: אם לא משתמשים בעוגיות אז $counter_visited יישאר false תמיד). משתמשים ב-2 צורות שונות של יצירת עוגיות כאשר, זמן החיים של העוגיה הוא עד סגירת הדפדפן ($counter_cookie_time=0), או זמן אחר הנקבע בקובץ ההגדרות ($counter_cookie_time>0), אך בשתיהם אנו יוצרים עוגיה עם משתנה בשם $counter_cookie_name המכיל את הערך "visited".

באמצעות הפונקציה file_exists() אנו בודקים אם הקובץ שמכיל את מספר הכניסות קיים. במקרה והקובץ לא קיים, התוכנית מנסה ליצור אותו ולשמור בו את הערך ההתחלתי של המונה. אם הקובץ קיים, אז פותחים אותו לקריאה וקוראים ממנו את מספר הכניסות כמחרוזת. את המחרוזת אנו הופכים למספר שלם ע"י המרה, ואם המספר קטן מ-0 אנו הופכים אותו לערך ההתחלתי של המונה. לבסוף אנו סוגרים את הקובץ.

CounterPrint($c=-1) - פונקציה זו מדפיסה לדפדפן את המונה עם הערך $c, או עם מספר הכניסות העדכני (כאשר $c=-1). אם $c הוא מספר שלילי אנו הופכים אותו למספר הכניסות העדכני שנקרא מתוך הקובץ. $sc הוא אותו המספר בצורה של מחרוזת (משמתמשים בהמרה). אם מוגדר להדפיס עם אפסים מובילים ($counter_zero_lead=true), אז אנו ממלאים את המחרוזת באפסים באורך שמוגדר ($counter_length) בעזרת הפונקציה str_pad(). אם צורת המונה מוגדרת להיות מודפסת כתמונות של ספרות, אנו מוצאים את גודל התמונה באמצעות הפונקציה getimagesize(), שמחזיר מערך עם מידע על התמונה, ובאמצעות הלולאה אנו מדפיסים לדפדפן ספרה אחר ספרה. ואם מוגדר להציג את הדפדפן כטקסט, אז מדפיסים את המחרוזת $sc בפונט, בצבע ובגודל שהוגדרו.

CounterIncrease($num=1) - פונקציה זו מקדמת את המונה ב-$num כניסות, ושומרת את הערך החדש בקובץ המונה. פותחים את קובץ המונה לכתיבה, ובמקרה של שגיאה או תקלה בפתיחת הקובץ מודפסת הודעת שגיאה. מקדמים את מספר הכניסות ב-$num, וכותבים את הערך החדש בקובץ המונה. סוגרים את הקובץ ומשנים את הדגל של ביקור בדף לאמת ($counter_visited=true).

CounterSetTo($c=-1) - פונקציה זו מעדכנת את מספר הכניסות שבקובץ למספר $c או לערך ההתחלתי של המונה (כאשר $c=-1). פונקציה זו עובדת בצורה דומה לפונקציה CounterIncrease(), רק שכאן היא שומרת ערך אחר.

CounterAutoIncrease($print=false) - פונקציה זו מקדמת את המונה ב-1 במידה וזו כניסה חדשה לדף, ובנוסף מדפיסה את המונה לדפדפן כאשר $print=true. אם לא ביקרו בדף זה לפני כן (כאשר $counter_visited=false), אז מקמדמים את מספר הכניסות ב-1 באמצעות הפונקציה CounterIncrease(). ואם $print=true, אז מדפיסים את המונה לדפדפן באמצעות הפונקציה CounterPrint().


תגובות בנושא

המונה אינו עובד 03-12-03 04:01
 ליאת
#745

שיניתי את תמונת המונה ל GLOW
וב-
$counter_initial=12257
במקום 1 רשמתי את מס' המונה שכרגע יש לי כבר
אך זה לא עובד וגם לא מופיע בכלל באתר,
הכין עליי למקם את הקוד ומה עשיתי לא בסדר?

מיקום הקוד 03-12-03 12:00
 אלי חן (מנהל)
#758

הקוד צריך לבוא בתחילת הסקריפט, לפני שליחת ה headers (לפני שליחת פלט למסך). הסיבה לכך היא כי משתמשים ב COOKIE...

שאלה 07-12-03 01:00
 אבי
#934

("כלול את קובץ המונה בדף שבו אתה מעוניין להשתמש ")

אני רוצה להשתמש במונה בדף Html
איך בדיוק אני כולל את המונה בתחילת הקובץ? עם איזה קוד?

לכלול את הקובץ? 07-12-03 07:01
 אלי חן (מנהל)
#963

עושים זאת באמצעות include כך:
include "counter.php";
תדאג לכלול את הקובץ לפני שליחת ה-headers, אחרת תקבל שגיאה.

עזרה! 07-12-03 10:02
 ערן לוי
#985

אתה יכול לרשום את כל הפקודות שאני אוכל לעשות רק "העתק" ו"הדבק" ל FRONT PAGE? בבקשה??!

שאלה חשובה!!! 02-11-03 05:00
 Mew
#1297

אני רוצה לגרום למונה להתאפס מדי יום, כשמגיעה השעה 00:00. לא הצלחתי לתכנת קוד כזה, האם אתה יכול לעזור לי בבקשה?

הכנסתי את ההגדרות 02-11-03 11:00
 מיכאל
#1315

הכללתי את הקובץ בראש הדף
וביקשתי שידפיס לי את הערך של מספר המבקרים.
ללא תוצאות.

מה עושים?

זה מופיע ישר אחרי ה include! 02-11-03 17:01
 עידן
#1327

הוספתי והגדרתי, ובתחילת הדף רשמתי:
<? include 'counter.php' ?>
והכל עובד יפה, בלי שגיאות, אבל זה מופיע ישר במקום שהוספתי את זה, ואני לא רוצה שזה יופיע שם.
מה לעשות?

יצירת path למונה 08-12-04 08:00
 דוד אזולאי
#1741

אחרי שהורדתי את המונה,זה בא אם path שאליו כל המידע של המונה נשמר (זה מה שאני מבין מזה),
אבל מרוב שאני "חכם" הורדתי איזה תוכנה ורציתי למחוק אותב דרך "הוספה או הסרה של תוכניות" ולא יודע למה,כל התיקיה שלי נמחקה!
אז רציתי לדעת אם אפשר ליצור עוד path כמו שהיה
כשהורדתי את המונה.
זה נקרא cnt.dat כשהורדתי את זה,איך עושים את זה?

איך עושים 06-12-05 17:01
 כהן חח
#2502

ניסיתי לעשות שמתי שמגיעה השעה 12 בלילה המונה מתאפס
איך עושים את זה???
תודה לעוזרים


לדף הקודםבאנר רנדומלי -הקודם
לתחילת הדףלתחילת הדף
הבא- לוח שנהלדף הבא