انجمن های تخصصی علوم رایانه و هنرهای دیجیتال
حرکت بین صفحات PHP توسط دستور Header - توسط جاوا و ... - نسخه‌ی قابل چاپ

+- انجمن های تخصصی علوم رایانه و هنرهای دیجیتال (https://www.forum.cgaria.com)
+-- انجمن: رایانه (https://www.forum.cgaria.com/forum-236.html)
+--- انجمن: برنامه نویسی | طراحی وب (https://www.forum.cgaria.com/forum-22.html)
+---- انجمن: برنامه نویسی (https://www.forum.cgaria.com/forum-26.html)
+----- انجمن: پی اچ پی | PHP (https://www.forum.cgaria.com/forum-89.html)
+----- موضوع: حرکت بین صفحات PHP توسط دستور Header - توسط جاوا و ... (/thread-491.html)



حرکت بین صفحات PHP توسط دستور Header - توسط جاوا و ... - Mohsen Omidvar - 02-02-2014

در PHP برای حرکت بین صفحات مثلا در صفحه لاگین بعد از چک کردن نام کاربری و رمز عبور   تصمیم میگیرید به صفحه بعد بروید و یا صفحه را به صفحه دیگری هدایت کنید.
در این تاپیک از انجمن تخصصی علوم کامپیوتر و هنرهای دیجیتال روشهای مختلف 
حرکت بین صفحات پی اچ پیPHP را بررسی میکنیم.
برای این کار اغلب برنامه نویسان از کد جاوا اسکریپت استفاده می کنند که در ادامه توضیح مید هیم، در واقع دستور window.open یا window.location را با پارامتر ورودی نام صفحه برروی سند HTML چاپ می کنند. این یک راه حال است اما پی اچ پی  PHP خود تابعی برای جابجائی دارد با نام header.
header :
ابن تابع استفاده های بسیار زیادی دارد که در جای بهتری به آن خواهیم پرداخت.
فرمان بالا صفحه را به صفحه دیگر تغییر مسیر می دهد مثال :
کد php:
if ( ($user=='admin') && ($pass=='123') )
{
 
header('Location: inbox.php');
{
else
{
header('Location: invalid.php'); 

خب با این کدها ممکنه خطای زیر رخ بده :

Warning: Cannot modify header information - headers already sent by (output started at /home/www/....
درسته اما این خطا که حکایت از فرستاده شده بخش Header صفحه دارد مانع از اجرای فرمان Header می شود. 
حالا به راه حل آن توجه کنید :
کد php:
<?php
ob_start
();
?>
<html>
<header>
....
</header>
<boby>
HTML and Your page Design php
<?php
if ( ($user=='admin') && ($pass=='123') )
{
ob_end_clean();
header("Location: inbox.php");
 exit;
}
else
{
 
ob_end_clean();
header("Location: invalid.php");
 exit;
}
?>
<body> 

توسط فرمان ob_end_clean شما بافر را تخلیه می کنید و حال می توانید Header‌ را تغییر دهیدو
البته حتما باید مانند استفاده از Session در ابتدای صفحه ، اول اون را استارت کنید.
کد جاوااسکریپت انتقال به لینک خاص :
کد php:
location.href="http://www.cgaria.com/" 
گاهی پیش میاد که بعد از ارسال اطلاعات میخواهیم لینکی نمایش داده شه تا با کلیک بر روی اون کاربر رو به صفحه جدیدی هدایت کنه 
کد جاوااسکریپت بازگشت به صفحه قبل :
کد php:
<input onclick="history.back(-1)" type="button" value="بازگشت"/> 
کد php این کار :
کد php:
<?php
$url 
htmlspecialchars($_SERVER['HTTP_REFERER']);
echo 
"<a href='$url' rel="nofollow">بازگشت</a>";
?>
اگر بخواهید اطلاعات فرم توی صفحه php پردازش بشه بعد خودش بدون اینکه نیاز یه زدن دکمه باشه اتوماتیک بره به یک صفحه دیگه میتوان از متاتگ رفرش در صفحه php استفاده کرد :
کد php:
<meta http-equiv="refresh" content="21;URL='http://www.cgaria.com//'"

به جای 21  زمان موندن در صفحه php رو به ثانیه و به جای آدرس انجمن تخصصی علوم کامپیوتر و هنرهای دیجیتال( *شما قادر به دیدن لینک ها نیستید ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید* ) آدرس لینکی که می خواهید پس از n ثانیه به اونجا منتقل شوید را بنویسید.
این کد را درون تگ head در صفحه php قرار دهید.