PDA

View Full Version : همچنان اندر خم این ارورم (حل شد)



111qqq
شنبه 13 خرداد 1391, 16:36 عصر
سلام.دیشب به نظر میومد که حل شده ولی خب دوباره این ارور اجرا می شه. جالبه این کدم به طور کامل در localhost اجرا می شه بدون اینکه مشکلی داشته باشه. روی هاست این مشکل مسخرو را داره. امیدوارم کسی کمک کنه.
Warning: session_start() [function.session-start (http://moattari.ir/key/function.session-start)]: Cannot send session cache limiter - headers already sent (output started at

Unique
شنبه 13 خرداد 1391, 16:51 عصر
دوست عزیز headers already sent هیچ معنی دیگری غیر از اینکه قبل از اجرای session_start() شما با ارسال هر نوع Data باعث ارسال Header شده اید ندارد !
session_start را به سطر اول کد های خود منتقل کنید و اگر این کار را کرده اید یا پس از انجام آن باز هم با این مشکل روبرو شده اید ! مطمئن شوید که صفحه خود را بدون BOM مربوط به utf-8 ذخیره میکنید !
کلا چک کنین ببینید چی ممکنه قبل از این تابع به Browser ارسال شده باشه !

111qqq
شنبه 13 خرداد 1391, 16:57 عصر
کلا sesiion من یک بار استارت می شه که اون هم اولین خط هست. درمورد utf متوجه نشدم منظورتون چیه. ایا اگر صفحات من با رو با header به utf 8 مشکلی هست؟؟؟

MMSHFE
شنبه 13 خرداد 1391, 17:53 عصر
فایلتون رو با ++Notepad با کدگذاری UTF-8 without BOM ذخیره کنید.

MostafaEs3
شنبه 13 خرداد 1391, 18:25 عصر
آقای شهرکی به نظرتون میشه یک کد نوشت که فایل رو خودش به این حالت تبدیل کنه ؟ :متفکر:

111qqq
شنبه 13 خرداد 1391, 19:31 عصر
سلام. هنوز مشکل باقیست. اقای شهرکی کاری رو که گفتید انجام دادم. البته ببخشید ها وقتتون رو می گیرم. ممنون می شم اگر پاسخ بدید.البته الان این رو می گه.
Cannot modify header information - headers already sent by (output started at /home

MMSHFE
شنبه 13 خرداد 1391, 20:19 عصر
مطمئن هستین فایل رو با کدگذاری UTF-8 without BOM ذخیره کردین؟ درهرحال بعنوان تیر خلاص، این دستور رو ابتدای فایلتون بگذارین:

<?php ob_start(); ?>
و این رو هم انتهاش:

<?php ob_end_flush(); ?>
موفق باشید.

MMSHFE
شنبه 13 خرداد 1391, 20:24 عصر
آقای شهرکی به نظرتون میشه یک کد نوشت که فایل رو خودش به این حالت تبدیل کنه ؟ :متفکر:
قبلاً با ++C یک برنامه نوشته بودم که آدرس پوشه رو میگرفت و کل فایلهای UTF-8 اون رو به UTF-8 without BOM تبدیل میکرد. بعلاوه هرچی ?> هم پیدا میکرد به php?> تبدیل میکرد که استاندارد بشه (چون این مشکل رو با خیلی از کدهایی که از اینترنت دانلود میکردم داشتم). البته الآن باید بگردم ببینم کجا ذخیره کردمش. کار سختی هم نیست اگه بخواین خودتون بنویسید. میتونید فایل رو با Hex Editor باز کنید و BOM رو پیدا کنید. بعد با ++C فایل رو خونده و همون کارکترهای اولیه رو حذف کرده و دوباره فایل رو ذخیره کنید. این کار رو برای تمام فایلهای توی پوشه که هدر یونیکد توشون هست باید تکرار کنید.

MMSHFE
شنبه 13 خرداد 1391, 20:30 عصر
سلام.دیشب به نظر میومد که حل شده ولی خب دوباره این ارور اجرا می شه. جالبه این کدم به طور کامل در localhost اجرا می شه بدون اینکه مشکلی داشته باشه. روی هاست این مشکل مسخرو را داره. امیدوارم کسی کمک کنه.
Warning: session_start() [function.session-start (http://moattari.ir/key/function.session-start)]: Cannot send session cache limiter - headers already sent (output started at
دلیل اینکه روی localhost بدون مشکل کار میکنه اینه که توی تنظیمات PHP شما در localhost ویژگی Output Buffering فعاله (میتونید با کلیک روی آیکن Wamp و انتخاب گزینه PHP و بعد PHP Settings این مورد رو بررسی کنید)، ولی توی هاست واقعی فعال نیست. دستوری که گفتم، بافر رو برای شما روی هاست فعال میکنه.

111qqq
شنبه 13 خرداد 1391, 20:36 عصر
در کمال ناباوری این هم درست نشد. به نظرتون الان من چه کاری باید انجام بدم.

MMSHFE
شنبه 13 خرداد 1391, 20:38 عصر
فایلتون رو اینجا ضمیمه کنید ببینیم چی به چیه. اگه مشکل از فایل شما نباشه یه بلایی سر «راسموس» میارم، اگه عکسش باشه، سر شما! :چشمک: :عصبانی++:

111qqq
شنبه 13 خرداد 1391, 20:43 عصر
البته کد واقعی ها. اگر ایمیلتون هست براتنون ایمیل کنم. چون بالاخره اطلاعات همه دایرکتوری ها رو می شه دید دیگه

MMSHFE
شنبه 13 خرداد 1391, 20:44 عصر
فرقی نمیکنه. هم میتونید همینجا ضمیمه کنید و هم به ایمیلم به نشانی mmshfe@gmail.com بفرستین.

111qqq
شنبه 13 خرداد 1391, 20:50 عصر
همین الان براتون فرستادم.door .php همون صفحه ی login منه که include های ان دز design هست.

MMSHFE
شنبه 13 خرداد 1391, 21:06 عصر
«لردورف» ایندفعه شانس آورد :چشمک: مشکل از فایلهای شما بود. تمام فایلها رو با کدگذاری UTF-8 without BOM ذخیره کنید. تعدادی از فایلهای شما از کدگذاری UTF-8 معمولی دارن استفاده میکنن. ضمناً بهتره توی فایلهایی که include یا require میشن، session_start رو با @ همراه کنید تا اگه احیاناً فایل اصلی که این فایلها رو ضمیمه میکنه هم session_start رو صدا زده باشه، وجود @ جلوی نمایش خطای session already started رو بگیره.
موفق باشید.

111qqq
شنبه 13 خرداد 1391, 21:23 عصر
ببخشید البته دوباره سوال می فرستم. هرچی که مربوط به login بود به صورت without در اورده بودم.

MMSHFE
شنبه 13 خرداد 1391, 21:41 عصر
همه کدها رو بصورت UTF-8 without BOM در بیارین. هر کدی که با سشن، کوکی، توابع هدر و... سروکار داره حتی اگه مستقیماً به لاگین مربوط نباشه باید با این کدگذاری ذخیره بشه. برای اطمینان بیشتر همه کدها رو اینطوری ذخیره کنید. خرجی که نداره براتون، چه اصراریه که از UTF-8 معمولی استفاده کنید؟!

111qqq
شنبه 13 خرداد 1391, 21:55 عصر
نه اصرای ندارم. چون بقیه رو اپلود نکرده بودم برای همین . اشتباه دیگم اینبود که باید save as می کردم روی همون فایل دوباره نوشته نمی شه. اشتباهیی فکر می کردم جایگزین کرده. ممنون بابت وقتی که گذاشتید ان شاالله که درست می شه.

111qqq
شنبه 13 خرداد 1391, 22:01 عصر
البته الان نمی تونه فارسی رو تشخیص بده. جالبه که هنوزم نمی ره سراغ فایل login این قسمت رو اصلا چک نمی کنه
if (logged_in())
{ redirect_to("index.php"); }
یعنی من هروقتم که ادرس login رو داخل مرورگر می زنم مستقیم میره سراغ INDEX
الان که دوباره می رم UNICODE رو داخل NOTPAD می بینم شدن ANSI.

111qqq
شنبه 13 خرداد 1391, 22:39 عصر
دوستان عزیز فارسی شدن سایت کلا از بین رفته بعد از اینکه با without اینها رو save کردم. الان دقیقا چه اتفاقی افتاده ؟؟؟ ممنون میشم به بدبختیمون که الان بیش از 24 ساعت ازش می گذره و به طورکامل چشممون و کمرمون رو دراورده پاسخ بدید؟

MostafaEs3
شنبه 13 خرداد 1391, 22:41 عصر
قبلاً با ++C یک برنامه نوشته بودم که آدرس پوشه رو میگرفت و کل فایلهای UTF-8 اون رو به UTF-8 without BOM تبدیل میکرد. بعلاوه هرچی ?> هم پیدا میکرد به php?> تبدیل میکرد که استاندارد بشه (چون این مشکل رو با خیلی از کدهایی که از اینترنت دانلود میکردم داشتم). البته الآن باید بگردم ببینم کجا ذخیره کردمش. کار سختی هم نیست اگه بخواین خودتون بنویسید. میتونید فایل رو با Hex Editor باز کنید و BOM رو پیدا کنید. بعد با ++C فایل رو خونده و همون کارکترهای اولیه رو حذف کرده و دوباره فایل رو ذخیره کنید. این کار رو برای تمام فایلهای توی پوشه که هدر یونیکد توشون هست باید تکرار کنید.

نه فکر کنم نیاز نیست از ++C استفاده کنیم !!!

اینو من نوشتم ولی نیاز به بررسی شما داره ! :لبخند: http://barnamenevis.org/showthread.php?215150-snippet-%D9%87%D8%A7%DB%8C-php&p=1518495&viewfull=1#post1518495

111qqq
شنبه 13 خرداد 1391, 22:47 عصر
خوشتیپ توی این هیری ویری من دارم کلم می کوبونم این ور اون ور هی صفحه رو رفرش می کنم تا ببینم کسی جواب می ده داری درمورد برنامت صحبت می کنی. اقلا توی این وسطا به مشکل ما هم یه نگاهی می نداختی

MMSHFE
شنبه 13 خرداد 1391, 22:59 عصر
فایلها رو براتون اصلاح کردم و فرستادم. میشه بگین چطوری تغییر دادین که فارسیش پریده؟!

MostafaEs3
شنبه 13 خرداد 1391, 23:00 عصر
فایلها رو براتون اصلاح کردم و فرستادم. میشه بگین چطوری تغییر دادین که فارسیش پریده؟!

این ++Notepad یک قلق داره ! باید اول کل متن رو Select all کنیم بعد Cut و بعد از تغییر چارست همه ی اطلاعات رو دوباره Paste کنیم که متن های فارسی بهم نریزه !!!!!!! :لبخند:

MostafaEs3
شنبه 13 خرداد 1391, 23:05 عصر
خوشتیپ توی این هیری ویری من دارم کلم می کوبونم این ور اون ور هی صفحه رو رفرش می کنم تا ببینم کسی جواب می ده داری درمورد برنامت صحبت می کنی. اقلا توی این وسطا به مشکل ما هم یه نگاهی می نداختی

نه من دیدم آقای شهرکی داره مشکل رو حل میکنه وارد بحث نشدم !!!!!!!! :لبخند:

111qqq
شنبه 13 خرداد 1391, 23:18 عصر
اقای شهرکی و mostafeef3 علاوه بر تشکر فراوان. این دفعه ارور وصل شدن به دیتابیس می ده. اقای شهرکی به جان خودم به فایلهایی که فرستادین دست نزدم. mysql_connect() [function.mysql-connect (http://moattari.ir/key/function.mysql-connect)]: Access denied for user جدا بابت امروز ببخشید. ما تا این وب اپ کنیم مویی سپید کردیم. اخه مقادیر constant که تغییر نکردهوپشس چرا ارور می ده؟؟

MMSHFE
شنبه 13 خرداد 1391, 23:25 عصر
آهان این خطا واسه اینه که من فایل constants.php رو تغییر دادم تا با اطلاعات نام کاربری و... روی سیستم خودم سازگار بشه. اون رو با اطلاعات سایت خودتون اصلاح کنید.

111qqq
شنبه 13 خرداد 1391, 23:25 عصر
یافتم. البته فکر می کنم که یافتم. البته من چک کردم چیز خاصی رو تغییر نداده بودین.

MMSHFE
شنبه 13 خرداد 1391, 23:28 عصر
فایل constants.php رو از پوشه design چک کردین؟

111qqq
شنبه 13 خرداد 1391, 23:29 عصر
اقا ببخشید . فاجعه. دقیقا مثل یه بز عمل کردم. رفتم یه constants دیگه رو چک کردم. اقای شهرکی مارا ببخش و بیامرز.

MMSHFE
شنبه 13 خرداد 1391, 23:31 عصر
دور از جونتون، حالا مشکل رفع شد ان شاء ا... ؟

111qqq
شنبه 13 خرداد 1391, 23:34 عصر
بعد یه سوالی جریان ansi چیه؟ که دوباره برمی گرده سر اون. عذر می خوام چیزی که می پرسم دلیلی بر پرویی نباشه کلا همه ی فایل ها رو درست کردید؟ بعد الان من می خوام تو ویرایشگر sublim بعضی جاها رو درست کم دوباره بر می گرده سر utf8 ?

MMSHFE
شنبه 13 خرداد 1391, 23:38 عصر
از چه ادیتوری استفاده میکنید؟ اگه از Rapid PHP استفاده کنید، درصورتی که توی فایلتون کارکتر Unicode نباشه (مثل حروف فارسی)، فایل رو با کدگذاری ANSI ذخیره میکنه که باعث میشه حجم فایل کاهش پیدا کنه و مشکلی هم پیش نمیاره. توی ++Notepad هم پیشنهاد میکنم از منوی Settings گزینه Preferences رو انتخاب کند و در سربرگ New Document/Default Directory در قسمت Encoding گزینه UTF-8 without BOM و گزینه زیرش یعنی Apply to opened ANSI files رو انتخاب کنید تا فایلهای جدیدی هم که ایجاد میکنید و همچنین فایلهای قبلی که باز میکنید (اگه کدگذاری اونها ANSI باشه) بطور خودکار به UTF-8 without BOM تبدیل بشن.
موفق باشید.

111qqq
شنبه 13 خرداد 1391, 23:42 عصر
2 sublime text ادیتورمه. یک بار دیگه هم ممنون بابت زحمتتون. واقعا خیلی از وقتتون رو می ذارید برای پاسخ دادن.

MMSHFE
شنبه 13 خرداد 1391, 23:45 عصر
پیشنهاد میکنم از همین ++Notepad استفاده کنید. عادت خوبیه که از ادیتورهای استاندارد و رایج استفاده کنید چون افراد بیشتری امکان کمک کردن و ارائه راهنمایی به شما رو خواهند داشت.

persian-boy
شنبه 13 خرداد 1391, 23:47 عصر
اینو من نوشتم ولی نیاز به بررسی شما داره ! http://barnamenevis.org/showthread.p...=1#post1518495

اینو شما نوشتی ؟ ؟؟ :|

111qqq
شنبه 13 خرداد 1391, 23:58 عصر
حدس کدش فوق العادس. حتی اگر چیزی رو یک بار بزنید که اصلا نه متغییر باشه نه چیز دیگه ای که به php ربط داشته باشه اون رو لیست می کنه. دست شما درد نکنه مشکل حل شد.

MMSHFE
یک شنبه 14 خرداد 1391, 00:00 صبح
یکبار هم phpDesigner رو امتحان کنید. بد نیست.

MostafaEs3
یک شنبه 14 خرداد 1391, 00:32 صبح
اینو شما نوشتی ؟ ؟؟ :|

آخریش . آره . چند دقیقه پیش نوشتمش تست کن

a_ahmadi
یک شنبه 14 خرداد 1391, 11:00 صبح
از چه ادیتوری استفاده میکنید؟ اگه از Rapid PHP استفاده کنید، درصورتی که توی فایلتون کارکتر Unicode نباشه (مثل حروف فارسی)، فایل رو با کدگذاری ANSI ذخیره میکنه که باعث میشه حجم فایل کاهش پیدا کنه و مشکلی هم پیش نمیاره. توی ++Notepad هم پیشنهاد میکنم از منوی Settings گزینه Preferences رو انتخاب کند و در سربرگ New Document/Default Directory در قسمت Encoding گزینه UTF-8 without BOM و گزینه زیرش یعنی Apply to opened ANSI files رو انتخاب کنید تا فایلهای جدیدی هم که ایجاد میکنید و همچنین فایلهای قبلی که باز میکنید (اگه کدگذاری اونها ANSI باشه) بطور خودکار به UTF-8 without BOM تبدیل بشن.
موفق باشید.
اين اديتور در كنار خوبيهاش گند ميزنه به فايلها ولي Notepad++ اين طور نيست.
اگر يك عبارت در تمامي فايلها Repalce كنيد تمامي فايلها به يونيكد ANSI تغيير مي كند.
نسخه نرم افزار (Rapid PHP 2011)

a_ahmadi
یک شنبه 14 خرداد 1391, 11:10 صبح
آخریش . آره . چند دقیقه پیش نوشتمش تست کن
تست كردم
چند فايل پي اچ پي با يونيكد ANSI اضافه كردم بعد از كانورت فقط يونيكد فايل خودتون (Bulletin Board Code (BBC).php) كانورت ميشه و فايل بنده بعد از كانورت همون يونيكد قبليه.
براي تبديل حتماً يك كاراكتر فارسي تو فايل باشه تا كانورت بشه

MostafaEs3
یک شنبه 14 خرداد 1391, 12:05 عصر
تست كردم
چند فايل پي اچ پي با يونيكد ANSI اضافه كردم بعد از كانورت فقط يونيكد فايل خودتون (Bulletin Board Code (BBC).php) كانورت ميشه و فايل بنده بعد از كانورت همون يونيكد قبليه.
براي تبديل حتماً يك كاراكتر فارسي تو فايل باشه تا كانورت بشه


دقیقا همینطوره !!!!!!! :لبخند: چون دراصل utf-8 without bom برای فایلهای فارسی بکار میره

Unique
یک شنبه 14 خرداد 1391, 13:43 عصر
از ابتدا کاملا مشخص بود ایراد از BOM هستش ! نیازی هم به 5 صفحه توضیحات نبود و اگه کمی در استفاده از ادیتور ها تجربه کسب کنیم هیچ وقت این مشکل ها به وجود نمیان ، اکثر Editor های خوب به شما این امکان را میدن که در قسمت تنظیماتشون تعین کنید فایل های جدیدی که میسازین با BOM ایجاد بشوند یا بدون BOM. در صورت بافر کردن اسکریپت هم کلا این مشکل از بین خواهد رفت ! در ضمن تا اونجا که یادم میاد IIS کلا BOM را ندید میگیره ! اما Apache اون را برای کاربر ارسال میکنه. همونطور هم که آقای شهرکی گفتن به صورت default نرم افزار هایی مانند wamp میان و توی تنظیمات Ini بافر کردن را فعال میکنند و اینطوری کاربر در ابتدا متوجه مشکلش نمیشه ! این تناقض ها با هم دست به دست هم میدهند و شامل تمام سوالاتی میشن که در رابطه با Headers already sent مطرح میشوند.

Unique
یک شنبه 14 خرداد 1391, 14:00 عصر
در رابطه با BOM حتما هم همیدونند چیه اما من برای درصدی که شاید اصلا ندونند توضیح میدم و اونم اینکه BOM مخفف کلمه Byte Order Mark هستش و در واقع یک کاراکتر Unicode هست ، این کاراکتر در ابتدای فایل باید قرار بگیره و کاملا دلخواه هست و به نرم افزار ها امکان را میده که بدون بررسی محتوای فایل متوجه بشوند اون فایل از چه نوع یونیکد داره پشتیبانی میکنه مثلا 16 بیتی هست یا 32 بیتی ! برای UTF-8 این مقدار EF BB BF هست ، برای UTF16-BE این مقدار FE FF برای UTF-16-EL این مقدار FF FE هست و غیره ...


utf-8 without bom برای فایلهای فارسی بکار میره
با توجه به توضیحاتی که دادم ، چون فارسی در قالب Unicode پردازش میشه پس فایل های فارسی میتوانند BOM داشته باشند یا نداشته باشند ! مثلا اگه یک فایل HTML مقدار BOM داشت هیچ مشکلی براش پیش نمیاد ! در HTML با توجه به Encoding که شما در meta tag مربوطه تعین میکنید کاراکتر ها به نمایش در می آیند ! فراموش نکنید که قبل از MYSQL5 یعنی MYSQL 4 و کلا یه 6 ، 7 سال پیش اکثرا از ANSI استفاده میشد !
و توی صفحات وب هم مشکلی پیش نمیومد دلیلش اینه که Encoding هایی نظیر ANSI امکان Multibyte هم دارند ! و مثلا میشه فارسی را با ترکیب دو بایت از ANSI نمایش داده ، تنها کاری که باید کرد اینه که Encoding صحیح را دز meta tag صفحه php یا html ست کنیم و همه چیز به خوبی کار خواهد کرد ! البته استفاده از غیر UTF-8 برای فارسی در وب منسوخ شده و نباید استفاده کرد ، من فقط توضیح دادم که کسی برداشت اشتباه نداشته باشه ! Character Set ها خودشون دنیایی دارند و تبدی بین اونها مشکلات و مفاهیم خاص خودش را داره که میتونید با کمی Google گردی به همش دست پیدا کنین.