PDA

View Full Version : سوال: جلوگیری از دسترسی مستقیم به متد یک کلاس



redhat2
چهارشنبه 06 شهریور 1392, 20:35 عصر
سلام ، یه سوال دارم ، من میخوام از طریق ajax به یک متد در php که داخل یک کلاس هست اطلاعات پست کنم و response بگیرم ولی میخوام از دسترسی مستقیم ( تایپ در url جلوگیری بشه ) مثلا
من این url را دارم ، همه میدونم که تویه mvc کاربرد داره ،

controller/action/query
میخوام وقتی این را در url تایپ می کنم ، دسترسی بهش نداشته باشم ، یعنی اطلاعاتی نشون نده یا بگه مثلا همچیم متدی نداریم ، ولی وقتی از ajax استفاده می کنم بتونم اطلاعات را بهش ارسال و متد مورد نظر پردازش کنه و Response بهم بده . باید چیکار کنم ؟ با htaccess میشه ؟

MRmoon
چهارشنبه 06 شهریور 1392, 20:53 عصر
<?php
//Chek requsted with AJAX?
if( 'AJAX' == $_SERVER['REQUEST_METHOD'] ){
//Tour cODEs
}else
exit( 'No Access!' );

?>

redhat2
چهارشنبه 06 شهریور 1392, 20:55 عصر
اگه با تابع اجاکس در jquery اطلاعات فرستاده باشه ، فرقی نداره نه ؟

MRmoon
چهارشنبه 06 شهریور 1392, 21:04 عصر
نه ....

jquery كاراي جاوا اسكرپيپوت راحت تر ميكنه فقط....
همين فرقي نداره.

redhat2
چهارشنبه 06 شهریور 1392, 21:11 عصر
یه سوال دیگه اگه بخوام توی دسترسی مستقم بگم که اصلا همچین Action وجود نداره ، ولی باز با ajax کار کنه باید چیکار کرد ؟

MRmoon
چهارشنبه 06 شهریور 1392, 22:35 عصر
بابا يكم تست كن.

همه چي رو كه نبايد ما تست كنيم و بگيم.

keivan.amohamadi
پنج شنبه 07 شهریور 1392, 09:08 صبح
یه سوال دیگه اگه بخوام توی دسترسی مستقم بگم که اصلا همچین Action وجود نداره ، ولی باز با ajax کار کنه باید چیکار کرد ؟

خوب توی هون کد بالا کاربر رو به صفحه 404 هدایت کن.

redhat2
پنج شنبه 07 شهریور 1392, 18:36 عصر
بابا يكم تست كن.

همه چي رو كه نبايد ما تست كنيم و بگيم.

خوب اگه تست های خودم جواب میداد که دیگه از شما نمی پرسیدم . اون کدی هم که نوشتین جواب نداد .

redhat2
پنج شنبه 07 شهریور 1392, 18:40 عصر
خوب توی هون کد بالا کاربر رو به صفحه 404 هدایت کن.

خوب وقتی من کاربر را منتق کنم ، درخواستی که با ajax می فرستم هم به صفحه ی 404 منتقل میشه ، فکر کنم درست متوجه نشدین ، من میخوام وقتی درخواست ajax باشه ، صفحه وجود داشته باشه ولی وقتی مستقیم صفحه ی را توی url میزینیم اصن همچین صفحه ای وجود نداشته باشه . با htaccess چطور میشه اینکارور انجام داد ، حتی نمیخوام با درخواست curl هم بهش دسترسی داشته باشه ، میخوام که دسترسی را فقط به درخواست ajax محدود کنم ، همین .

Veteran
پنج شنبه 07 شهریور 1392, 19:13 عصر
deny from all رو در فایل htaccess بزارین و فایل رو در اون پوشه که میخواین کسی بهش دسترسی نداشته بزارین.

Javidhb
پنج شنبه 07 شهریور 1392, 19:48 عصر
1. برای جلوگیری از CURL از captcha یا یه سوال تصادفی استفاده کنید.

2. از کد زیر قبل از کدهای مربوط به ایجکس استفاده کنید ( که اگه درخواست مستقیم بود کاربر رو به یه صفحه دیگه ببره )


<?php
//اگه اجکس نبود به یه صفحه دیگه ریدیرک کن
if(empty($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')
{
header('Location: page404.php');//ya har safeye digeiee
}
?>

منبع (http://davidwalsh.name/detect-ajax)

از چه نظر براتون مهمه که کاربر نفهمه که همچین لینکی وجود داره یا نه؟ بالاخره که توی فرم باید آدرسش رو برای سابمیت بنویسید...