PDA

View Full Version : سوال: شمار بازدیدکنندگان سایت PHP



hansolbook
پنج شنبه 28 اردیبهشت 1391, 00:23 صبح
سئوال : برنامه ای بنویسید که شمار بازدید کنندگان سایت را با هر بار باز کردن صفحه PHP بازدید اضافه شود به فایل text محاسبه و نمایش دهد.

با توجه به قسمت کار کردن با فایل ها با استفاده از دستور read و write
باید یک فایل html داشته باشه که نمیدونم تا فایل html باز میشه تعداد بازدید اضافه میشه به فایل متنی یا باید textbox و submit باشه که کلیک کنی به فایل php منتقل شه و تعداد بازدید اضافه شه در فایل php هم که باید کد برنامه نوشته بشود.
همانند یک برنامه مثل زیر
در این جا مقدار وارد شده توسط کاربر در فایل name1.txt قرار میگیرید


<?php
$a=fopen("name1.text:,"at");
$b=$-post("name1");
fwrite($a,$b.:\n");
?>

در اینجا جا داره از دوست عزیزم آقای mohamadali1374 تشکر کنم به خاطر کمک های که به من کردن در نوشتن این برنامه ها و خواهش میکنم که در نوشتن این برنامه من رو هم مثل قبل راهنمایی کنن. :قلب::لبخند:

ravand
پنج شنبه 28 اردیبهشت 1391, 08:04 صبح
ميخواي تعداد بازديد رو بدست بياري يا تعداد بازديد كنندها رو؟
اگه ميخواي تعداد بازديد رو بدست بياري. ميتوني برنامه اي بنويسي كه با هر رفرش صفحه مقداري رو به ديتابيس وارد كنه. كه اگه فيلد id اصلي و auto_increment باشه مقادير ركورد رو تا اون شماره اي كه ايجاد شده ثبت ميكنه.

hansolbook
پنج شنبه 28 اردیبهشت 1391, 09:09 صبح
اصلا به SQL کار نداریم فقط PHP

djsaeedkhan
پنج شنبه 28 اردیبهشت 1391, 10:17 صبح
سلام
من با فایل کار نکردم. ولی شما یه فایل تکست می سازی و داخلش 0 میذاری. هر بار که صفحه رفرش میشه شما میای فایلو باز می کنی و عدد رو می خونی و تبدیل به int می کنی (ضروری نیس) و بعد یکی بهش اضافه می کنی و دوباره در فایل ذخیره می کنی. به همین راحتی . به همین خوشمزگی

soroush.r70
پنج شنبه 28 اردیبهشت 1391, 11:59 صبح
اینو ببیبن جالبه:


////////////////////////////////////نمایش تعداد بازدید امروز دیروز و کل/////////////////////////////////////////////
list($today, $yesterday, $total, $timestamp) = file('amar.txt');
$total = (int)$total + 1;
$today_date = getdate();
$last_date = getdate((int)$timestamp);
if( $today_date['yday'] == $last_date['yday'])
{
$today = (int)$today +1;
}
else
{
$yesterday = (int)$today + 1;
$today = 1;
$total++;
}
$timestamp = time();
$yesterday = (int)$yesterday;
file_put_contents('amar.txt', $today."\n".$yesterday."\n".$total."\n".$timestamp );

eshpilen
پنج شنبه 28 اردیبهشت 1391, 12:26 عصر
فایل باید قفل هم بشه، وگرنه دسترسی همزمان میتونه باعث خراب شدنش بشه.

soroush.r70
پنج شنبه 28 اردیبهشت 1391, 12:41 عصر
فایل باید قفل هم بشه، وگرنه دسترسی همزمان میتونه باعث خراب شدنش بشه.

قفل به چه صورت یعنی این کدی که من در بالا گذاشتم باید چطوری بشه ....؟

eshpilen
پنج شنبه 28 اردیبهشت 1391, 14:12 عصر
به گمانم چیزی شبیه این:

<?php

$fh=fopen('amar.txt', 'r+b');

flock($fh, LOCK_EX);

list($today, $yesterday, $total, $timestamp) = explode("\n", fread($fh, 2000));

echo "today: $today yesterday: $yesterday total: $total timestamp: $timestamp";

$total = (int)$total + 1;
$today_date = getdate();
$last_date = getdate((int)$timestamp);
if( $today_date['yday'] == $last_date['yday'])
{
$today = (int)$today +1;
}
else
{
$yesterday = (int)$today + 1;
$today = 1;
$total++;
}
$timestamp = time();
$yesterday = (int)$yesterday;

ftruncate($fh, 0);

fseek($fh, 0);

fwrite($fh, $today."\n".$yesterday."\n".$total."\n".$timestamp );

flock($fh, LOCK_UN);

fclose($fh);

?>

soroush.r70
پنج شنبه 28 اردیبهشت 1391, 15:55 عصر
خیلی متشکرم یه سوال : راهی وجود داره که در سورس بالا تعداد کاربران آنلاین رو نمایش بدیم.

hansolbook
پنج شنبه 28 اردیبهشت 1391, 18:00 عصر
سلام دوست من ممنون از راهنماییت فقط این به چه معنا ست timestamp
و چرا در فایل متنی آمار به این صورت ذخیره میشه 6
1
7
1337261847 ولی در نمایش دقیق است؟

hansolbook
پنج شنبه 28 اردیبهشت 1391, 18:02 عصر
در فایل متنی میچسبه به هم مثلا بازدید کل 6 است و امروز 5 است و دیروز 1 است میچسبه به هم عدد 615 نمایش داده میشه در فایل متنی کاریش نمیشه کرد؟

eshpilen
پنج شنبه 28 اردیبهشت 1391, 18:12 عصر
در فایل متنی میچسبه به هم مثلا بازدید کل 6 است و امروز 5 است و دیروز 1 است میچسبه به هم عدد 615 نمایش داده میشه در فایل متنی کاریش نمیشه کرد؟
احتمالا در ویندوز و با نوتپد باز میکنید.
چون در ویندوز برای انتهای خط از دو کاراکتر \r\n استفاده میشه ولی در لینوکس از \n.
حالا اگر براتون خیلی مهمه میتونید در کد هرچی \n هست با \r\n جایگزین کنید. بنظرم درست میشه.
ولی نیازی به این کار نیست، و اگر با نوتپد++ باز کنید درست نشون میده.

دقت کنید \r قبل از \n هست ولی در نوشته اینجا معکوس نشون میده.