PDA

View Full Version : header locaton:$PHP_SELF



farhadsoft
چهارشنبه 14 مهر 1389, 13:00 عصر
سلام
دوستان من یک فرم در یک فایل جدا گانه دارم که ،این فایل از صفحه های مختلف require میشه
مخوام دستوری در انتهای فایل این فرم بنویسم که صفحه ای را که در خواست از آن صورت گرفته است را شناسایی کند و بعد از submit دوباره به همان صفحه برگردد.

میدونم که این دستور اشتباه ولی یه مثاله
header locaton:$PHP_SELF
مثلا این دستور خود فایل فرم رو نمایش میده ومن صفحه ای که که درخواست از اون صورت گرفترو می خوام

farhadfery
چهارشنبه 14 مهر 1389, 13:19 عصر
سلام
منظور تو خوب نفهمیدم. اما برداشت من این بود که می خواهی وقتی کاربر دکمه submit رو زد بره صفحه ای که قبلا بوده. به نظر من میتونی از get استفاده کنی. بعنی نام صفحه را بفرستی برای form page و تو این نام را به عنوان action برای فرم قرار بدهی.

binyaft
چهارشنبه 14 مهر 1389, 14:17 عصر
در فرم طبق زیر عمل کنید
<form action="">

</form>

وقتی action خالی باشه دوباهر بر میگرده به همون صفحه

hamid_rezas
چهارشنبه 14 مهر 1389, 14:51 عصر
در فرم طبق زیر عمل کنید
<form action="">

</form>

وقتی action خالی باشه دوباهر بر میگرده به همون صفحه

این دوستمون چیزه جالبی گفته. فکر کنم منظورتون دقیقاً همین باشه و کارتون را راه بندازه.
اما یه نکته دیگه شاید این هم جالب باشه. اگه کاربر وقتی وارد فرم میشه بعد از اینکه فرم را پر کرد و تمام شد شاید بخواد برگرده سرجای اولش. این مساله در فرم های لاگین استفاده داره. کاربر بعد از لاگین برمیگرده تو صفحه ای که بود.
مثل همین تالار.
باید از REFERER استفاده کنی.

if(isset($_REQUEST['redir']))
$Redir = $_REQUEST['redir'];
else
if(isset($_SERVER['HTTP_REFERER']))
$Redir = $_SERVER['HTTP_REFERER'];//When Login go to Previuos page.(Go Back)
else
$Redir = "/";//homepage

تو فرم لاگین هم فیلد مخفی redir را هم میتوانی درنظر بگیری.
(ببخشید چرا امضای من نشون داده نمیشه؟)

farhadfery
چهارشنبه 14 مهر 1389, 14:54 عصر
در فرم طبق زیر عمل کنید
وقتی action خالی باشه دوباهر بر میگرده به همون صفحه

الان گرفتم که چی می خواهی. بله همین طور که دوستمون گفتند. من فقط کامل ترش می کنم:


<form action="<?php print $_SERVER[PHP_SELF] ?>" method="POST">

alonemm
چهارشنبه 14 مهر 1389, 15:03 عصر
در فرم طبق زیر عمل کنید
<form action="">

</form>

وقتی action خالی باشه دوباهر بر میگرده به همون صفحه

و دستور get هم همین هست اگه بخاید به صورت دستی بنویسید:

؟a=12

hamid_rezas
چهارشنبه 14 مهر 1389, 15:03 عصر
الان گرفتم که چی می خواهی. بله همین طور که دوستمون گفتند. من فقط کامل ترش می کنم:


<form action="<?php print $_SERVER[PHP_SELF] ?>" method="POST">

چی میگی؟؟؟؟
فکر نمیکنی داری اشتباه راهنمایی میکنی؟:خجالت:
خودت بزن ببین اصلا چی چاپ میکنه.
ببین اون دستور آدرس و اسم فایل را در سرور از نظر ساختار فایلها نشون میده. نه از نظر محل فایل در ساختار سایت.
پس برای اونکار هم باید فقط اسم فایل رو برداری. حالا شاید فایلش تو یه فولدر باشه. اونوقت چی.

farhadsoft
چهارشنبه 14 مهر 1389, 15:19 عصر
این دوستمون چیزه جالبی گفته. فکر کنم منظورتون دقیقاً همین باشه و کارتون را راه بندازه.
اما یه نکته دیگه شاید این هم جالب باشه. اگه کاربر وقتی وارد فرم میشه بعد از اینکه فرم را پر کرد و تمام شد شاید بخواد برگرده سرجای اولش. این مساله در فرم های لاگین استفاده داره. کاربر بعد از لاگین برمیگرده تو صفحه ای که بود.
مثل همین تالار.
باید از REFERER استفاده کنی.

if(isset($_REQUEST['redir']))
$Redir = $_REQUEST['redir'];
else
if(isset($_SERVER['HTTP_REFERER']))
$Redir = $_SERVER['HTTP_REFERER'];//When Login go to Previuos page.(Go Back)
else
$Redir = "/";//homepage

تو فرم لاگین هم فیلد مخفی redir را هم میتوانی درنظر بگیری.
(ببخشید چرا امضای من نشون داده نمیشه؟)


حمید رضا جان این درست بود
دستت درد نکنه خیلی حال دادی :بوس::بوس::بوس::بوس::بوس::بوس:

امیـرحسین
چهارشنبه 14 مهر 1389, 23:53 عصر
در رابطه با PHP_SELF و خطرات امنیتیش میشه کد زیر رو قبل از همه کدها بیاریم:
foreach (array ('PHP_SELF', 'HTTP_USER_AGENT', 'HTTP_REFERER', 'QUERY_STRING') as $key) {
$_SERVER[$key] = isset ($_SERVER[$key]) ? htmlspecialchars($_SERVER[$key], ENT_QUOTES) : null;
}
و یا اینجوری داشته باشیم:
<form action="<?php echo basename(__FILE__); ?>" method="POST">