السلام عليكم
كما وعدتكم اني بحط درس عن كيف تبرمج هاك سجل الزوار للvB3
لتنزيل الهاك شوف توقيعي
والمثال المباشر : http://www.spacetoon.net/vb3/guestbook.php
-------------
المتطلبات :
1 - محرر PHP (لتسهيل المهمة)
2 - أن تكون قرأت درس "تمهيد لبرمجة هاك" (في توقيعي)
3 - أن تقول بسم اله توكلنا على الله
4 - أن تكون صبورا لأن الدرس بالتفصيل الممل وإا ماتحب الملل لا تقرا
نبدأ
أولا : إقرأ درس "تمهيد لبرمجة هاك" واصنع قائمة في AdminCP/index.php (تجده موضح في الدرس)
ثانيا :
اصنع ملف وفليكن guestbook.php ونضعه في مجلد المنتدى الرئيسي
في البداية يجب أن يكون محتوى الصفحة هو
كود PHP:
<?php
require_once('./global.php'); // إدراج ملف global.php
?>
السطر الأول لإداج ال global.php ومن دونه لن تستطيع فعل أي شيء
والآن أضف الكود التالي تحت السطر الأول
كود PHP:
$bookname = "سجل الزوار";
$navbits = construct_navbits(array('' => $bookname));
السطر الأول وهو لتمييز ان اسم سجل الزوار هو "سجل الزوار" ويمكنك إدراجه في أي مكان بكتابة جملة "$bookname" في أي مكان وهو من نفسه سيفهم ان معناها هو "سجل الزوار" (ببساطة إنها المتغيرات)
السطر الثاني وهو كما شرحناه في درس "تمهيد لبرمجة هاك"
أصبحت الصفحة كالتالي
كود PHP:
<?php
require_once('./global.php'); // إدراج ملف global.php
$bookname = "سجل الزوار";
$navbits = construct_navbits(array('' => $bookname));
?>
أضف هذا الكود تحتهم
كود PHP:
$query = "SELECT * FROM vbguestbook ORDER BY id DESC";
$result = mysql_query ($query)
or die ("خطأ في قاعدة البيانات");
السطر الأول وهو استدعاء كل شيء من جدول vbguestbook
السطر الثاني والثالث هم كود واحد وهو لإرسال الإستعلام لقاعدة البيانات وإظهار رسالة "خطأ في قاعدة البيانات" إذا لم يقم بالإتصال
أصبحت الصفحة كالتالي
كود PHP:
<?php
require_once('./global.php'); // إدراج ملف global.php
$bookname = "سجل الزوار";
$navbits = construct_navbits(array('' => $bookname));
$query = "SELECT * FROM vbguestbook ORDER BY id DESC";
$result = mysql_query ($query)
or die ("خطأ في قاعدة البيانات");
?>
أضف هذا الكود :
كود PHP:
while ($book=mysql_fetch_array($result))
{
eval('$gstbit .= "' . fetch_template('guestbook_bit') . '";');
}
كلها مع بعض عبارة عن كود واحد وهذا الكود مهم
السطر الأول : يقوم بفحص محتوى قاعدة البيانات عبر $result التي كتبناها لإرسال الإستعلام (استدعاء بيانات جدول vbguestbook) ويقوم بزيادتها كلما إزداد الأسطر في جدول vbguestbook
السطر الثالث : وهو لتأكيد بأن $gstbit تستدعي قالب 'guestbook_bit وقمنا بإدراج $gstbit في قالب guestbook لتستدعي قالب guestbook_bit
الآن اصبحت الصفحة كالتالي
كود PHP:
<?php
require_once('./global.php'); // إدراج ملف global.php
$bookname = "سجل الزوار";
$navbits = construct_navbits(array('' => $bookname));
$query = "SELECT * FROM vbguestbook ORDER BY id DESC";
$result = mysql_query ($query)
or die ("خطأ في قاعدة البيانات");
while ($book=mysql_fetch_array($result))
{
eval('$gstbit .= "' . fetch_template('guestbook_bit') . '";');
}
?>
الآن أضف الكود التالي
كود PHP:
eval('$navbar = "' . fetch_template('navbar') . '";');
وهو لإدراج قالب ال navbar إذا تم كتابة كلمة $navbar في أي قالب
أضف تحته هذا الكود
كود PHP:
if ($guest == "add") {
eval('print_output("' . fetch_template('guestbook_add') . '");');
}
وهو يعني إذا كان في صفحة التوقيع في سجل الزوار وعنوانها guestbook.php?guest=add يقوم بإدراج قالب guestbook_add
ثم أضف هذا الكود
كود PHP:
if ($guest == "") {
eval('print_output("' . fetch_template('guestbook') . '");');
}
وهو يعني إذا الزائر في الصفحة الرئيسية(guestbook.php) يقوم بإدراج قالب guestbook
أصبح محتوى الصفحة الآن هو
كود PHP:
<?php
require_once('./global.php');
$bookname = "سجل الزوار";
$navbits = construct_navbits(array('' => $bookname));
$query = "SELECT * FROM vbguestbook ORDER BY id DESC";
$result = mysql_query ($query)
or die ("خطأ في قاعدة البيانات");
while ($book=mysql_fetch_array($result))
{
eval('$gstbit .= "' . fetch_template('guestbook_bit') . '";');
}
eval('$navbar = "' . fetch_template('navbar') . '";');
if ($guest == "add") {
eval('print_output("' . fetch_template('guestbook_add') . '");');
}
if ($guest == "") {
eval('print_output("' . fetch_template('guestbook') . '");');
}
?>
الآن أضف الكود التالي
كود PHP:
if ($guest == "doadd") {
$msg = nl2br($msg);
$updataguestbook=mysql_query("INSERT INTO vbguestbook(id,name,mail,taq,title,msg) VALUES ('','$name','$mail','$taq','$title','$msg') ") or die ("خطأ في تحديث القاعدة");
Header("Location: $PHP_SELF");
}
وهذا يعني بعد الضغط على زر الإرسال يقوم بإرسال البيانات لقاعدة البيانات في جدول vbguestbook
ثم ينقلني للصفحة الرئيسية لسجل الزوار
أما السطر الأول فتجد له شرح في توقيع أخونا رضا
انتهينا من الملف الأول والآن ارفعه للمجلد الرئيسي للمنتدى
-------------------------
ننتقل الآن للملف guestadmin.php وعليك ان تضعه في مجلد الأدمن AdminCP
في البداية يجب أن يكون محواه كالتالي :
كود PHP:
<?php
error_reporting(E_ALL & ~E_NOTICE);
require_once('./global.php');
print_cp_header();
$query = "SELECT * FROM vbguestbook ORDER BY id DESC";
$result = mysql_query ($query)
or die ("خطأ في قاعدة البيانات");
print_cp_footer();
?>
كما شرحنا لكم مسبقا وأيضا في درس "تمهيد لبرمجة هاك"
يجب أن ندرج ال global.php والإتصال بقاعدة البيانات
وأيضا كود هيدر وفووتر لوحة التحكم
أضف هذا الكود (أضفته بالإنجليزي كي لا يقوم أي شخص بنسخه ويقول انه عمل عملا بل يعربها عالأقل)
كود PHP:
if ($_REQUEST['do'] == 'modify')
{
while ($mo=mysql_fetch_array($result))
{
echo '<form name="edit" action="guestadmin.php?doit=do" method="post">';
print_form_header();
print_table_header("header");
print_column_style_code(array('white-space: nowrap', ''));
echo "<input name=\"id\" type=\"hidden\" value=\"$mo[id]\">";
print_label_row("<b>name</b>","<input name=\"name\" type=\"text\" value=\"$mo[name]\">");
print_label_row("<b>e-mail</b>","<input name=\"mail\" type=\"text\" value=\"$mo[mail]\">");
print_label_row("<b>Title</b>","<input name=\"title\" type=\"text\" value=\"$mo[title]\">");
print_label_row("<b>Content</b>","<textarea name=\"msg\" rows=5 cols=50>$mo[msg]</textarea>");
print_label_row("<b>Do</b>","<input name=\"it\" type=\"radio\" value=\"modify\">Edit <input name=\"it\" type=\"radio\" value=\"del\">Delete <input type=\"submit\" value=\"Do it\">");
print_table_footer();
echo "</form>";
}
}
وسأدعك تجرب ما يفعله هذا الكود ولكن عنوانه سيكون guestadmin.php?do=modify
ثم أضف هذا الكود تحته :
كود PHP:
switch ($doit) {
case 'do':
if ($it == "del") {
//$query = "DELETE FROM vbguestbook WHERE id=$id";
$del = mysql_query ("DELETE FROM vbguestbook WHERE id=$id")
or die ("Error");
}
if ($it == "modify") {
$query = "UPDATE vbguestbook set name='$name',mail='$mail',title='$title',msg='$msg' WHERE id=$id";
$modify = mysql_query ($query)
or die ("Error");
}
break;;
}
وهو سقوم بعملية الحذف أو التعديل وأيضا أضفته بالإنجليزي وتعريبه غير مهم
أصبح محتوى صفحة guestadmin.php هو :
كود PHP:
<?php
error_reporting(E_ALL & ~E_NOTICE);
require_once('./global.php');
print_cp_header();
$query = "SELECT * FROM vbguestbook ORDER BY id DESC";
$result = mysql_query ($query)
or die ("خطأ في قاعدة البيانات");
if ($_REQUEST['do'] == 'modify')
{
while ($mo=mysql_fetch_array($result))
{
echo '<form name="edit" action="guestadmin.php?doit=do" method="post">';
print_form_header();
print_table_header("header");
print_column_style_code(array('white-space: nowrap', ''));
echo "<input name=\"id\" type=\"hidden\" value=\"$mo[id]\">";
print_label_row("<b>name</b>","<input name=\"name\" type=\"text\" value=\"$mo[name]\">");
print_label_row("<b>e-mail</b>","<input name=\"mail\" type=\"text\" value=\"$mo[mail]\">");
print_label_row("<b>Title</b>","<input name=\"title\" type=\"text\" value=\"$mo[title]\">");
print_label_row("<b>Content</b>","<textarea name=\"msg\" rows=5 cols=50>$mo[msg]</textarea>");
print_label_row("<b>Do</b>","<input name=\"it\" type=\"radio\" value=\"modify\">Edit <input name=\"it\" type=\"radio\" value=\"del\">Delete <input type=\"submit\" value=\"Do it\">");
print_table_footer();
echo "</form>";
}
}
switch ($doit) {
case 'do':
if ($it == "del") {
//$query = "DELETE FROM vbguestbook WHERE id=$id";
$del = mysql_query ("DELETE FROM vbguestbook WHERE id=$id")
or die ("Error");
}
if ($it == "modify") {
$query = "UPDATE vbguestbook set name='$name',mail='$mail',title='$title',msg='$msg' WHERE id=$id";
$modify = mysql_query ($query)
or die ("Error");
}
break;;
}
print_cp_footer();
?>
والآن انتهينا وأي سؤال حول هذه الأكواد أنا جاهز
وان شاء الله إلى درس قادم
سلام