في الدرس السابق تناولنا انشاء ملف الإتصال بقاعدة البيانات config.php وتناولنا ملف تنصيب السكربت install.php
درس اليوم
سنتناول ملف functions.php و ملف mysql.class.php
سنتناول ملف template.php ومجلد rawabetcash
سنقوم بإنشاء ملف login.php وملف checklogin.php وملف logout.php
تم إرفاق ملف الفنكشن وملف كلاس قاعدة البيانات وملف التمبلت الخاص بالقالب السهل
بالنسبة لملف الفنكشن سيحتوي على عملية تامين المدخلات والحماية من الثغرات
كما يلي :
كود PHP:
- الكود:
[LEFT]
<?php
if (eregi("functions.php", $_SERVER['SCRIPT_NAME'])) {
Header("Location: index.php"); die();
}
if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV,
$_FILES, $_*****E, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobals, $_SESSION);
}
foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
$phpver = phpversion();
if ($phpver < '4.1.0') {
$_GET = $HTTP_GET_VARS;
$_POST = $HTTP_POST_VARS;
$_SERVER = $HTTP_SERVER_VARS;
}
$phpver = explode(".", $phpver);
$phpver = "$phpver[0]$phpver[1]";
if ($phpver >= 41) {
$PHP_SELF = $_SERVER['PHP_SELF'];
}
foreach ($_GET as $sec_key => $secvalue) {
if ((eregi("<[^>]*script*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*object*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*iframe*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*applet*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*meta*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*style*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*form*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*img*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*onmouseover*\"?[^>]*>", $secvalue)) ||
(eregi("\([^>]*\"?[^)]*\)", $secvalue)) ||
(eregi("\"", $secvalue))) {
die ("غير مسموح لقد إستخدمت أكواد ضارة");
}
}
foreach ($_POST as $secvalue) {
if ((eregi("<[^>]*onmouseover*\"?[^>]*>", $secvalue)) || (eregi("<[^>]script*\"?[^>]*>", $secvalue)) || (eregi("<[^>]style*\"?[^>]*>", $secvalue))) {
die ("غير مسموح لقد إستخدمت أكواد ضارة");
}
}
require_once ('../includes/config.php');
include("mysql.class.php");
$db = new sql_db($dbhost, $dbusername, $dbpassword, $dbname, false);
if(!$db->db_connect_id) {
echo "<br><font color=\"#1783DB\"><h5><br><center>الموقع خارج الخدمة</b><br><br>";
echo mysql_error();
die();
}
?>
[/LEFT]
كود PHP:
- الكود:
[LEFT]
<?php
ob_start();
if (eregi("mysql.class.php", $_SERVER['SCRIPT_NAME'])) {
Header("Location: index.php"); die();
}
if(!defined("SQL_LAYER")){
define("SQL_LAYER","mysql");
class sql_db{
var $db_connect_id;
var $query_result;
var $row = array();
var $rowset = array();
var $num_queries = 0;
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true){
$this->persistency = $persistency;
$this->user = $sqluser;
$this->password = $sqlpassword;
$this->server = $sqlserver;
$this->dbname = $database;
if($this->persistency){
$this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
}else{
$this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
}
if($this->db_connect_id){
if($database != "")
{
$this->dbname = $database;
$dbselect = @mysql_select_db($this->dbname);
if(!$dbselect){
@mysql_close($this->db_connect_id);
$this->db_connect_id = $dbselect;
}
}
return $this->db_connect_id;
}else{
return false;
}
}
function sql_close(){
if($this->db_connect_id){
if($this->query_result){
@mysql_free_result($this->query_result);
}
$result = @mysql_close($this->db_connect_id);
return $result;
}else{
return false;
}
}
function sql_query($query = "", $transaction = FALSE){
// Remove any pre-existing queries
unset($this->query_result);
if($query != ""){
$this->query_result = @mysql_query($query, $this->db_connect_id);
}
if($this->query_result){
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);
return $this->query_result;
}else{
return ( $transaction == END_TRANSACTION ) ? true : false;
}
}
function sql_numrows($query_id = 0){
if(!$query_id){
$query_id = $this->query_result;
}
if($query_id){
$result = @mysql_num_rows($query_id);
return $result;
}else{
return false;
}
}
function sql_affectedrows(){
if($this->db_connect_id){
$result = @mysql_affected_rows($this->db_connect_id);
return $result;
}else{
return false;
}
}
function sql_numfields($query_id = 0){
if(!$query_id){
$query_id = $this->query_result;
}
if($query_id){
$result = @mysql_num_fields($query_id);
return $result;
}else{
return false;
}
}
function sql_fieldname($offset, $query_id = 0){
if(!$query_id){
$query_id = $this->query_result;
}
if($query_id){
$result = @mysql_field_name($query_id, $offset);
return $result;
}else{
return false;
}
}
function sql_fieldtype($offset, $query_id = 0){
if(!$query_id){
$query_id = $this->query_result;
}
if($query_id){
$result = @mysql_field_type($query_id, $offset);
return $result;
}else{
return false;
}
}
function sql_fetchrow($query_id = 0){
if(!$query_id){
$query_id = $this->query_result;
}
if($query_id){
$this->row[$query_id] = @mysql_fetch_array($query_id);
return $this->row[$query_id];
}else{
return false;
}
}
function sql_fetchrowset($query_id = 0){
if(!$query_id){
$query_id = $this->query_result;
}
if($query_id){
unset($this->rowset[$query_id]);
unset($this->row[$query_id]);
while($this->rowset[$query_id] = @mysql_fetch_array($query_id)){
$result[] = $this->rowset[$query_id];
}
return $result;
}else{
return false;
}
}
function sql_fetchfield($field, $rownum = -1, $query_id = 0){
if(!$query_id){
$query_id = $this->query_result;
}
if($query_id){
if($rownum > -1){
$result = @mysql_result($query_id, $rownum, $field);
}else{
if(empty($this->row[$query_id]) && empty($this->rowset[$query_id])){
if($this->sql_fetchrow()){
$result = $this->row[$query_id][$field];
}
}else{
if($this->rowset[$query_id]){
$result = $this->rowset[$query_id][$field];
}elseif($this->row[$query_id]){
$result = $this->row[$query_id][$field];
}
}
}
return $result;
}else{
return false;
}
}
function sql_rowseek($rownum, $query_id = 0){
if(!$query_id){
$query_id = $this->query_result;
}
if($query_id){
$result = @mysql_data_seek($query_id, $rownum);
return $result;
}else{
return false;
}
}
function sql_nextid(){
if($this->db_connect_id){
$result = @mysql_insert_id($this->db_connect_id);
return $result;
}else{
return false;
}
}
function sql_freeresult($query_id = 0){
if(!$query_id){
$query_id = $this->query_result;
}
if ( $query_id ){
unset($this->row[$query_id]);
unset($this->rowset[$query_id]);
@mysql_free_result($query_id);
return true;
}else{
return false;
}
}
function sql_error($query_id = 0){
$result["message"] = @mysql_error($this->db_connect_id);
$result["code"] = @mysql_errno($this->db_connect_id);
return $result;
}
} //
} //
?>
[/LEFT]
ملف التمبلت :
كود PHP:
- الكود:
[LEFT]
<?php
/*
@ Project: EasyTemplate 1.3
@ Link: http://daif.net/easy/
@ Author: Daifallh Al-Otaibi <daif55@gmail.com>
@ Developer: AzzozHSN <www.azzozhsn.net>
*/
class EasyTemplate{
var $vars; //Reference to $GLOBALS
var $HTML; //html page content
var $Temp="style";// your template path OR "./"
var $Cache="rawabetcash";// must be writeable check permission OR use $_ENV["TEMP"];
var $color = array();
//patterns Array
var $pats = array(
//Foreach Variables
"/{{([A-Z0-9_\]\[\"]{1,})}}/i",
//Globals Variables
"/{([A-Z0-9_\]\[\"]{1,})}/i",
//Foreach Statement
"/<LOOP\s+NAME\s*=\s*(\"|)+([a-z0-9_]{1,})+(\"|)\s*>/i",
//Foreach Statement With Limited Value
"/<LOOP\s+NAME\s*=\s*(\"|)+([a-z0-9_]{1,})+(\"|)\s*LIMIT\s*=\s*(\"\\d+\"|\\d+)\s*>/i",
"/<\/LOOP>/i",
"/<ELSE>/i",
"/<\/IF>/i",
//Switch Statement
"/<SWITCH\s+NAME\s*=\s*\"([A-Z0-9_]{1,})\"\s*CASE\s*=\s*\"(.+)\"\s*VALUE\s*=\s*\"(.+)\"\s*>/i",
//Include Statement
"/<INCLUDE\s+NAME\s*=\s*\"(.+)\"\s*>/iU"
);
//Replacements Array
var $reps = array(
"<?= \$var[\"\\1\"]?>",
"<?= \$this->vars[\"\\1\"]?>",
"<? foreach(\$this->vars[\"\\2\"] as \$key=>\$var){ ?>",
"<? \$this->_limit(\"\\2\",\\4);foreach(\$this->vars[\"\\2\"] as \$key=>\$var){ ?>",
"<? } ?>",
"<?} else {?>",
"<? } ?>",
"<?= \$this->_switch(\$this->vars[\"\\1\"],\"\\2\",\"\\3\")?>",
"<?= EasyTemplate::_include(\"\\1\",array(\"\$this->Temp\",\"\$this->Cache\")); ?>"
);
function EasyTemplate(){
$php = (phpversion()>="4.3.0")?1:0;
if(!$php) exit("<b>ERROR:</b> Update Your PHP version To 4.3.0 Or later, Your's ".phpversion());
}
//Function to load a template file.
function _load_file($FileName){
if(!file_exists($this->Temp)) exit("<b>ERROR:</b> Template Folder $this->Temp Not Exists");
if(!file_exists($FileName)) exit("<b>ERROR:</b> Template File $FileName Not Exists");
$this->HTML = file_get_contents($FileName);//it is the preferred way to read the contents of a file into a string.
}
//Function to make limited Array, I wrote this function On Ramadan 3eed :)
function _limit($arr_name,$limit=10){
$arr = $this->vars[$arr_name];
$page = $this->vars[_GET][$arr_name.'_PS'];
$pagestart = ($page*$limit > count($arr))?0:$page*$limit;
$pageend = ($page*$limit+$limit > count($arr))?count($arr):$page*$limit+$limit;//need some Optimization
for($i=$pagestart;$i<$pageend;$i++) $page_array[] = $arr[$i];
$this->vars[$arr_name] = $page_array;
$query = preg_replace("/(\&|)$arr_name+_PS=\\d+/i","",$_SERVER[QUERY_STRING]);
$prefix = ($query)?"?$query&":"?";
for($i=0;$i<count($arr)/$limit;$i++)
$this->vars[$arr_name.'_paging'] .= ($page==$i)?"<b>$i</b> ":"<a href=".$prefix.$arr_name."_PS=$i class=paging>$i</a> ";
}
//Function to if.
function _if_callback($matches){
$condition = str_replace('.','"]["',$matches[2]).'"]';
if($matches[4]){
$condition = "$matches[2]\"]==\"$matches[4]\"";
}
if(strtoupper($matches[1])=="LOOP"){
return "<? if(\$var[\"$condition){ ?>";
}else{
return "<? if(\$this->vars[\"$condition){ ?>";
}
}
//Function to Switch Color.
function _sw($index){
return $this->color["$index"] = ($this->color["$index"]) ? false:true;
}
//Function to Replace Array Variables
function _replace_callback($matches){
return str_replace('.','"]["',$matches[0]);
}
//Function to Replace Array Variables
function _color_callback($matches){
$rand = rand();
return "=<?= (\$this->_sw($rand)) ? \"$matches[1]\":\"$matches[2]\"?>";
}
//switch Tag
function _switch($var,$case,$value){
$case = explode(',',$case);
$value = explode(',',$value);
foreach($case as $k=>$val)
if($var==$val) return $value[$k];
}
//include Tag
function _include($fn,$config){
$this->Temp = $config[0];
$this->Cache = $config[1];
return($this->display($fn));
}
//Function to Assign Veriables
function assign($var,&$to){
$GLOBALS[$var] = $to;
}
//Function to Clean Old Cache File
function _clean($fn){
$fn = (is_array(glob($fn)))?glob($fn):array();
foreach ($fn as $file) unlink($file);
}
//Function to parse the Template Tags
function _parse(){
$this->HTML = preg_replace_callback("/<IF\s+(NAME|LOOP)\s*=\s*\"([A-Z0-9_\.\-]{1,})+(=(.*)|)\"\s*>/i",array('EasyTemplate','_if_callback'),$this->HTML);
$this->HTML = preg_replace_callback("/({[A-Z0-9_\.\-]{1,}})/i",array('EasyTemplate','_replace_callback'),$this->HTML);
$this->HTML = preg_replace_callback("/=\"([#0-9A-Z_\.\-\/]{1,})\|([#0-9A-Z_\.\-\/]{1,})\"/iU",array('EasyTemplate','_color_callback'),$this->HTML);
$this->HTML = preg_replace($this->pats,$this->reps,$this->HTML);
}
//Function to OUTPUT
function display($FileName) {
$this->vars = &$GLOBALS;
$this->Cache = (!is_writeable($this->Cache))?$_ENV["TEMP"]:$this->Cache;
$FileFullName = $this->Temp."/".$FileName;
$tmd = @filemtime($FileFullName);
$FileName = str_replace('/', '-', $FileName);
$CacheFileName = $this->Cache."/".$tmd.$FileName.".php";
if(!file_exists($CacheFileName)){
$this->_clean("./$this->Cache/*$FileName.php");
$this->_load_file($FileFullName);
$this->_parse();
$fp = fopen($CacheFileName,"w");
fwrite($fp,$this->HTML);
fclose($fp);
}
ob_start();
include($CacheFileName);
$this->page = ob_get_contents();
ob_end_clean();
return $this->page;
}
}
?>
[/LEFT]
كود PHP:
- الكود:
[LEFT]
var $Temp="style";// your template path OR "./"
var $Cache="rawabetcash";// must be writeable check permission OR use $_ENV["TEMP"];
[/LEFT]
var $Temp="style";// your template path OR "./"
var $Cache="rawabetcash";// must be writeable check permission OR use $_ENV["TEMP"];
كائن $Temp سيدل على مجلد التصميم قم بتعديله كيفما شئت
كائن $Cache سيدل على ملف الكاش الخاص بالقوالب والذي يجب منحه تصريح 777
--------------------------------------------------------------------------------
الان سنقوم بإنشاء ملف
login.php
بالبدياة الجميع يعلم ان ملف login.php سيحتوي على قالب تسجيل الدخول الذي سيمنحني ادخال معلومات الدخول للبرنامج
إلى هنا لا يوجد أي مشاكل
لكن في حال اني كنت مسجل الدخول مسبقاً ماذا سأفعل
لنتابع معاً
في البداية قم بإنشاء الملف
وقم بتعريف الملف على انه برمجية بي اتش بي وقم بوضع دوال بداية الجلسات سيشين كما يلي
كود PHP:
- الكود:
[LEFT]
<?php
ob_start();
session_start();
ob_end_flush();
?>
[/LEFT]
سنقوم بعملية تفحص السيشن اي الجلسة إن كان هنالك عملية تسجيل دخول أم لا
تابع معي
كود PHP:
- الكود:
[LEFT]
if(isset($_SESSION['susername']) && isset($_SESSION['spass'])){
header("Location: index.php");
exit();
}
[/LEFT]
الان قمنا بعمل جملة شرطية وبدئنا بـ if اي اذا كان هنالك قيمة للسيشن الخاص باليوزر نيم و كان هنالك قيمة للسيشن الخاص بالباسورد قم بتنفيذ ما يلي :
كود PHP:
- الكود:
header("Location: index.php");
- الكود:
[LEFT] exit();
[/LEFT]
اي قم بتحويل المتصفح الى صفحة index.php وتوقف عن تنفيذ باقي الاكواد
طيب فلنفترض انه لا يوجد اي قيم للسيشن الخاص باليوزر نيم والباسورد
سيقوم البرنامج بتجاهل الجملة الشرطية وينتقل لتنفيذ الاكواد التالية
الأن ركز معي لان الاكواد الباقية قليلة لكن اهميتها كبيرة
سنقوم بجلب ملف التمبلت template.php
كما يلي :
كود PHP:
- الكود:
[RIGHT][LEFT] [/LEFT]
[LEFT]include('template.php');[/LEFT]
[LEFT]$rawabetvb = new EasyTemplate;[/LEFT]
[LEFT] [/LEFT]
[LEFT][/LEFT][/RIGHT]
بعد تضمين ملف التمبلت سأقوم بأمر البرنامج بطباعة قالب تسجيل الدخول كما يلي :
كود PHP:
- الكود:
[RIGHT][LEFT] [/LEFT]
[LEFT]print $rawabetvb->display('login.html');[/LEFT]
[LEFT] [/LEFT]
[LEFT][/LEFT][/RIGHT]
إلى هنا ينتهي إنشاء ملف تسجيل الدخول وسيكون بشكل كامل كما يلي :
كود PHP:
- الكود:
[RIGHT][LEFT] [/LEFT]
[LEFT]<?php[/LEFT]
[LEFT]ob_start();[/LEFT]
[LEFT]session_start();[/LEFT]
[LEFT]/*[/LEFT]
[LEFT]copyright : rawabetvb.com[/LEFT]
[LEFT]programing by : mohanad[/LEFT]
[LEFT]phone : 00962786881355[/LEFT]
[LEFT]Version : 1.0[/LEFT]
[LEFT]*/[/LEFT]
[LEFT]if(isset($_SESSION['susername']) && isset($_SESSION['spass'])){[/LEFT]
[LEFT] header("Location: index.php");[/LEFT]
[LEFT] exit();[/LEFT]
[LEFT]}[/LEFT]
[LEFT]include('template.php');[/LEFT]
[LEFT]$rawabetvb = new EasyTemplate;[/LEFT]
[LEFT]print $rawabetvb->display('login.html');[/LEFT]
[LEFT]ob_end_flush();[/LEFT]
[LEFT]?>[/LEFT]
[LEFT] [/LEFT]
[LEFT][/LEFT][/RIGHT]
الأربعاء أغسطس 01, 2012 2:32 am من طرف الصقر
» حركات خطيره لكرة القدم بلاي ستيشن 2
الثلاثاء نوفمبر 15, 2011 6:34 pm من طرف AHMMED
» الان حصريا كود لعبه بلياردو اون لاين
الأحد أغسطس 21, 2011 1:56 pm من طرف Mr_King
» رتب و نجوم الاعضاء و المشرفين
السبت يوليو 02, 2011 9:07 pm من طرف غوغو
» شرح كيفية اضافة موقعك الى ( msn ( bing وجلب روبوتاته الى منتداك ! بالشرح المفصل !
الأحد مايو 15, 2011 5:50 am من طرف حرائر السامر
» احدث كود العاب فلاشية لموقعك 2010 متجدد + مجانا
الإثنين مايو 09, 2011 3:26 am من طرف مهدي العكيلي
» كود لعبه من سيربح المليون (حصريا)
الإثنين مايو 09, 2011 3:25 am من طرف مهدي العكيلي
» استايل لمركز التحميل كليجا
الخميس مارس 03, 2011 9:23 pm من طرف Admin
» كود محرك نشر المواضيع
الخميس مارس 03, 2011 8:28 pm من طرف Admin