طيب نعيد من تاني بهدوء أكثر
فهم المشكلة = نص الحل
المشكلة الآن ، الكود يقول : عند إقفال الصفحة إفتح هذا الموقع .. جميل ؟
الآن لما تحط الكود في الهيدر ( الهيدر يتم إستدعائها في جميع الصفحات ) ، بمجرد ما أضغط على أي قسم من أقسام الموقع .. وينتقل المتصفح من الصفحة الحالية للصفحة التي اخترتها أنا .. فهذا يعتبر إغلاق للصفحة الأولانية أو الرئيسية .. وهنا يعمل الكود " تم إقفال الصفحة .. لذا سأقوم بفتح الموقع المذكور لي" ..
إذن المشكلة ، أن الزائر يتم تنفيذ الكود عنده كل مرة ينتقل من صفحة لصفحة .. وهذا ليس خطأ في الكود . . فالكود ينفذ وظيفته بشكل سليم و 100% ..
ولكن المشكلة أن مكانه غلط .. فكر معي .. نريد أن نضعه في مكان .. لا يتكرر في صفحات الموقع كلها .. فقط بتكرر مرة واحدة ..
أين هذا المكان ؟
آخ .. وسط الموقع .. مثلا شايف الأخبار .. هل يتم تكرارها في كل الصفحات ؟ لا .. إذن المكان مناسب ..
وحينها بمجرد إنتقاله من الرئيسية سيفتح الموقع " التقفيلة " ولن يتم تنفيذ مرة أخرى .. لأنه لن يتم إستدعاء الأخبار مرة أخرى !
1- إذهب معي إلى theme.php :
( لا أدري إذا كان موقعك يعتمد على نظام ملفات الهتمل أم فقط theme.php .. ولكن لنقل أن لديك ملفات هتمل لأن هذه الطريقة الأكثر إنتشارا - رغم ضعفها امنيا - )
السطر 245 تقريبا .. في الفنكشن اللي إسمها :
بعد
إكتب :
كود:
echo "<BODY onunload=\"window.open('http://www.mergab.com')\">";
ليكون بهذا الشكل :
كود PHP:
print $r_file;
echo "<BODY onunload=\"window.open('http://www.mergab.com')\">";
الآن جرب ورد علي بالنتيجة
2- الآن هناك متغير في theme.php .. يشيك ( هل هذه الصفحة هي الصفحة الرئيسية ؟ أم صفحة فرعية ؟ )
هذا المتغير موجود لا أدري من النسخة كام إلى النسخة 7.6 .. النسخ الأخيرة تم تغيير إسم المتغير فيها ..
ما عليك سوى أن تقوم بالتالي :
في فنكشن
ستجد :
كود PHP:
global $admin, $user, $banners, $sitename, $slogan, $cookie, $prefix, $db, $nukeurl, $anonymous, $name;
ضيف في النهاية index هكذا :
كود PHP:
global $admin, $user, $banners, $sitename, $slogan, $cookie, $prefix, $db, $nukeurl, $anonymous, $name, $index;
الآن روح لنفس المكان اللي أنت حاطط فيه الكود وإعمل التالي :
كود PHP:
if ($index == 1){
echo "<BODY onunload=\"window.open('http://www.mergab.com')\">";
}
أو لنفرض أنك حاطط الكود في ملف الهتمل .. حينها إذهب لفنكشن الهيدر في آخرها يصبح هكذا :
كود PHP:
$thefile = implode("", file($tmpl_file));
$thefile = addslashes($thefile);
$thefile = "\$r_file=\"".$thefile."\";";
eval($thefile);
print $r_file;
if ($index == 1){
echo "<BODY onunload=\"window.open('http://www.mergab.com')\">";
}
الآن سيتعرف على إذا ما كانت الصفحة رئيسية ( وحينها يتم تنفيذ الكود ) ولو فرعية .. ما بيقرا الكود نهائي ..
3- من المميزات التي يفرضها الفريم .. إنه صفحة مستقلة .. ليس لها دخل .. فلو فرضنا هناك فريم ثابت بأعلى موقعك .. وحاطط أنت فيه الكود .. الفريم لن يتغير ولن يتحرك .. مهما تصفح الزائر في المحتوى اللي تحت ..
ولكن لما يغلق الزائر الموقع ككل .. سيتم إغلاق الفريم معاه .. وحينها يبدأ الكود .. !
فإحنا ببعض التحايل .. نستطيع أن نضيف فريم .. ويكون غير مرئي .. ( مش لازم يعني نخلي الفريم كبييييير وواخد كل هيدر الموقع ) .. نعمل فريم بكسل في بكسل .. لا أحد يشوفه .. ولا هو يشوف أحد .. ومهما تصفح الزائر .. بيكون الفريم شغال معاه .. ولما يغلق الموقع .. يشتغل الكود !!
إذهب .. وإنشىء ملف بإسم index.html وضع فيه الكود التالي :
كود:
<frameset rows="*,0>
<frame name="header" scrolling="no" noresize target="main" src="eg.html">
<frame name="main" src="index.php">
<noframes>
<body>
<p>This page uses frames, but your browser doesn't support them.</p>
</body>
</noframes>
</frameset>
الآن روح وانشىء ملف بإسم eg.html وضع فيه كود التقفيلة بشكل عادي تماما html ..
- لاحظ هل يوجد أي تغير بموقعك ؟ لا
- لاحظ الكود شغال بشكل ممتاز ؟ نعم
أخبرني بالنتيجة .. تحياتي