PDA

View Full Version : ورود به یک پوشه password protected از طریق یک فرم



lordsepid
دوشنبه 14 تیر 1389, 19:34 عصر
سلام
من با php آشنایی زیادی ندارم و تازه اینجا عضو شدم.
توی اینترنت به اسکریپت های زیادی برخوردم ولی هیچ کدوم کاری رو که می خواستم انجام نمی دادن.
من می خوام از طریق یک فرمی که توی یک فایل مجزا طراحی می کنم به یک فایل در یک پوشه پسورد گذاری شده در هاستم دسترسی داشته باشم.
چون در حالت عادی پنجره ای ظاهر میشه که چندان کاربرپسند نیست.

کنترل پنل هاست من cPanel هست و پوشه رو هم از همون طریق password protected کردم.
با این تفاسیر آیا راهی هست که بتونم با کمک php یوزرنیم و پسورد رو از طریق یک صفحه مجزا وارد کنم و به محتویات اون پوشه دسترسی پیدا کنم ؟

rapidpich
دوشنبه 14 تیر 1389, 20:03 عصر
یه فرم طراحی کن
توش user pass بگزار
بعد تو صفحه php که به اون پست میشه اینو بگزار:



header("location: http://{$_GET['user']}:$_GET['pass']@lordsepid.com/protected/");

lordsepid
سه شنبه 15 تیر 1389, 09:50 صبح
یه فرم طراحی کن
توش user pass بگزار
بعد تو صفحه php که به اون پست میشه اینو بگزار:



header("location: http://{$_GET['user']}:$_GET['pass']@lordsepid.com/protected/");



من فرم رو آماده کردم ولی در مورد فایل php مطمئن نیستم که درست انجام داده باشم.
تنها چیزی که توی فایل php نوشتم همون خط کدی بود که داده بودی و قبل و بعدش هم تگ php رو گذاشتم و فقط url رو تغییر دادم و اسم پوشه پروتکت شده رو.
به علاوه توی فرم هم اسم فیلدهای یوزرنیم و پسورد رو متناسب با کد ذکر شده تعیین کردم.
این چیزیه که توی فایل php کلا نوشتم:

<?php
header("location: http://{$_GET['user']}:$_GET['pass']@mydomain.ir/chk/");
?>ولی وقتی این دو تا فایل یعنی form.htm و فایل php رو توی هاست منتقل می کنم و تست می کنم جواب نمیده.
می تونین بهم بگین که کجای کارم اشتباه بوده ؟

lordsepid
سه شنبه 15 تیر 1389, 10:03 صبح
نمی دونم منظورم رو درست مطرح کردم یا نه ولی توی عکس ضمیمه نشون دادم که منظورم از پنجره ای که ظاهر میشه برای پوشه پسورد پروتکت شبیه چیه !
البته این مال دانلود سایت آنتی ویروس نود32 هست ولی پنجره یوزرنیم و پسوردش دقیقا همون چیزیه که برای پوشه ی قفل شده من ظاهر میشه.
و من می خوام یه جوری این پنجره رو دور بزنم و از طریق یک فرم، یوزرنیم و پسورد رو وارد کنم.

ممنون میشم اگه کسی بتونه کمک کنه.

rapidpich
سه شنبه 15 تیر 1389, 10:42 صبح
بله متوجه مشکل شدم فقط حواست باشه باید اسم متغیر های فرمت user و pass باشه و متود فرمت هم get باشه طوری که اگه بری به فایل php :



protected.php?user=username&pass=password


باید بری به صفحه قفل شده.

lordsepid
سه شنبه 15 تیر 1389, 11:27 صبح
خوب اینایی رو که گفتی دوباره چک کردم ولی بازم کار نکرد. فکر کنم یه جایی رو درست انجام نمیدم.
این کل کدی هست که توی فرم منه فعلا :

<html dir="rtl">

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 2</title>
</head>

<body>

<form method="GET" action="tst.php">
<p align="center"><b><span lang="fa"><font size="4" color="#FF0000">تست فرم
</font></span></b><font size="4" color="#FF0000"><b>2</b></font></p>
<p><input type="text" name="user" size="10" dir="ltr"></p>
<p><input type="password" name="pass" size="10" dir="ltr"></p>
<p><input type="submit" value="ثبت"></p>
</form>

</body>

</html>
و اینم تمام چیزیه که توی فایل php هست :

<?php
header("location: http://{$_GET['user']}:$_GET['pass']@mydomain.ir/chk/tst.htm");
?>این دو تا فایل رو مستقیما توی public html گذاشتم و پوشه قفل شده هم کنارشون هست بنام chk
می تونی بهم بگی مشکل کجاست ؟

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

www.mydomain.ir/tst.php?user=test&pass=test
و حتی وقتی توی یک تب کنارش اون آدرس فایل موجود در پوشه قفل شده رو می زنم دوباره ازم یوزرنیم و پسورد می خواد.
احتمالا لازمه که توی فایل php ذکر بشه که به url مربوطه redirect بشه ؟ یا همون چیزی که نوشته شده کافیه ؟

lordsepid
سه شنبه 15 تیر 1389, 18:02 عصر
لطفا اگه کسی میدونه بگه که اصلا این کار امکان پذیر هست یا نه ؟

rapidpich
چهارشنبه 16 تیر 1389, 14:57 عصر
باید redicrect بشه به آدرس جدید. اگه نمیشه احتمالا شما فایلت utf8 با BOM هست باید از utf8 بدون BOM استفاده کنی. یه جستجو کن همینجا قبلا توضیح دادن.
اگه میتونی آدرس اصلی فایل رو برام خصوصی بفرست

generalhak
پنج شنبه 20 تیر 1392, 13:50 عصر
سلام
منم میخوام این کارو بکنم از این تاپیک چیز خاصی نفهمیدم روشش هم جواب نمیده !
میخوام از طریق یک فایل php دیگه به یه همچین پوشه ای که توسط سیستم Password Protect Directories رمز گزاری شده دسترسی پیدا کنم

header("location: http://{$_GET['user']}:$_GET['pass']@mydomain.ir/chk/tst.htm");
این تابع هم جواب نمیده روش کلی رو بگید مثلا یوزرنیم و پسورد رو زدم rex حالا بگید چطوری استفاده کنم !؟
بعد یه سوال دیگه هم هست این که اگر یک پوشه رو با این روش پسورد بگزاریم بعد با یک فایل php دیگه بهش درسترسی پیدا کنیم اونوقت امن هست این کار ؟ مثلا سیستم یک پوشه رو رمز بگزاریم بعد با یک فایل php دیگه که رمز در اون هست فقط بهش دسترسی پیدا کنیم و فایل رو بخونیم بعد کاربر نمیتونه رمز رو مثلا با کوکی و یا ... بدست بیاره ؟

Unique
پنج شنبه 20 تیر 1392, 14:11 عصر
خوب اول اینکه امکانش به دو شکل وجود داره ! حالت اول دوستمون اشاره کردند اما کمی گیج کننده ! عملیش اینطوریه :

"http://username:password@example.com/protected_folder"

در واقع شما میگین از این ترکیب user:pass در این آدرس استفاده کن اگه درخواست basic authentication از طرف web server بودش. اما اولا همه web server ها پشتیباین نمیکنند ، ثانیا امکان غیر فعال کردنش روی هاست توسط مدیر هاست وجود داره و ثالثا تا اونجا که یادمه IE از این فرمت پشتیباین نمیکرد مگه اینکه به تازگی پشتیبانی کنه !
یک مشکل دیگه که وجود داره اینه که برای redirect کردن اینطور نام کاربری و پسورد لو میره و اگه قراره از توی php از طریق کد دسترسی پیدا کرد هیچ چیز بهتر از curl نیست ! اینطوری :


$ch=curl_init();
curl_setopt($ch, CURLOPT_URL,'http://www.domain.com/protected_folder/');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
curl_exec($ch);
curl_close($ch);


در ضمن یکی از بچه های خوب انجمن یک کلاس برای استفاده راحت از curl گذاشتند که واقعا خیلی خوبه و میتونید از همون استفاده کنید.

generalhak
پنج شنبه 20 تیر 1392, 14:25 عصر
خوب اول اینکه امکانش به دو شکل وجود داره ! حالت اول دوستمون اشاره کردند اما کمی گیج کننده ! عملیش اینطوریه :

"http://username:password@example.com/protected_folder"

در واقع شما میگین از این ترکیب user:pass در این آدرس استفاده کن اگه درخواست basic authentication از طرف web server بودش. اما اولا همه web server ها پشتیباین نمیکنند ، ثانیا امکان غیر فعال کردنش روی هاست توسط مدیر هاست وجود داره و ثالثا تا اونجا که یادمه IE از این فرمت پشتیباین نمیکرد مگه اینکه به تازگی پشتیبانی کنه !
یک مشکل دیگه که وجود داره اینه که برای redirect کردن اینطور نام کاربری و پسورد لو میره و اگه قراره از توی php از طریق کد دسترسی پیدا کرد هیچ چیز بهتر از curl نیست ! اینطوری :


$ch=curl_init();
curl_setopt($ch, CURLOPT_URL,'http://www.domain.com/protected_folder/');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
curl_exec($ch);
curl_close($ch);


در ضمن یکی از بچه های خوب انجمن یک کلاس برای استفاده راحت از curl گذاشتند که واقعا خیلی خوبه و میتونید از همون استفاده کنید.

آره کلاس بسیار خوبی هست دیدمش تا حالا استفاده هم کردم !
فکر کردم برای این سیستم روش دیگری هست ! چون قبلا این تاپیک رو دیده بودم !
پس بهترین همونه واقعا ممنون هم از ایشون که این کلاس رو نوشتن و هم از شما دوست عزیز