درس في برمجة الهاكات
سنتحدث في هذا الموضوع عن طرق جلب البيانات
وكيفية تنسيقها مع التمبلتات وبعض الخصائص الى يمكننا ان نستخدمها
في الرد الثاني عن تقسيم النتائج على عدة صفحات
اولا:
عند جلب صف واحد من قاعدة البيانات
نستخدم الــquery_first
مثال
كود PHP:
$rating=$DB_site->query_first("SELECT username from user where
userid=2");
echo $rating[username];
لاكن عند جلب عدة صفوف لوفرضنا ان اردنا جلب اسماء جميع الاعضاء .
هنا لانستخدم الquery_first
اولا نكتب الاستعلام
كود PHP:
$r=$DB_site->query("SELECT username,userid from user");
ومن ثم نمرره بالداله while وايظا $DB_site->fetch_array
وقمنا بذلك لنستطيع عمل التكرار
كود PHP:
while($vbulletin_arab=$DB_site->fetch_array($r)){
echo $rating[username];
}
والان اذا اردنا عمل ذلك على التمبلت
اولا ننشىء التمبلت الرئيسي للصفحه المراده
مثلا نسميه swalif
ونعمل تمبلت اخر نضع الاشياء الى راح تكرر مثل اسم العضو في حالتنا هذه
او مثل ماشفنا في صفحة المواضيع
التمبلت الرئيسي للموضوع هو showthread
والتمبلت الفرعي هو postbit
وهو الى من خلاله نظهر الردود عن طريق التكرار
وننشىء تمبلت فرعي
ونسميه مثلا swalif_bits
ونضيف فيه الاشياء الى بتتكر مثل الاسم
كود:
<table width="100%">
<tr>
<td width="15%" bgcolor="{secondaltcolor}">
<p align="center"><font face="Tahoma"><a href="member.php?
s=$session[sessionhash]&action=getinfo&userid=$vbulletin_arab[userid]"
>$vbulletin_arab[username]</a></font>
</tr>
</table>
ونضيف مثلا في التمبلت الرئيسي للصفحه
كود:
<html dir=rtl>
<head><title>$bbtitle - اسماء الاعضاء</title>
</head>
<body>
{htmldoctype}
<p>
$headinclude
<p>
{htmldoctype}
<p>
$headinclude
<p>
$header
<br>
<table cellpadding="{tableouterborderwidth}" cellspacing="0" border="0"
bgcolor="{tablebordercolor}" {tableouterextra}
width="{contenttablewidth}" align="center"><tr><td>
<table cellpadding="4" cellspacing="{tableinnerborderwidth}" border="0"
{tableinnerextra} width="100%">
<tr id="cat">
<td bgcolor="{categorybackcolor}" colspan="4"
width="100%"><normalfont
color="{categoryfontcolor}"><b>$bbtitle</b>-<b> </b><b><fo
nt face="Tahoma">
</font></b><font face="Tahoma"><b>اسماء
الاعضاء</b></font></normalfont></td>
</tr>
<tr>
<td bgcolor="{tableheadbgcolor}" align="center"
width="15%"><font face="Tahoma"><smallfont
color="{tableheadtextcolor}"></smallfont><b>العضو</b></font></td>
</tr>
<tr>
<bgcolor="#C0C0C0">$swalif_bits</tr>
</table>
</td></tr></table>
<table cellpadding="{tableouterborderwidth}" cellspacing="0" border="0"
bgcolor="{tablebordercolor}" {tableouterextra}
width="{contenttablewidth}" align="center"><tr><td>
<table cellpadding="4" cellspacing="{tableinnerborderwidth}" border="0"
{tableinnerextra} width="100%">
<tr>
<td bgcolor="{tableheadbgcolor}" align="center"><smallfont
color="{tableheadtextcolor}"><b><a href="http://arabs-soft.com">
©</a></b><b><a href="http://arabs-soft.com">by
All-the-vb</a></b></smallfont></td>
</tr></table></td></tr></table>
$footer
<!-- all-the-vb (vbulletin-arab.com !-->
</body>
</html>
الان نأتي لتعريف التمبلت في ملف الـphp
1)التمبلت الرئيسي
كود PHP:
eval("dooutput(\"".gettemplate("swalif")."\");");
هنا swalif تعني اسم التمبلت.
وطبعا نضعه باخر ملف الــphp
2) التمبلت الفرعي
كود PHP:
eval("\$all_the_vb .= \"".gettemplate("swalif_bits")."\";");
هنا swalif_bits اسم التمبلت الفرعي
و $all_the_vb اسم المتغير الى نعرف به هذا التمبلت حتى نظهره في تمبلت swalif
وطبعا هذا الكود لا يوضع الا في التكرار الى عملناه مثال:
كود PHP:
while($vbulletin_arab=$DB_site->fetch_array($r)){
eval("\$all_the_vb .= \"".gettemplate("swalif_bits")."\";");
}
وهنا عرض كامل للملف الphp
كود PHP:
<?php
error_reporting(7);
require("./global.php");
$r=$DB_site->query("SELECT username,userid from user");
while($vbulletin_arab=$DB_site->fetch_array($r)){
eval("\$all_the_vb .= \"".gettemplate("swalif_bits")."\";");
}
eval("dooutput(\"".gettemplate("swalif")."\");");
?>