معلومات المستخدم البطيئة php. خدمة RESTful بسيطة بلغة PHP الأصلية

معلومات المستخدم البطيئة php. خدمة RESTful بسيطة بلغة PHP الأصلية

يحصل على كائن WP_User الذي يحتوي على كافة بيانات المستخدم المحدد.

البيانات التي يتم إرجاعها بواسطة الوظائف تتوافق تمامًا مع حقول جداول قاعدة البيانات: wp_users وwp_usermeta (وصف الجدول).

هذه ميزة قابلة للتوصيل - على سبيل المثال. يمكن استبداله من البرنامج المساعد. هذا يعني أنها لن تعمل (تتصل) إلا بعد توصيل جميع المكونات الإضافية، وحتى هذه اللحظة لم يتم تحديد الوظيفة بعد... لذلك لا يمكنك استدعاء هذه والوظائف التي تعتمد عليها مباشرة من كود البرنامج المساعد. يجب أن يتم استدعاؤها عبر الخطاف plugins_loaded أو الأحدث، مثل الخطاف init.

استبدال الوظيفة (التجاوز) - في البرنامج المساعد، يمكنك إنشاء وظيفة بنفس الاسم، ثم ستحل محل الوظيفة الحالية.

✈ 1 مرة = 0.000296 ثانية = سريع| 50000 مرة = 0.78 ثانية = سريع جدا| PHP 7.1.2RC1، وب 4.7.2

لا توجد خطافات.

عائدات

WP_User/false. كائن البيانات، أو خطأ إذا تعذر العثور على المستخدم المحدد.

الاستخدام

get_userdata($userid); $userid (الرقم المطلوب)معرف المستخدم الذي تريد استرجاع بياناته.
الافتراضي: لا

أمثلة

#1 كيفية إخراج البيانات من كائن البيانات المستلم

$user_info = get_userdata(1); صدى "اسم المستخدم:" . $user_info->user_login . "\ن"؛ صدى "مستوى الوصول:". $user_info->user_level . "\ن"؛ صدى "المعرف:" . $user_info->المعرف . "\ن"؛ /* المخرجات: اسم المستخدم: المشرف مستوى الوصول: 10 المعرف: 1 */

#1.2 تحويل البيانات إلى متغير

مثال آخر، هنا فقط سنقوم أولاً بكتابة البيانات في متغيرات، ثم عرضها على الشاشة:

$user = get_userdata(1); $username = $user->user_login; $first_name = $user->first_name; $last_name = $user->last_name; echo "قام $first_name $last_name بزيارة الموقع ضمن تسجيل الدخول: $username."; /* Object $user: WP_User Object( => stdClass Object( => 80 => kogian => $P$BJFHKJfUKyWv1TwLOVAENYU0JGNsq. => kogian => [البريد الإلكتروني محمي]=> http://example.com/ => 01-09-2016 00:34:42 => => => kogian) => 80 => Array( => 1) => wp_capabilities => Array( => المشترك) => المصفوفة( => 1 => 1 => 1) => => 1) */

# 2 طرق الفصل

الكائن الذي تم الحصول عليه بواسطة get_userdata() هو مثيل للفئة وله طرق يمكن استخدامها. في بعض الأحيان يمكن أن يكون هذا مفيدًا. فيما يلي مثال بسيط للحصول على خيار المستخدم باستخدام طريقة $user->get() :

$user = get_userdata(1); echo $username = $user->get("user_login");

قائمة ببعض الطرق:

    الحصول على(مفتاح $) - إرجاع قيمة الخيار؛

    has_prop($key) - يتحقق مما إذا كان الخيار المحدد مثبتًا أم لا؛

    has_cap($cap) - يتحقق مما إذا كان المستخدم لديه القدرة أو الدور المحدد؛

    get_role_caps() - يحصل على جميع إمكانيات دور المستخدم ويجمعها مع القدرات الفردية للمستخدم؛

    add_role($role) - يضيف دورًا للمستخدم؛

    Remove_role($role) - إزالة الدور من المستخدم؛

  • set_role($role) - يحدد دور المستخدم؛

ملحوظات

فيما يلي بعض قيم حقول جدول wp_users وwp_usermeta المفيدة التي يمكنك استخدامها لاسترداد البيانات:

  • اسم العرض

user_meta

  • وصف المستخدم

    wp_capabilities (صفيف)

    admin_color (موضوع لوحة الإدارة. افتراضي - جديد)

    Closepostboxes_page

  • source_domain

تجدر الإشارة أيضًا إلى أنه منذ الإصدار 3.2، تغيرت البيانات التي تم إرجاعها قليلاً: تم إرجاع كائن WP_User. يتم تقسيم البيانات الموجودة في الكائن إلى مجموعات: البيانات، والأحرف الكبيرة، والأدوار (سابقًا تم إرجاع البيانات في قائمة عامة).

ومع ذلك، بفضل الأساليب "السحرية" (الأداة المساعدة) في PHP، يمكن الحصول على البيانات كما كان من قبل، على سبيل المثال، يتم الآن تخزين البيانات على النحو التالي: get_userdata(1)->data->rich_editing ، ولكن يمكنك الحصول عليها بهذه الطريقة هذا: get_userdata(1)->rich_editing، على الرغم من أن var_dump() لن يُظهر هذه العلاقة.

شفرة الحصول على بيانات المستخدم: wp-includes/pluggable.php WP 5.2.2

أولئك الذين درسوا بجدية أكثر أو أقل بي أتش بيأعلم أن هناك مصفوفة عالمية واحدة مفيدة جدًا في بي أتش بيمن اتصل $_SERVER. وفي هذه المقالة أود تحليل المفاتيح الأكثر شيوعًا وقيمها في هذه المصفوفة، نظرًا لأن معرفتها أمر إلزامي حتى بالنسبة للمبتدئين مبرمج PHP.

قبل ان تبدا المصفوفة العالمية $_SERVER في PHP، سأعطيك تلميحًا صغيرًا على الفور. هناك ميزة رائعة مدمجة فيه بي أتش بي، من اتصل فبينفو (). دعونا نعطي على الفور مثالا على استخدامه:

phpinfo();
?>

نتيجة لتنفيذ هذا البرنامج النصي البسيط، سترى جدولًا ضخمًا يحتوي على العديد من العناصر إعدادات مترجم PHP، بما في ذلك، بالقرب من النهاية سيكون هناك جدول القيم المصفوفة العالمية $_SERVER. وسوف يسرد كافة المفاتيح وجميع القيم المقابلة لها. كيف يمكن أن يساعد هذا لك؟ والحقيقة هي أنه إذا كنت بحاجة إلى هذه القيمة أو تلك، ونسيت ما يسمى المفتاح، فاستخدم الوظيفة فبينفو ()يمكنك دائما تذكر اسمها. بشكل عام، سوف تقوم بتنفيذ هذا البرنامج النصي وسوف تفهمني على الفور.

الآن دعنا ننتقل إلى الأكثر شعبية إلى مفاتيح المصفوفة $_SERVER:

  • HTTP_USER_AGENT- هذا المفتاح يسمح لك بمعرفة خصائص العميل. في معظم الحالات، يكون هذا بالتأكيد هو المتصفح، ولكن ليس دائمًا. ومرة أخرى، إذا كان متصفحًا، فما هو المتصفح الذي يمكنك التعرف عليه في هذا المتغير.
  • HTTP_REFERER- يحتوي على المسار المطلق لهذا الملف ( PHP النصي, صفحة HTML)، والذي تحولنا منه إلى هذا البرنامج النصي. بالمعنى التقريبي، من أين جاء العميل.
  • SERVER_ADDR - عنوان IPالخادم.
  • REMOTE_ADDR - عنوان IPعميل.
  • جذر المستند- المسار الفعلي إلى الدليل الجذر للموقع. يتم ضبط هذا الخيار عبر ملف تكوين خادم أباتشي.
  • SCRIPT_FILENAME- المسار الفعلي إلى البرنامج النصي المسمى.
  • QUERY_STRING- قيمة مفيدة جدًا تتيح لك الحصول على سلسلة مع الطلب، ومن ثم يمكنك تحليل هذه السلسلة.
  • REQUEST_URI- قيمة أكثر فائدة لا تحتوي على الطلب نفسه فحسب، بل تحتوي أيضًا على المسار النسبي للبرنامج النصي المستدعى من الجذر. غالبًا ما يستخدم هذا لإزالة التكرار من Index.phpأي عندما يكون لدينا مثل هذا عنوان URL: "http://mysite.ru/index.php" و " http://mysite.ru/" يؤدي إلى صفحة واحدة، و عناوين URLمختلفة، وبالتالي الازدواجية، والتي سيكون لها تأثير سيء على تحسين محرك البحث. وبالمساعدة REQUEST_URIيمكننا تحديد: مع Index.phpأم لا تم استدعاء البرنامج النصي. ويمكننا أن نفعل إعادة توجيه مع Index.php(إذا كان حاضرا REQUEST_URI) بدون Index.php. ونتيجة لذلك، عند إرسال مثل هذا الطلب: " http://mysite.ru/index.php?id=5"، سيكون لدينا إعادة توجيه إلى عنوان URL: "http://mysite.ru/?id=5". أي أننا تخلصنا من الازدواجية عن طريق الإزالة من عنوان URLهذا Index.php.
  • SCRIPT_NAME- المسار النسبي للبرنامج النصي المسمى.

ربما هذه هي كل العناصر المصفوفة العالمية $_SERVER في PHPالتي تستخدم بانتظام. عليك أن تعرفها وتكون قادرًا على استخدامها عند الضرورة.

$HTTP_SERVER_VARS [محذوف]

(PHP 4 >= 4.1.0، PHP 5، PHP 7)

$_الخادم-- $HTTP_SERVER_VARS [محذوف]معلومات حول الخادم وبيئة التنفيذ

وصف

المتغير $_SERVER عبارة عن مصفوفة تحتوي على معلومات مثل رؤوس البرامج النصية والمسارات والمواقع. يتم إنشاء الإدخالات في هذه المصفوفة بواسطة خادم الويب. وليس هناك ما يضمن أن كل خادم ويب سيوفر أيًا منها؛ قد يحذف الخادم بعضها أو يقدم البعض الآخر غير المذكور هنا. ومع ذلك، فإن العديد من هذه المتغيرات موجودة في مواصفات » CGI/1.1، لذا يمكنك أن تتوقع تنفيذها في خادم الويب الخاص بك.

يحتوي المتغير $HTTP_SERVER_VARS على نفس المعلومات الأولية، ولكنه ليس عالميًا للغاية. (لاحظ أن $HTTP_SERVER_VARS و$_SERVER متغيران مختلفان، لذا تتعامل PHP معهما وفقًا لذلك). لاحظ أيضًا أنه تمت إزالة "المصفوفات الطويلة" في PHP 5.4.0، لذلك لم يعد $HTTP_SERVER_VARS موجودًا.

الفهارس

قد تجد (أو لا) أيًا من العناصر التالية في المصفوفة $_SERVER. لاحظ أن القليل من العناصر، إن وجدت، ستكون متاحة (أو ستحدث فرقًا حقيقيًا) إذا تم تشغيل PHP على سطر الأوامر.

"PHP_SELF" اسم ملف البرنامج النصي الذي يتم تشغيله حاليًا، نسبة إلى جذر المستند. على سبيل المثال، $_SERVER["PHP_SELF"] في البرنامج النصي الموجود على http://example.com/foo/bar.php سيكون /foo/bar.php . يحتوي الثابت __FILE__ على المسار الكامل واسم الملف الحالي (أي المتصل). إذا كان PHP يعمل على سطر الأوامر، فإن هذا المتغير يحتوي على اسم البرنامج النصي، بدءًا من PHP 4.3.0. في السابق لم يكن متوفرا."أرجف" تم تمرير مجموعة من الوسائط إلى البرنامج النصي. عند تشغيل البرنامج النصي على سطر الأوامر، فإنه يمنح وصولاً يشبه لغة C إلى خيارات سطر الأوامر. عند استدعائها عبر طريقة GET، ستحتوي هذه المصفوفة على سلسلة الاستعلام."أرجك" يحتوي على عدد المعلمات التي تم تمريرها إلى البرنامج النصي (إذا تم تشغيلها في سطر الأوامر)."GATEWAY_INTERFACE" يحتوي على إصدار مواصفات CGI التي يستخدمها الخادم؛ على سبيل المثال" سي جي آي/1.1". "SERVER_ADDR" عنوان IP الخاص بالخادم الذي يعمل عليه البرنامج النصي الحالي."اسم الخادم" اسم المضيف الذي يعمل عليه البرنامج النصي الحالي. إذا كان البرنامج النصي يعمل على مضيف ظاهري، فسيحتوي هذا على الاسم المحدد لذلك المضيف الظاهري."SERVER_SOFTWARE" سلسلة تعريف الخادم المحددة في الرؤوس عند حدوث استجابة لطلب."SERVER_PROTOCOL" اسم وإصدار بروتوكول المعلومات الذي تم طلب الصفحة من خلاله؛ على سبيل المثال " HTTP/1.0"; "REQUEST_METHOD" ما هي الطريقة المستخدمة لطلب الصفحة؟ على سبيل المثال " يحصل", "رأس", "بريد", "يضع".

تعليق:

يخرج البرنامج النصي PHP بعد إرسال الرؤوس (أي بعد تنفيذ أي إخراج دون تخزين الإخراج مؤقتًا)، إذا تم تقديم الطلب باستخدام الطريقة رأس.

"REQUEST_TIME" الطابع الزمني لبداية الطلب. متاح بدءًا من PHP 5.1.0."REQUEST_TIME_FLOAT" الطابع الزمني لبداية الطلب، دقيق بالميكروثانية. متاح بدءًا من PHP 5.4.0."QUERY_STRING" سلسلة الاستعلام، إن وجدت، التي قامت باسترداد الصفحة."جذر المستند" الدليل الجذر للمستند الذي يتم فيه تنفيذ البرنامج النصي الحالي هو بالضبط الدليل المحدد في ملف تكوين الخادم."HTTP_ACCEPT" محتوى الرأس يقبل:من الطلب الحالي، إذا كان هناك واحد." HTTP_ACCEPT_CHARSET " محتوى الرأس قبول مجموعة الأحرف:من الطلب الحالي، إذا كان هناك واحد. على سبيل المثال: " ايزو-8859-1,*,utf-8". " HTTP_ACCEPT_ENCODING " محتوى الرأس قبول الترميز: com.gzip". " HTTP_ACCEPT_LANGUAGE " محتوى الرأس قبول اللغة:من الطلب الحالي، إذا كان هناك واحد. على سبيل المثال: " أون". "HTTP_CONNECTION" محتوى الرأس اتصال:من الطلب الحالي، إذا كان هناك واحد. على سبيل المثال: " حافظ على حياتك". "HTTP_HOST" محتوى الرأس يستضيف:من الطلب الحالي، إذا كان هناك واحد."HTTP_REFERER" عنوان الصفحة (إن وجدت) التي جلبت متصفح المستخدم إلى هذه الصفحة. يتم تعيين هذا الرأس بواسطة متصفح الويب الخاص بالمستخدم. لا تقوم جميع المتصفحات بتثبيته وبعضها يسمح لك بتغيير محتويات رأس HTTP_REFERER كميزة إضافية. باختصار، لا يمكن الوثوق به حقًا." HTTP_USER_AGENT " محتوى الرأس وكيل المستخدم:من الطلب الحالي، إذا كان هناك واحد. يحتوي هذا السطر على المتصفح الذي استخدمه المستخدم لطلب هذه الصفحة. والمثال النموذجي هو السطر: موزيلا/4.5 (X11؛ يو؛ لينكس 2.2.9 i586). من بين أمور أخرى، يمكنك استخدام هذه القيمة مع الدالة get_browser()لتكييف مخرجات صفحتك مع إمكانيات متصفح المستخدم"HTTPS" يقبل قيمة غير فارغة إذا تم تقديم الطلب عبر بروتوكول HTTPS.

تعليق: لاحظ أنه عند استخدام ISAPI مع IIS ستكون القيمة عنإذا لم يتم تقديم الطلب عبر HTTPS.

"REMOTE_ADDR" عنوان IP الذي يشاهد المستخدم منه الصفحة الحالية."المضيف البعيد" المضيف البعيد الذي يشاهد المستخدم منه الصفحة الحالية. يعتمد البحث العكسي عن DNS على قيمة المتغير REMOTE_ADDR.

تعليق: يجب تكوين خادم الويب الخاص بك لإنشاء هذا المتغير. على سبيل المثال، في Apache تحتاج إلى وجود التوجيه عمليات البحث عن اسم المضيف قيد التشغيلفي ملف httpd.conf بحيث يتم إنشاء هذا المتغير. أنظر أيضا gethostbyaddr().

"REMOTE_PORT" المنفذ الموجود على الجهاز البعيد والذي يُستخدم للاتصال بخادم الويب."REMOTE_USER" مستخدم مصادق."REDIRECT_REMOTE_USER" المستخدم الذي تمت مصادقته إذا تمت إعادة توجيه الطلب داخليًا."SCRIPT_FILENAME"

المسار المطلق للبرنامج النصي الذي يتم تنفيذه حاليًا.

تعليق:

إذا تم تشغيل البرنامج النصي على سطر الأوامر (CLI) باستخدام مسار نسبي مثل file.php أو ../file.php، فإن المتغير $_SERVER["SCRIPT_FILENAME"] سيحتوي على المسار النسبي المحدد من قبل المستخدم.

"SERVER_ADMIN" يحصل هذا المتغير على قيمته (لـ Apache) من التوجيه الموجود في ملف تكوين الخادم. إذا كان البرنامج النصي يعمل على مضيف افتراضي، فستكون هذه هي القيمة المحددة لذلك المضيف الظاهري."SERVER_PORT" المنفذ الموجود على كمبيوتر الخادم الذي يستخدمه خادم الويب للاتصال. بالنسبة للإعدادات الافتراضية، ستكون القيمة " 80 "؛ باستخدام SLL، على سبيل المثال، سيتم تكوين هذه القيمة لاتصالات HTTP الآمنة.

تعليق: للحصول على منفذ فعلي (حقيقي) في Apache 2، تحتاج إلى التثبيت UseCanonicalName = قيد التشغيلو UseCanonicalPhysicalPort = قيد التشغيلوإلا فقد يتم استبدال هذه القيمة وعدم إرجاع القيمة الحقيقية للمنفذ الفعلي. يعد الاعتماد على هذه القيمة أمرًا غير آمن في سياق التطبيقات التي تتطلب أمانًا محسنًا.

"SERVER_SIGNATURE" سلسلة تحتوي على إصدار الخادم واسم المضيف الظاهري الذي تتم إضافته إلى الصفحات التي أنشأها الخادم إذا تم تمكينها."PATH_TRANSLATED" المسار المستند إلى نظام الملفات (وليس جذر المستند) إلى البرنامج النصي الحالي، بعد أن يقوم الخادم بأي تعيين افتراضي إلى حقيقي.

تعليق: اعتبارًا من PHP 4.3.2، لم يعد يتم تعيين المتغير PATH_TRANSLATED ضمنيًا في Apache 2 SAPI، مقارنةً بإصدار Apache 1 حيث تم تعيينه على نفس قيمة المتغير SCRIPT_FILENAME عندما لا يكون قيد الاستخدام بواسطة Apache. تم إجراء هذا التغيير للتوافق مع مواصفات CGI، حيث يجب أن يكون المتغير PATH_TRANSLATED موجودًا فقط عند تعريف PATH_INFO. يمكن لمستخدمي Apache 2 استخدام التوجيه AcceptPathInfo = قيد التشغيلفي ملف التكوين httpd.conf لتعيين المتغير PATH_INFO.

"SCRIPT_NAME" يحتوي على المسار إلى البرنامج النصي الذي يتم تنفيذه حاليًا. وهذا مفيد للصفحات التي تحتاج إلى الإشارة إلى نفسها. يحتوي الثابت __FILE__ على المسار الكامل واسم الملف الحالي (أي المضمن)."REQUEST_URI" عنوان URI الذي تم تمريره للوصول إلى هذه الصفحة. على سبيل المثال، " /index.html". "PHP_AUTH_DIGEST" عند إجراء مصادقة HTTP Digest، يتم تعيين رأس "التفويض" لهذا المتغير، والذي يتم إرساله بواسطة العميل (يجب بعد ذلك استخدامه للتحقق المناسب)."PHP_AUTH_USER" عند إجراء مصادقة HTTP، يتم تعيين هذا المتغير على اسم المستخدم المقدم من قبل المستخدم."PHP_AUTH_PW" عند إجراء مصادقة HTTP، يتم تعيين هذا المتغير على كلمة المرور المقدمة من قبل المستخدم."AUTH_TYPE" عند إجراء مصادقة HTTP، يتم تعيين هذا المتغير إلى نوع المصادقة المستخدمة."PATH_INFO" يحتوي على أي مسار يوفره المستخدم بعد اسم البرنامج النصي ولكن قبل سلسلة الاستعلام، إذا كان ذلك متاحًا. على سبيل المثال، إذا تم طلب البرنامج النصي الحالي بواسطة عنوان URL http://www.example.com/php/path_info.php/some/stuff?foo=bar ، فسيحتوي المتغير $_SERVER["PATH_INFO"] على /بعض الاشياء?>

ستكون نتيجة تشغيل هذا المثال شيء من هذا القبيل.

منذ سنة واحدة | 9.8 ألف

في البرمجة، إحدى المهام الشائعة جدًا هي عندما تحتاج إلى الوصول إلى موقع آخر عبر HTTP أو HTTPS. في هذه المقالة، سنلقي نظرة على طريقة بسيطة لإنجاز هذه المهمة باستخدام لغة البرمجة PHP.

لماذا الوصول إلى موقع آخر باستخدام PHP عبر HTTP أو HTTPS؟

قد تكون هناك عدة أسباب، على سبيل المثال، يوجد على موقع الويب الخاص بك جزء من الوظيفة المسؤولة عن إضافة منتجات جديدة أو كتالوجات الأفلام إلى موقع الويب الخاص بك.

يتم إصدار أفلام جديدة على الشاشة كل يوم تقريبًا، ومن الأفضل أتمتة هذه العملية بحيث تتم بواسطة روبوت يقوم بذلك مجانًا.

بالنسبة للسلع، فإن الوضع هو نفسه - قد يكون لمتجرك عبر الإنترنت شركاء يرغبون في وضع بضائعهم على موقع الويب الخاص بك ومن كل عملية بيع لمنتج ما، سيعطيك الشركاء جزءًا من دخلهم. إذا كان لدى الشريك عدة آلاف من المنتجات ويتم تحديث قاعدة البيانات باستمرار، فإن عملية إضافة المنتجات إلى الموقع تحتاج أيضًا إلى أن تتم تلقائيًا باستخدام لغة برمجة PHP.

مثال للوصول إلى موقع آخر باستخدام PHP

في هذا المثال البسيط، سوف نستخدم دالة PHP قياسية تسمى file_get_contents().

استجابة من خادم VK، سترى المعلومات التالية:

( - الرد: [ - ( - المعرف: 210700286، - الاسم الأول: "ليندسي"، - الاسم الأخير: "ستيرلينغ"، - تاريخ الميلاد: "1986/09/21" - ) - ] )

حيث حصلنا على الاسم الأول واسم العائلة وتاريخ ميلاد المستخدم بالمعرف 210700286.

كيف يمكننا الآن استخدام PHP للحصول على هذه المعلومات وتحويلها إلى مصفوفة لمزيد من العمل المريح؟

باستخدام لغة برمجة PHP والدالة file_get_contents()، من السهل جدًا القيام بذلك!

$user_id- هذا هو المتغير الذي تكتب فيه معرف مستخدم VK،

معلومات $- في هذا المتغير نقوم بتخزين نتيجة الوصول إلى واجهة برمجة التطبيقات (API) لموقع VK.COM

بوجود مصفوفة تحتوي على هذه المعلومات، يمكنك عرض المستخدمين الذين تهمك على موقع الويب الخاص بك لبعض الأغراض، وبمساعدة أيضًا، يمكنك تصميم عرض هذه المعلومات بشكل جميل على موقع الويب الخاص بك.

خاتمة

كما ترون، باستخدام PHP، يمكنك بسهولة تقديم طلبات إلى مواقع HTTP وHTTPS، وقد نظرنا في وظيفة واحدة فقط للغة برمجة PHP والتي يمكنك من خلالها استرداد البيانات من موقع خارجي.

في المقالات التالية، سنلقي نظرة على ميزة أخرى مثيرة للاهتمام، ولكنها أكثر قوة، حيث يمكنك تعيين معلمات إضافية، مثل المتصفح ونظام التشغيل وغيرها، لتجربة أكثر روعة مع المواقع الخارجية.