چرا نمی تونم بعد از ایجاد کوکی، اون رو نمایش بدم؟

i-php-i

Active Member
چرا نمی تونم بلافاصله بعد از ایجاد کوکی، اون رو نمایش بدم؟

آیا این مشکل برای سسشن ها هم ایجاد می شه یا فقط مخصوص کوکی ها هست؟

PHP:
$_COOKIE['test_1']='mycookie';
echo $_COOKIE['test_1'];
// no output
 
آخرین ویرایش:

mtchabok

Member
اگه منظورت در textarea هس میشه با کاراکتر خط جدید متوجه شد . ولی اگه منظورت در کل فرم هس باید توسط جاوا اسکریپت اینکار رو انجام بدی که در زمانیکه روی فرم دکمه ای فشرده شد کاری انجام بده .
آیا این مشکل برای سسشن ها هم ایجاد می شه؟
کدوم مشکل ؟
 

i-php-i

Active Member

چرا نمی تونم بلافاصله بعد از ایجاد کوکی، اون رو نمایش بدم؟

PHP:
$_COOKIE['test_1']='mycookie';
echo $_COOKIE['test_1'];
// no output

آیا این مشکل برای سسشن ها هم ایجاد می شه یا فقط مخصوص کوکی ها هست؟
 

mtchabok

Member
چرا نمی تونم بلافاصله بعد از ایجاد کوکی، اون رو نمایش بدم؟
من این مشکل رو ندارم . شاید به خاطر سراسری نبود متغیر کوکی در سایتتون باشه که این اتفاق می افته . البته شاید . (برای تشخیص نمایش خطا رو فعال کنین )
در ضمن میدونید که با تعریف کوکی به این صورت هیچ کوکی برای کاربر ارسال نمیشه و کارآییش فقط در همون درخواست فعلی ای هس که این کوکی رو ایجاد کردید .
در سشن این اتفاق نمی افته چونکه سشن یه متغیر سراسری هس و هر اندیسی بهش اضافه بشه در آرایه سشن ذخیره میشه .
 

i-php-i

Active Member
من این مشکل رو ندارم . شاید به خاطر سراسری نبود متغیر کوکی در سایتتون باشه که این اتفاق می افته . البته شاید . (برای تشخیص نمایش خطا رو فعال کنین )
کوکی هم سراسریه و این موضوع که شما می گید درست نیست.
در ضمن میدونید که با تعریف کوکی به این صورت هیچ کوکی برای کاربر ارسال نمیشه و کارآییش فقط در همون درخواست فعلی ای هس که این کوکی رو ایجاد کردید .
یعنی چی؟ مگر همچین چیزی امکان داره؟
 

mtchabok

Member
یعنی چی؟ مگر همچین چیزی امکان داره؟
کوکی بر روی سرور فقط یه آرایه ای از اطلاعات ارسالی از طرف کلاینت هست و هیچ هندلی برای کاری نداره . این یعنی اینکه وقتی اندیسی اضافه و یا حذف و یا ویرایش بشه هیچ اتفاق دیگه ای نمی افته . پس زمانیکه ما یه اندیس با عنوان test_1 به آرایه کوکی اضافه میکنیم هیچ کوکی برای کلاینت ارسال نمیشه و فقط این اندیس در آرایه کوکی روی سرور ذخیره میشه . در ضمن آرایه کوکی تمامی اطلاعات خودش رو از کوکی های ارسالی کلاینت میگیره .
 

i-php-i

Active Member
کوکی بر روی سرور فقط یه آرایه ای از اطلاعات ارسالی از طرف کلاینت هست و هیچ هندلی برای کاری نداره . این یعنی اینکه وقتی اندیسی اضافه و یا حذف و یا ویرایش بشه هیچ اتفاق دیگه ای نمی افته .
اگر هندلی نیست، کوکی ها چطور ایجاد می شن و برای کلاینت فرستاده می شن؟ می شه منظورتون رو واح تر توضیح بدید؟
پس زمانیکه ما یه اندیس با عنوان test_1 به آرایه کوکی اضافه میکنیم هیچ کوکی برای کلاینت ارسال نمیشه و فقط این اندیس در آرایه کوکی روی سرور ذخیره میشه
این مورد رو هم لطفا بیشتر توضیح بدید، اگر قرار باشه که کوکی برای کلاینت فرستاده نشه، دیگه اسمش کوکی نیست.
 

mtchabok

Member
کوکی ها فقط توسط تابع setcookie و header ایجاد میشن و فرستاده میشن که حتی در این صورت اندیسی که در کوکی ایجاد میشه در آرایه سراسری cookie ذخیره نمیشه . یه مثال میزنم :
PHP:
<?php
setcookie('test1','exam');
echo $_COOKIE['test1'];
خوب این کد بالا رو تست کنین و خطا رو نگاه کنین .
پس نتیجه میگیریم که سمت سرور کوکیها فقط در دو تابعی که گفتم ایجاد و برای کلاینت ارسال میشن و اندیس کوکی اونها هم در آرایه سراسری cookie ذخیره نمیشه .
قبلا هم گفتم ولی مجدد میگم که آرایه سراسری کوکی در هنگام اجرای فایل php اطلاعات خودش رو از کوکیهای ارسالی از سمت کلاینت به سرور میگیره .
 

i-php-i

Active Member
کوکی ها فقط توسط تابع setcookie و header ایجاد میشن و فرستاده میشن که حتی در این صورت اندیسی که در کوکی ایجاد میشه در آرایه سراسری cookie ذخیره نمیشه . یه مثال میزنم :
اگر توی یه صفحه کوکی رو ست کنم، توی سایر صفحات چندبار می تونم همون کوکی رو نمایش بدم؟
 

mtchabok

Member
کوکی تا زمانی پابرجا هس که تاریخ انقضاش نگذشته باشه و این تاریخ انقضا رو هم خود مرورگر تشخیص میده .
اول یه نگاهی به رفرنس تابع setcookie بنداز .
خوب در متغیر expire رفرنس می تونی عدد 0 و یا timestamp بکارببری . عدد 0 ( که به صورت پیش فرض هس ) یعنی اینکه تا زمانیکه مرورگر بسته نشده این کوکی فعال باشه و عدد بیشتر از 0 منظور همون timestamp هست که مرورگر چک میکنه که اگر زمان کوکی از زمان فعلی سیستم کلاینت گذشته باشه کوکی حذف میشه و در غیراینصورت برای سرور ارسال میشه .
پس کوکی های ارسالی از سمت کلاینت به سرور وابسته به زمانشون هستن که توسط مرورگر تشخیص داده میشه .
 

i-php-i

Active Member
خوب در متغیر expire رفرنس می تونی عدد 0 و یا timestamp بکارببری . عدد 0 ( که به صورت پیش فرض هس ) یعنی اینکه تا زمانیکه مرورگر بسته نشده این کوکی فعال باشه و عدد بیشتر از 0 منظور همون timestamp هست که مرورگر چک میکنه که اگر زمان کوکی از زمان فعلی سیستم کلاینت گذشته باشه کوکی حذف میشه و در غیراینصورت برای سرور ارسال میشه .
منظورم این بود که وقتی توی سایر صفحات مرورگر کوکی رو برای سرور می فرسته، چند بار می شه اون رو نمایش داد؟
آیا فقط یک بار می تونیم کوکی رو نمایش بدیم یا اینکه می تونیم هر چندبار که لازم باشه کوکی رو نمایش بدیم؟
 

mtchabok

Member
تا زمانیکه متغیر سراسری cookie در دسترس باشه و تا زمانیکه به صورت دستی اندیس کوکی رو حذف نکنید قابل نمایش هس و اصلا محدودیت نداره .
 

i-php-i

Active Member
تا زمانیکه متغیر سراسری cookie در دسترس باشه و تا زمانیکه به صورت دستی اندیس کوکی رو حذف نکنید قابل نمایش هس و اصلا محدودیت نداره .
شاید نیاز باشه که به محض ایجاد کوکی از کوکی استفاده کنیم. چرا موقع ایجاد کوکی نمی تونیم از اون استفاده کنیم ولی بعد از ایجاد و وقتی وارد سایر صفحات می شیم می تونیم به دفعات دلخواه از کوکی استفاده کنیم؟

منظورم اینه که چرا موقع ایجاد کوکی چنین محدودیتی وجود داره و چرا این محدودیت رو برطرف نمی کنن؟
 

mtchabok

Member
این مشکل وجود داره و برای حلش میتونید همزمان با setcookie در آرایه کوکی هم همون مقدار رو قرار بدین تا در زمان ایجاد هم ازش بتونید استفاده کنین .
 

i-php-i

Active Member
این مشکل وجود داره و برای حلش میتونید همزمان با setcookie در آرایه کوکی هم همون مقدار رو قرار بدین تا در زمان ایجاد هم ازش بتونید استفاده کنین .
منظورتون به این شکل هست؟
PHP:
setcookie('cook1', 'yes');
$_COOKIE[cook1]='yes';
 

bah.man

Member
خوب یه بررسی کوچولو رو این کد بکنی جواب مشخصه.:-?
سطره اول که هیچ
سطره دوم = ایجاد کن کوکی به نام test1 و محتوای exam
سطره سوم = نشان بده محتوای کوکیه test1 را

خوب از اونجایی که پی اچ پی مثل آدمیزاد نمیتونه هم بنویسه و هم بخونه(که البته آدمیزاد هم کمی سختشه) این نرماله که یبار پیج لود بشه بگه ایندکس test1 خالیه و وقتی رفرش کنین درست کار کنه.
حالا ماکه تا اینجاشو خوندیم .
ینی ابتدا باید کوکی ایجاد بشه بعد درخواست بشه
به عنوان مثال تو یه فرم لاگین یه پنل کوکی ایجاد میشه بعد تو مثلا داشبورد پنل اسم یارو رو از کوکی درخواست میکنه.
اگه احتمالا اشتباه راهنمایی کرده باشیم هم پوزش
 

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

بالا