PDA

View Full Version : سوال: روش های انتقال به صفحه ی دیگر()



h.alizadeh
جمعه 15 مرداد 1389, 23:05 عصر
باسلام،
برای لینک دادن به صفحه ی دیگر از طریق کد در PHP از چه دستوراتی استفاده میشه؟

بجز header.

مثلاً:
کدمن بدین شکل هست:

if(..........)
{

header('Location:index.php?page=from1');
}
else if (....................)
{

header('Location:index.php?page=form2');
}
اما نمیخوام از هدر استفاده کنم .
چه دستوری رو میتونم بجای هدر استفاده کنم؟

چون من دستوراتم در تگ bodyهست و وقتی پروژه رو با wamp5اجرا میکنم از دستور هدر ایراد می گیره:
Warning: Cannot modify header information - headers already sent by (output started at D:\wamp\www\test\index.php:9) in

امیـرحسین
جمعه 15 مرداد 1389, 23:08 عصر
Cannot modify header و زهرمار (http://boplo.ir/php/damned-cannot-modify-header/) :چشمک:

طاها حک
جمعه 15 مرداد 1389, 23:33 عصر
وقتی ازheader استفاده می کنی باید اول فابل بنویسی :

ob_start();
تا بافر باز شه و واسه بسته شدن هم باید بنویسی:

ob_end_flush();

h.alizadeh
شنبه 16 مرداد 1389, 00:21 صبح
کسی پیشنهادی داره؟

h.alizadeh
شنبه 16 مرداد 1389, 00:38 صبح
نشد روشهای شما.

فئقش خطا رفع شد ولی کار نکرد :ناراحت:

binyaft
شنبه 16 مرداد 1389, 09:31 صبح
چرا نشه؟؟؟؟
خوب اول فایلت بنویس

<?php
ob_start();
?>

و اخرش هم


<?php
ob_end_flush();
?>

امکان نداره که دوباره خطا بده

eshpilen
شنبه 16 مرداد 1389, 09:43 صبح
یادتون باشه اگر بعد از header مربوطه دستور exit نذارید، بقیهء اسکریپت PHP شما هم اجرا میشه.
برای هدایت کاربر به آدرس دیگه میتونید از متا تگ رفرش استفاده کنید. هرچند هدر خیلی بهتره.

LORD AELX
شنبه 16 مرداد 1389, 11:46 صبح
چرا نشه؟؟؟؟
خوب اول فایلت بنویس

<?php
ob_start();
?>و اخرش هم


<?php
ob_end_flash();
?>امکان نداره که دوباره خطا بده

ob_end_flush هست نه ob_end_flash ... :چشمک:

binyaft
شنبه 16 مرداد 1389, 12:07 عصر
ببخشید دیگه ، حواسم نبود :قلب:

h.alizadeh
یک شنبه 17 مرداد 1389, 00:04 صبح
یادتون باشه اگر بعد از header مربوطه دستور exit نذارید، بقیهء اسکریپت PHP شما هم اجرا میشه.
برای هدایت کاربر به آدرس دیگه میتونید از متا تگ رفرش استفاده کنید. هرچند هدر خیلی بهتره.

چرا هدر بهتراز تگ رفرش ه؟

من باتگ رفرش مشکلو حل کردم.
این روش شما رو هم تست کردم اینم جواب داد.
باتوجه به اینکه من فایلمو در یک صفحه ی دیگه require کرده بودم و اول و اخر صفحه اون صفحه ی دیگه محسوب میشد اما من دستورات شما رو به این صفحه خودم اضافه کرده بودم که درتگ body اون صفحه فراخوانی میشد،رفتم به اون صفحه دیگه اضافه کردم مشکل حل شد.

ممنون
یعنی حالا من این دودستوری که گفتید همین obها رو اضافه کنم دیگه مشکلی به هیچ عنوان نیست دیگه؟


و اینکه من روی سیستم دیگه ای که web server2.0 همین دستور هدر رو بدون ob نوشته بودم کار میکنه ولی این سیستمم که wamp5هست خطا میداد!!!! خب اگر دستور من اشتباه س چرا توی web server2.0 درست کار میکنه؟؟؟؟؟

eshpilen
یک شنبه 17 مرداد 1389, 08:24 صبح
چرا هدر بهتراز تگ رفرش ه؟
هدر در سطح پروتکل HTTP عمل میکنه و اتکا به عملکردش مطمئن تر هست. ممکنه متا تگ رفرش توسط بعضی مرورگرها یا تنظیمات کاربری، نادیده گرفته بشه. البته احتمالش خیلی کمه بنظرم! بهرحال با هدرها کار شما هم خیلی راحتتر و کدهاتون خواناتره و خیلی کوتاهتر، و مجبور نیستید یک سند HTML رو که محتوی متاتگ مربوطه باشه به کاربر بفرستید تا مرورگرش تازه تغییر آدرس بده.