PDA

View Full Version : تشخیص آدرس سایت با php



tehro0n
شنبه 13 شهریور 1389, 02:16 صبح
سلام من با کمی دست کاری کد جاوا می تونم آدرس سایت رو تشخیص بدم که واقعی است یا خیر، یک مشکل هست و اون اینه که اگه کسی آدرس رو http://www هم اضافه بزنه بهش گیر آدرس رو خالی رد می کنه که نباید اینطور باشه..

if (!(/^\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(site)))
var site = '';
حالا می خوام این نمونه جاوا رو با php هم داشته باشم که اونجا چک بشه..!
این کد تنها اگه آدرس وارد شده باشه و http://www داشته باشه اونو پاک میکنه. ولی می خوام مانند بالا چک کنه که آدرس واقعی است یا نه؟

// polish the hostname
if (preg_match('@^(?:(?:http|https)://)?(?:www\.)?([^/]+)@i', $_site, $matches)) {
$_site = $matches[1];
}

sama01
شنبه 13 شهریور 1389, 02:22 صبح
من اصلا متوجه نشدم شما چی می‌خواید.می‌شه چند تا مثال بزنید؟

tehro0n
شنبه 13 شهریور 1389, 14:33 عصر
من اصلا متوجه نشدم شما چی می‌خواید.می‌شه چند تا مثال بزنید؟

من که واضح گفتم!
می خوام چک کنم ببینم کاربر آدرس سایت وارد کرده یا چیز دیگه!
که وقتی ذخیره میشه فقط آدرس سایت ذخیره بشه!
در فایل php هم چک بشه، اگه جاوا رو هم بدید که بهتر، نمونه جاوا هم بالا اوردم


yahoo.com = true
http://yahoo.com = true
http://www.yahoo.com = true
www.sub1.yahoo.com = true
http://sub1.sub2.yahoo.com = true
yahoo.c = false
htp://yahoo.com = false
wwww.yahoo.com = false
yahoo = false

twelve
شنبه 13 شهریور 1389, 23:39 عصر
با جاوا اسکریپت که نوشتید با php میتونید از تابع زیر استفاده کنید



function isValidURL($url)
{
return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
}

sama01
یک شنبه 14 شهریور 1389, 02:08 صبح
چنانچه مبنا را بر لیستی true/false شما بگذاریم، این کامل‌تره:

'@^((https?|ftp)\://)?(www\.)?([a-z][a-z0-9-_]+([\.][a-z0-9-_])*\.[a-z]{2,4})(/.*)?$@i'
فقط در مورد wwww را درست جواب نمی‌ده.

alirayaneh
یک شنبه 14 شهریور 1389, 02:48 صبح
این که را ساده دیگه هم داره
از آخر 10 کارکتر از رشته رو می خونی وبعد اونو با http://www (http://www/) تطابق میدی اگه مساوی بود که هیچی ..
اگه نبود هم ادامه برنامه اجرا بشه ...

tehro0n
یک شنبه 14 شهریور 1389, 03:00 صبح
این که را ساده دیگه هم داره
از آخر 10 کارکتر از رشته رو می خونی وبعد اونو با http://www (http://www/) تطابق میدی اگه مساوی بود که هیچی ..
اگه نبود هم ادامه برنامه اجرا بشه ...

میشه مثالی بزنی؟

tehro0n
یک شنبه 14 شهریور 1389, 03:10 صبح
چنانچه مبنا را بر لیستی true/false شما بگذاریم، این کامل‌تره:

'@^((https?|ftp)\://)?(www\.)?([a-z][a-z0-9-_]+([\.][a-z0-9-_])*\.[a-z]{2,4})(/.*)?$@i'فقط در مورد wwww را درست جواب نمی‌ده.

خوب اینی که شما دادید تبدیل می کنه!
من می خوام چک کنه اگه سایت درست وارد نشده بود پیغام بده.

sama01
یک شنبه 14 شهریور 1389, 03:10 صبح
این که را ساده دیگه هم داره
از آخر 10 کارکتر از رشته رو می خونی وبعد اونو با http://www (http://www/) تطابق میدی اگه مساوی بود که هیچی ..
اگه نبود هم ادامه برنامه اجرا بشه ...
:تشویق:
ای‌ول خیلی خوب بود. کوتاه و مختصر و مفید.
فقط سه تا سوال:
1. 10 کاراکتر از آخر یا از اول؟
2. بعد اگر طرف این آدرس رو بفرسته چی؟

http://wwwwwwww....aass+*/][.$@`;kho3. چه طور می‌شه چنین آدرس‌هایی رو ارسال کرد:

https://www.gmail.com
www.site.com
http://google.com
http://mail.yahoo.com:متفکر:
--------------------

خوب اینی که شما دادید تبدیل می کنه!
من می خوام چک کنه اگه سایت درست وارد نشده بود پیغام بده.

چی رو تبدیل می‌کنه؟ من که فقط pattern گذاشتم.!
شما اون pattern رو که من گذاشتم بگذار جای pattern آخرین پست twelve.
خروجی یا true هست یا false.

tehro0n
یک شنبه 14 شهریور 1389, 03:45 صبح
:تشویق:
ای‌ول خیلی خوب بود. کوتاه و مختصر و مفید.
فقط سه تا سوال:
1. 10 کاراکتر از آخر یا از اول؟
2. بعد اگر طرف این آدرس رو بفرسته چی؟

http://wwwwwwww....aass+*/][.$@`;kho3. چه طور می‌شه چنین آدرس‌هایی رو ارسال کرد:

https://www.gmail.com
www.site.com
http://google.com
http://mail.yahoo.com:متفکر:
--------------------


چی رو تبدیل می‌کنه؟ من که فقط pattern گذاشتم.!
شما اون pattern رو که من گذاشتم بگذار جای pattern آخرین پست twelve.
خروجی یا true هست یا false.

کد شما ساب دومین هارو قبول نمی کنه و false میده!

sama01
یک شنبه 14 شهریور 1389, 06:00 صبح
درست می‌فرمایید.
آخرش یه اشتباه لپی کردم که به دلیل یک تغییر در آخرین لحظه‌ی قبل از ارسال بود.
این درسته:


'@^((https?|ftp)://)?(www\.)?([a-z][a-z0-9-_]+([\.][a-z0-9-_])*\.[a-z]{2,4})(.*)$@i'
- - - - - - - - - - - - - - - - - - - -
این رو الآن نوشتم. کمی سیستمش فرق داره. ولی کامل‌تر شده. حتی می‌تونی دامنه‌های با پسوند دو بخشی رو هم باهاش بشناسی. مثل: semnan.ac.ir


'@^((https?|ftp)://)?(www\.)?([a-z][a-z0-9-_]+\.)+([a-z]{2}\.[a-z]{2}|[a-z]{3,4})@i'


فقط توجه داشته باشید که در هر دو مورد بالا، url از انتها محدود نیست. یعنی چنین چیزی هم قبوله: yahoo.com/mail

alirayaneh
یک شنبه 14 شهریور 1389, 11:28 صبح
خوب چرا آدرس رو بدونه http://www از کاربر دریافت نمکنی ؟