نمایش نتایج 1 تا 17 از 17

نام تاپیک: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

  1. #1

    Question با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

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

  2. #2
    کاربر دائمی آواتار Reza1607
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    يه جايي تو مشهد
    پست
    969

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    با استفاده از تابع file_exists چك كنيد كه آيا فايل هست يا نه؟
    اگر بود براي اطمينان حجم فايل رو هم مقايسه كنيد تا مطمئن بشيد كه همون فايل هست نه يك تشابه اسمي

  3. #3

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    تابع فایل file_exists فایلهای سایر سرورها رو نمی تونه چک کنه.
    الان از تابع getimagesize استفاده می کنم ولی این تابع هم با https مشکل داره و این پروتوکل رو نمی خونه.

    راه بهتری به نظرتون نمی رسه؟

  4. #4

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    سوکت و cURL هم هست فقط باید دقت کنید که وضعیت سرور شما و سرور مقصد میتونه تو نتیجه تاثیر داشته باشه یعنی اگه سرور مقصد اون لحظه جوابی برنگردونه یا سرور شما اتصال خوبی نداشته باشه فایل رو پیدا نمیکنه در حالیکه فایل هست.

  5. #5

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    سوکت و cURL هم هست فقط باید دقت کنید که وضعیت سرور شما و سرور مقصد میتونه تو نتیجه تاثیر داشته باشه یعنی اگه سرور مقصد اون لحظه جوابی برنگردونه یا سرور شما اتصال خوبی نداشته باشه فایل رو پیدا نمیکنه در حالیکه فایل هست.
    ممکنه cURL توی سرور فعال نباشه.
    راه دیگه ای نیست؟

  6. #6
    کاربر دائمی آواتار narsic
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    دهکده جهانی
    سن
    35
    پست
    1,020

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    fopen هم هست با لینک مثل یک فایل برخورد میکنه و محتویات رو میخونه. (فقط برای وجود داشتن گفتن اما استفاده ازش رو برای تصویر پیشنهاد نمیکنم)
    به تعداد درخواست هاتون هم توجه کنید با چک کردن چندین سرور به این روش ها ممکن زمان زیادی طول بکشه که مشکلات خودش رو در بر داره.
    موفق باشید

  7. #7

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    fopen هم هست با لینک مثل یک فایل برخورد میکنه و محتویات رو میخونه. (فقط برای وجود داشتن گفتن اما استفاده ازش رو برای تصویر پیشنهاد نمیکنم)
    fopen با https مشکلی نداره؟

  8. #8

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    بنظرم باید از سوکت و درخواست از نوع HEAD استفاده کنی.
    سرورها در جواب این درخواست فقط هدرها رو برمیگردونن و نه کل فایل رو.
    در نتیجه میتونی موجود بودن فایل رو باهاش چک کنی.
    البته HTTPS بنظرم یک داستان دیگه ای داره. یحتمل باید OpenSSL نصب باشه و استفاده کنی، اما بازم با درخواست HEAD. احتمالا فقط سوکت شما از نوع SSL میشه.

  9. #9

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    البته HTTPS بنظرم یک داستان دیگه ای داره. یحتمل باید OpenSSL نصب باشه و استفاده کنی، اما بازم با درخواست HEAD. احتمالا فقط سوکت شما از نوع SSL میشه.
    بنظرم برای چک کردن لینکها و آدرسهای HTTPS باید کاری کنیم که مرورگر کلید عمومی خودش رو هم ارسال کنه در صورتیکه با استفاده از توابع پی اچ پی، کلید عمومی ارسال نمی شه. نظرتون در این مورد چیه؟

  10. #10

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    خیر، مرورگر کلید عمومی خاصی رو ارسال نمیکنه.
    اون چیزی که در اینترنت هست تقریبا همیشه احراز هویت یک طرفه هست. حداقل این کاری هست که سایت های عمومی میکنن.
    یعنی سرور مورد نظر هویت خودش رو با استفاده از گواهینامه و امضای دیجیتال ثابت میکنه و بعدش هم که اطلاعات رد و بدل شده رمزنگاری میشن تا کلاینت مطمئن باشه داره با همون سرور صحبت میکنه و کسی هم نمیتونه اطلاعات رد و بدل شده رو این وسط بخونه یا دستکاری کنه.
    کلاینت چیزی رو ثابت نمیکنه و برای سرور احراز هویت نمیشه. بنابراین هیچ گواهینامه و کلید عمومی ای از جانب کلاینت به سرور ارسال نمیشه.

  11. #11

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    سوکت Port هم میگیره دیگه. مشکل ssl با اون حل میشه. من گفتم با سوکت و cURL میشه شما سوکت رو نشنیده گرفتی. fsockopen

  12. #12

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    یعنی سرور مورد نظر هویت خودش رو با استفاده از گواهینامه و امضای دیجیتال ثابت میکنه و بعدش هم که اطلاعات رد و بدل شده رمزنگاری میشن تا کلاینت مطمئن باشه داره با همون سرور صحبت میکنه و کسی هم نمیتونه اطلاعات رد و بدل شده رو این وسط بخونه یا دستکاری کنه.
    پس چرا توابع php نمی تونن وجود فایلها رو توی سرورهایی که از HTTPS استفاده می کنن رو شناسایی کنن؟
    سوکت Port هم میگیره دیگه. مشکل ssl با اون حل میشه.
    می شه توضیح فنی بدید که چرا با سوکت مشکل حل می شه و توابع عادی نمی تونن مشکل رو حل کنن؟

  13. #13

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    پس چرا توابع php نمی تونن وجود فایلها رو توی سرورهایی که از HTTPS استفاده می کنن رو شناسایی کنن؟
    بخاطر اینکه ارتباط از طریق سوکت انجام میشه و سوکت هایی که برای HTTPS استفاده میشن باید از نوع SSL باشن.
    البته من تاحالا تست نکردم. ولی اگر کار نمیکنه حتما به این دلیل هست.

  14. #14

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    بخاطر اینکه ارتباط از طریق سوکت انجام میشه و سوکت هایی که برای HTTPS استفاده میشن باید از نوع SSL باشن.
    مگه نمی گید که سمت مروگر نیاز به تایید ارتباط نیست پس چرا باید از سوکت استفاده کرد؟

  15. #15

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    من الان چک کردم fopen هم که //:ssl رو پشتیبانی میکنه

  16. #16

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    من الان چک کردم fopen هم که //:ssl رو پشتیبانی میکنه
    تصویری که چک کرده بودید توی سرور خودتون بود یا از یه سرور دیگه؟
    بعد از اینکه از fopen استفاده کردید چطور باید تشخیص بدم که فایل مورد نظر یه تصویر هست؟

  17. #17

    نقل قول: با چه تابعی می تونم چک کنم که فایل داده شده توی اینترنت موجود هست؟

    هیچ کدوم. از سایت PHP !
    http://www.php.net/manual/en/function.fopen.php
    ببینیداگر فایل وجود نداشته باشه، این توابع اگه هدر برگردونند (مثل سوکت) ۴۰۴ برمیگردوند در غیر اینصورت معمولا False... اطلاعاتشون رو مطالعه کنید. ساده هستند.
    به نظر من ساده‌ترین و تمیزترین راه، cURL هست و در نهایت نتیجه‌ی هیچکدوم قطعی نیست چون همونجور که گفتم به وضعیت دو تا سرور وابسته‌ست...

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •