السلام عليكم ورحمة الله .. بداية أشكر الأخ أبو مشعل والأخ Mr.Muslim على مساعدتي في استرجاع اليوزر الخاص بي ,, وتوبة من كلمات السر البسيطة 
وتفضلوا مجموعة من الدوال الرائعة بحق ,, ستفيدك حتما عند عملك لأي برنامج PHP .. جمعتها من سكربتات ومن مواقع وأحببت إفادتكم بها .. ودعواتكم
أولا : كلاس فلترة النصوص
- الوظيفة : كلاس رائع لفحص المدخلات النصية سواء كانت استعلامات للقاعدة أو نصوص أرسلها الزائر من خلال حقول معينة .. ويمكنك اختيار الوظيفة التي تحتاجها من الكلاس حسب عملك ( تعطيل الهتمل - تصفية الاستعلامات - استبدال الوسوم الغير أمنة - تجاهل المسافات الفارغة ) .
- الكلاس : احفظ التالي في ملف وقم بتسميته filter.php
كود PHP:
<?
ass Filter {
var $text;
function Filter($text = '') {
$this->text = $text;
}
function setText($text, $filter = '') {
$this->text = $text;
if ($filter) {
$this->filterText($filter);
}
}
function getOutput() {
return $this->text;
}
function getQuoted() {
return "'$this->text'";
}
function filterText($filter) {
$filter = explode(',', $filter);
foreach ($filter as $rule) {
switch ($rule) {
//فلتر لتجاهل المسافات الفارغة
case 'trim':
$this->trim();
break;
//فلتر لتلافي أخطاء الاستعلام لقواعد البيانات
//ولتعطيل الهتمل
case 'db':
$this->escapeHTML();
$this->escapeSQL();
break;
//فلتر إضافة علامات تهريب لعلامات الاقتباس المفردة
case 'htmlOK':
$this->escapeSQL();
break;
//فلتر للنصوص والمشاركات الكبيرة لتعطيل الهتمل فيه
//واعتماد الأسطر المتعددة وأيضاإزالة الوسوم الغير آمنة
case 'comment':
$this->processMultiline();
break;
}
}
}
function trim() {
$this->text = trim($this->text);
}
function escapeHTML() {
$this->text = htmlspecialchars($this->text);
}
function normalizeNewLines() {
$this->text = preg_replace("/\r|\r\n|\n/", "\n", $this->text);
}
function newlines() {
$this->text = '<p>' . preg_replace("|\n\n|", '</p><p>', $this->text) . '</p>';
$this->text = str_replace('</p><p></p>', '</p>', $this->text);
$this->text = nl2br($this->text);
}
function processLinks() {
$this->text = preg_replace("|\[(http://[-_./a-zA-Z0-9!&%#?,'=:~]+)\::(.+)]|",
"<a href=\"$1\">$2</a>", $this->text);
}
function escapeSQL() {
$this->text = addslashes($this->text);
}
function processEmphasis() {
$this->text = preg_replace("/\*\*(.+?)\*\*/", "<strong>$1</strong>", $this->text);
$this->text = preg_replace("/\*(.+?)\*/", "<em>$1</em>", $this->text);
}
function processMultiline() {
$this->escapeHTML();
$this->processEmphasis();
$this->normalizeNewLines();
$this->newlines();
$this->processLinks();
$this->escapeSQL();
}
}
?>
- الشرح : كيف تستفيد من الكلاس .. اتبع التالي
كود PHP:
<?
include("filter.php");
//عمل إنكلود للملف الذي يحتوي على الكلاس اللي فوق
//نقوم أولا بتعريف كائن تابع للكلاس
$new_filter=new Filter();
//هذا النص المراد فلترته .. ويمكن استقباله من فورم أو بتمرير قيمة مباشرة له
//كما في هذا المثال .. لاحظ هنا أن النص عبارة عن استعلام لقاعدة البيانات
$msg="select * from table where name='m'jed' and subject='hi i'am learning php'";
//الخطوة هذي قمنا بتمرير النص .. ثم حددنا نوع الفلتر المطلوب استخدامه
//وهو db
//أي أن الفلتر سيقوم بتصفية النص من علامات الاقتباس المفردة التي تسبب الأخطاء في الاستعلامات
$new_filter->setText($msg, $filter = 'db') ;
//الان نريد طباعة النص بعد فلترته فقمت بحفظه في متغير
$T= $new_filter->getoutput();
//ومن ثم طباعته
echo $T;
//لاحظ بأن الكلاس قام بعمل علامات سلاش قبل أي علامة اقتباس مفردة للنص الذي مررناه
//ليتلافا الأخطاء المحتملة .. سيكون النص لديك بعد التنفيذ كالتالي
/*
select * from table where name=\'m\'jed\' and subject=\'hi i\'am learning php\'
*/
?>