PHP GET ، السجلات العشوائية ، وزر الخلف
-
21-09-2019 - |
سؤال
يحتوي موقعي على مكتبة مليئة بالألعاب ، والدول ، وسيناريوهات اللعبة ، إلخ.
library.php
يعطى أ type=___
& id=___
علي سبيل المثال library.php?type=scenario&id=ABCD001
library.php
ينقذ id
إلى متغير جلسة ويحمل تضمينًا مناسبًا ل type
كل هذا يعمل فقط dandy. الآن ، أردت أن أعطي المستخدمين خيار سحب سيناريو عشوائي. للقيام بذلك ، أضفت خاصًا id
إلى المنطق داخل lib-scenario.php
(بما في ذلك) بحيث إذا أعطيت library.php?type=scenario&id=random
يشمل Knows تشغيل استعلام بديل لسجل عشوائي بدلاً من الفعلي id
هذا يعمل أيضا فقط dandy ... ما لم شخص ما يضرب Random Scenario
الزر مرتين على التوالي ، ويقرر ذلك كان السيناريو العشوائي السابق أكثر برودة ، أريد أن أذهب الى الخلف إلى ذلك.
لأن عنوان HTTP دائمًا directory/library.php?type=scenario&id=random
بغض النظر عن عدد المرات التي تنقر فيها Random Scenario
, ، بمجرد النقر فوقك مرة أخرى ، ستُنقل إلى الصفحة الأخيرة مع عنوان بديل قمت بزيارته.
لذا ، إذا بدأت في Home
الصفحة ، وضرب Random Scenario
35 مرة ، ثم قرر الـ 34 هو ما تريده وانقر فوق BACK
, ، سوف تعيد إلى Home
صفحة.
يجب أن أعترف أن هذه لم تكن مشكلة كنت أتوقعها. كان أحد المختبرين أول من كان لديه الرغبة في النسخ الاحتياطي في تيار السيناريو العشوائي وهنا نحن.
كيف يمكنني إضافة وظائف النسخ الاحتياطي إلى البرنامج النصي الخاص بي؟
المحلول
قم بعمل زر "السيناريو العشوائي" ببساطة ارتباط بمعرف السيناريو الفعلي (ولكن العشوائي). من المحتمل أن تضطر إلى بناء هذا مع استعلام SQL للحصول على كل هوية السيناريوهات الخاصة بك.
$result = mysql_query("SELECT id FROM scenarios");
while ($row = mysql_fetch_row($result)) {
$ids[] = $row[0];
}
$randomid = array_rand($ids);
زر:
<a href="directory/library.php?type=scenario&id=<?php echo $randomid; ?>Random Scenario</a>
إذا كانت معرف السيناريو الخاص بك كلها أرقام متتالية ، فيمكنك ببساطة استخدام هذا بدلاً من ذلك:
$randomid = rand($min, $max);
نصائح أخرى
يمكنك حل هذا عن طريق إعادة توجيه إلى عنوان URL الكنسي للسيناريو ، أي: id = إعادة توجيه عشوائي إلى ID = A92831 أو أي شيء تم اختياره. سيتم تخزين عنوان URL النهائي في التاريخ ، بدلاً من ID = عنوان URL العشوائي.