مشکل در کارکردن با session

rezaei12

New Member
به نام خدا
سلام.
من برای اجرای php از xamp استفاده می کنم ولی هنگام کارکردن با session، به error زیر برخورد می کنم:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\Program Files\xampp\htdocs\2ww.php:12) in D:\Program Files\xampp\htdocs\2ww.php on line 13
این هم اسکریپتی که باعث به وجود آمدن این erorr شد:
<html<


<head>
<title>A sesssion hit counter</title>
</head>

<body>
<h1>A session hit counter</h1>
Hello there. You have been here
<?php
session_start();
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
else {
$_SESSION['count']++;
}
echo $_SESSION['count']
?>
times before.
</body>

</html>
 

sunrise

Member
اول فايل اين رو اضافه کنيد، مشکل احتمالا حل ميشه.
PHP:
ob_start();
 

P.H.P

Member
این خطا به این خاطره که شما اینکد فایل رو utf-8 قرار دادید
باید به ansi تغییر بدید مشکل حل میشه
 

sunrise

Member
PHP:
<?php ob_start(); ?>
<html>

<head>
<title>A sesssion hit counter</title>
</head>

<body>
<h1>A session hit counter</h1>
Hello there. You have been here
<?php
session_start();
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
else {
$_SESSION['count']++;
}
echo $_SESSION['count']
?>
times before.
</body>

</html>
 

P.H.P

Member
هیچ مشکلی برای فارسی به وجود نمیاد

و فقط باید ansi بشه
همین
 

sunrise

Member
هیچ مشکلی برای فارسی به وجود نمیاد

و فقط باید ansi بشه
همین
البته اين مشکل دوستمون در اين مورد خاص به اينکدينگ فايل مرتبط نميشه و با اينکه مطمئن بودم با گذاشتن ob_start(); در ابتداي فايل مشکل حل ميشه اما با اين حال من تست کردم و مشکل رو حل مي کنه.
 

hidensoft

Member
استفاده از ob_start به تنهایی اونم به صورت مکرر به سرور فشار میاره ، توصیه می شه که از ob_end_flash در انتها استفاده بشه .

هیچ مشکلی برای فارسی به وجود نمیاد

و فقط باید ansi بشه
همین
من نمی دونم شما از چه OS استفاده می کنید اما در windows اکثر ادیتور ها با ansi کردن فرمت فایل با فارسی دچار مشکل می شن.

session_start رو در ابتدای فایل بنویس تا مشکل حل بشه .
اگه اینم کار رو بکنید هم مشکل حل می شه اما با ob_start دیگه هیچ جای نگرانی نیست. اما این موضوع رو هم باید در نظر بگیرید که در صفحات سنگین استفاده از ob_start با توجه به سرعت اینترنت در ایران اشتباهه ، همونطور که می دونید با استفاده از این تابع PHP تمام خروجی ها رو میگیره بعد در انتها یک جا به مرور گر می فرسته.

موفق باشید.
 

P.H.P

Member
بله طبق گفته دوست عزیز حامد (sunrise):rose: با قرار دادن ob_start مشکل حل میشه

من خطای
کد:
Cannot send session cache limiter

رو با خطای
کد:
Cannot send session cookie

اشتباه گرفتم:-?
 

rezaei12

New Member
دوباره سلام!
حالا درست شد، مرسی! فقط می شه توضیح بدبید یعنی چی که تمام خروجی ها رو می گیره و بعد یک جا م می فرسته؟
یعنی ob_start() چی کار می کنه؟
 

sunrise

Member
دوباره سلام!
حالا درست شد، مرسی! فقط می شه توضیح بدبید یعنی چی که تمام خروجی ها رو می گیره و بعد یک جا م می فرسته؟
یعنی ob_start() چی کار می کنه؟
اين تابع باعث ميشه بافر خروجي فعال بشه.

توضيحات کاملتر به همراه مثال هايي از اين مورد رو مي تونيد از لينک زير مطالعه فرماييد:

http://ir.php.net/manual/en/function.ob-start.php

البته ايني که دارم خدمتتون عرض مي کنم نظر شخصي خودم هست و خودم هميشه ترجيح ميدم از کوکي ها به جاي سشن استفاده کنم، چون دردسرهايي که بوجود مياره کمتر هست و از طرفي دست شما بيشتر بازه.
 

hidensoft

Member
چون نظر شخصیه دخالت نمی کنم اما یه موضوعی هست که گفتم به اون دوستمون بهتره بگم. حتما اطلاعات رو بصورت کد شده ذخیره کنید . برای راهنمایی از base 64 استفاده کن که می شه برشگردوند.
 
سلام دوست من
من دوتا احتمال واسه این مشکل میبینم
یکی اینکه شما قبلا سشن رو تو یه صفحه روت استارت کردید و این اسکریپت رو تو اون صفحه اینکلود میکنید ...
و دیگری اینکه شما در فایلی که اسکریپت توش نوشته شده کاراکتر های ممنوعه پیش فرض دارید ...
این کاراکتر ها رو خط اول وجود دارند که با ویرایش گرهای ساده و ویرایشگرهایی مثل دریم ویور قابل دیدن نیستن ...
این فایل رو با ویرایش گرهایی مثل zend studio باز کنید و اون کاراکتر ها رو پاک کرده و دوباره فایل رو ذخیره کنید ..
من دقیقا یادم نیست به این کاراکتر ها و مشکل چی میگن ...
اما به احتمال زیاد مشکلتون همین مورد دومه:-?
موفق باشید :cool:
 

جدیدترین ارسال ها

بالا