كيفية إدارة جلسة PHP بسيطة باستخدام C ++ الضفيرة (يبكورل)

StackOverflow https://stackoverflow.com/questions/203990

سؤال

وأنا أكتب عميل C ++ التي تستخدم يبكورل للتواصل مع السيناريو PHP.

ووالاتصالات وينبغي أن تستند الدورة، وبالتالي فإن المهمة الأولى هي للدخول وجعل النصي PHP اقامة الدورة.

وأنا لست معتادا على العمل مع جلسات سواء من C ++ أو PHP. وأنا أعلم أساسا أن عليها أن تفعل مع الكوكيز والتواصل معرف الدورة.

وأنا لا يمكن العثور على أي مثال على الصفحة الرئيسية حليقة الذي يدل بسيطة حالة جلسة استخدام الإدارة.

وأفترض أنها لها علاقة مع واحد أو العديد من الخيارات التالية في حليقة:

CURLOPT_COOKIE
CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR
CURLOPT_COOKIESESSION
CURLOPT_COOKIELIST

ولكن لا استطيع ان ارى حقا الصورة الكبيرة للتو من وثائق CURLOPT_COOKIESESSION على سبيل المثال.

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

والتحيات

وروبرت

هل كانت مفيدة؟

المحلول

وبقدر ما أفهم، الضفيرة سوف تتعامل مع كوكيز الجلسة تلقائيا بالنسبة لك إذا كنت تمكين ملفات تعريف الارتباط، ما دمت إعادة استخدام مقبض الضفيرة للحصول على كل طلب في الدورة:

CURL *Handle = curl_easy_init();

// Read cookies from a previous session, as stored in MyCookieFileName.
curl_easy_setopt( Handle, CURLOPT_COOKIEFILE, MyCookieFileName );
// Save cookies from *this* session in MyCookieFileName
curl_easy_setopt( Handle, CURLOPT_COOKIEJAR, MyCookieFileName );

curl_easy_setopt( Handle, CURLOPT_URL, MyLoginPageUrl );
assert( curl_easy_perform( Handle ) == CURLE_OK );

curl_easy_setopt( Handle, CURLOPT_URL, MyActionPageUrl );
assert( curl_easy_perform( Handle ) == CURLE_OK );

// The cookies are actually saved here.
curl_easy_cleanup( Handle );

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

curl_easy_setopt( Handle, CURLOPT_COOKIEFILE, "" );

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

نصائح أخرى

ولدي مثال لحليقة سطر الأوامر في باش - تسجيل الدخول إلى بريس ثم باستخدام وظيفة التصدير. ربما أنها سوف تساعدك على:

#!/bin/bash

PHPMYADMINURL="http://www.example.com/phpmyadmin/"

# Username and password, has to be URL-encoded
MYUSERNAME="username"
MYPASSWORD="password"

TMPCOOKIES="$(mktemp)" || exit 1

TOKEN=$(
        curl \
                --silent \
                --show-error \
                --data @- \
                --data "lang=en-utf-8" \
                --cookie-jar "$TMPCOOKIES" \
                --dump-header - \
                --url "$PHPMYADMINURL" \
                <<< "pma_username=$MYUSERNAME&pma_password=$MYPASSWORD" \
                | egrep 'token=[0-9a-h]+' \
                | head -1 \
                | sed -r 's/^(.*token=)([0-9a-h]+)(.*)/\2/' \
        ) || exit 1

curl \
       --cookie "$TMPCOOKIES" \
       --data "token=$TOKEN" \
       --data "export_type=server" \
       --data "what=sql" \
       --data "asfile=sendit" \
       --data "sql_data=something" \
       --data "sql_columns=something" \
       --data "sql_hex_for_blob=something" \
       --data "compression=gzip" \
       --url "$PHPMYADMINURL"export.php 1>&2 || exit 1

rm -f "$TMPCOOKIES" || exit 1

وبريس يستخدم الرموز إلى جانب ملفات تعريف الارتباط بحيث رمز قليلا أكثر تعقيدا مما هو مطلوب بشكل طبيعي.

وجلسة في PHP لديه غرض الحفاظ على بعض الدولة على عدة طلبات، منذ HTTP في حد ذاته عديم الجنسية. للحصول على جلسة عمل من PHP، ببساطة طلب صفحة فب الذي يبدأ جلسة، والحفاظ على الكعكة تحصل على العودة للطلبات اللاحقة.

بدء جلسة في بي بسيطة - استدعاء الدالة session_start (). وأن وظيفة استئناف جلسة existsing في حالة وجود ملفات تعريف الارتباط في الطلب. عند بدء الدورة، والمتغيرات المستمرة يمكن تعيين باستخدام superglobal مجموعة $ _SESSION. انها فكرة جيدة لتخزين "يتم تسجيل in'-المنوال هناك =) لإنهاء جلسة PHP، تعيين $ _SESSION لمجموعة ()، بحيث يتم تدمير رمز.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top