PDA

View Full Version : مبتدی: مشکل در ارسال POST توسط $_SERVER



reza10wert
دوشنبه 21 فروردین 1391, 16:31 عصر
سلام
وقتی کد زیر رو اجرا میکنم


<?php
$current_file = $_SERVER['SCRIPT_FILENAME'];
?>
<?php
echo '
<form action="<?php echo $current_file; ?>" method="POST">
Username : <input type="text" name="username">
Password : <input type="password" name="password">
<input type="submit" value="ورود">

</form>
';
?>
خطای زیر را نشان میده


Access forbidden!

You don't have permission to access the requested object. It is either read-protected or not readable by the server.
If you think this is a server error, please contact the webmaster.
Error 403

localhost
2012-04-09 16:44:48
Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
اشتباه کارم کجاست ؟
ممنون

رضا قربانی
دوشنبه 21 فروردین 1391, 17:49 عصر
نمی شه که . احتمالا شما به یک سایت دیگه پست ارسال کردی . ببین پرومیژن رو داره بهت می گه.

برای اینکه به سایت دیگری اطلاعات بفرستید باید از Curl استفاده کنید. (یک سرچی بزنی در مورد خیلی یافت می شه همراه با کدهاش)

کار با متغیر $_SERVER خواستی بدونی اینجا هست : http://barnamenevis.org/showthread.php?282084-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-_SERVER

بعد یک مشکل دیگه شما اینه که داخل echo دوباره تگ پی اچ پی باز کردید به این صورت لاین 6 رو ویرایش کنید :::::

<form action="'.$current_file.'" method="POST">

reza10wert
دوشنبه 21 فروردین 1391, 19:17 عصر
دوست عزیز
مشکلم حل نشد
من میخوام موقعی که متغیر $current_file رو داخل هر صفحه ای قرار دادم و فرم داشتم ، action فرم به همون صفحه باشه
باید چه کار کنم ؟

reza10wert
دوشنبه 21 فروردین 1391, 19:30 عصر
کدم رو تغییر دادم مشکلم حل شد

<?php
$script_name=$_SERVER['SCRIPT_NAME'];
?>
<form action="<?php echo $script_name ; ?>" method="POST">
<input type="submit">
</form>
دلیلش چی بود که اون مثال جواب نمیداد ؟

رضا قربانی
دوشنبه 21 فروردین 1391, 19:45 عصر
این تغییر کرد دیگه : SCRIPT_NAME

MMSHFE
سه شنبه 22 فروردین 1391, 01:22 صبح
دلیلش اینه که SCRIPT_FILENAME مسیر واقعی و مطلق فایل اسکریپت رو برمیگردونه (مثل C:\test\index.php) درحالی که SCRIPT_NAME مسیر نسبی رو اعلام میکنه و در اکثر موارد مسیردهی مطلق مجوز نداره. برای درک بهتر این کد رو اجرا کنید تا با اجزای SERVER_$ بیشتر آشنا بشین:


<?php
echo '<pre>'.PHP_EOL;
print_r($_SERVER);
echo '</pre>'.PHP_EOL;
?>