سؤال

ما هي الطريقة الأكثر موثوقية والأفضل والأكثر أمانًا لاستخدامها لمتغيرات URL التي تم تمريرها إلى صفحات مختلفة:1).استخدام متغيرات SESSION كمعلمات URL، أو

2).معلمات سلسلة الاستعلام العادية.

"أكثر موثوقية وأفضل وأكثر أمانًا" فيما يتعلق بما يلي:1.منع المشكلات المستمدة من جانب العميل ، مثل عندما يقوم المستخدم بتعطيل ملفات تعريف الارتباط 2.المتصفح التوافق 3.إجراء مكالمات API (لأن بعض API لها قيود وقضايا التوافق) 4.استخدام الموارد والذاكرة، وسرعة المعالجة

أقوم بإنشاء موقع قد يختلف فيه مقدار معلمات سلسلة الاستعلام في عناوين URL (من المحتمل أن يكون هناك 9 قيم محمولة في عنوان URL) - بناءً على إدخال المستخدم.قد يبدو من الأسهل تخزين القيم المتغيرة في متغيرات الجلسة بدلاً من حملها جميعًا (ربما 9) في معلمات URL.ولكن بسبب المخاوف الأربعة المذكورة أعلاه، فأنا متردد في استخدام متغيرات الجلسة.

شكرا على أي نصيحة!

ملاحظة.يتم بناء معلمات عنوان URL ديناميكيًا في متغير url $ ، مثل هذا:

$keyword = trim($_GET["Keyword"]);

$url = "webpage.php?";
$url .= "&Keyword=$keyword";

$shopByStore = $_GET["store"];
if (!empty($shopByStore)) {
$url .= "&store=$shopByStore";
}
// with 7 more GET methods potentially retrieving values for the URL parameters 

سيبدو عنوان URL كما يلي:

<a href="<?php echo $url; ?>">anchor text</a><br>

وبالطبع إذا ذهبت إلى مسار متغير SESSION، فسيتم الحصول على قيم إدخال المستخدم من نقرات URL وتخزينها في متغيرات SESSION حتى تنتهي الجلسة.

if (isset($_GET["store"])) {
$_SESSION["shopByStore"] = $_GET["store"];
}  
هل كانت مفيدة؟

المحلول

بالطبع من الممكن حفظ، على سبيل المثال، كلمة رئيسية مقدمة للبحث في متغير الجلسة.

ولكن هل هو مفيد؟لا.

سوف ينسى متغير الجلسة كل شيء، عندما يتم تدمير الجلسة.ربما يريد المستخدم حفظ البحث أو منحه لمستخدم آخر؟

مع معلمات GET، لا توجد مشكلة، ما عليك سوى نسخ عنوان URL الكامل وتأمينه.

ولكن مع SESSION حدود؟غير ممكن.كل مستخدم لديه جلسة خاصة به وفي المرة التالية التي يزور فيها المستخدم الموقع، سيحصل على جلسة أخرى (على سبيل المثال، إذا أغلق المستخدمون المتصفح من قبل).

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

هذه ليست سوى بعض النقاط ل SESSION ضد GET.

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