DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
Öncelikle php konusunda pek deneyimim olmadığını söylemeliyim. Ancak buna rağmen işyerimin sitesini oluştururken PHPrunner isimli programdan faydalandım ve müşterilerimi, randevularımı takip edebileceğim bi bölüm oluşturdum. Local'de sorunsuz çalışmasına karşın dosyaları (linux server) upload ettiğimde login ekranına kadar sorunsuz geliyorum ama login sonrası hemen ilgili hatayı alıyorum.
kodları da aşağıda bulunuyor. Bu sorunu çözmemle ilgili yardımcı olursanız sevinirim.
<?php
/** * That function copies all elements from associative array to object, as object properties with same names * Usefull when you need to copy many properties * * @param link $obj * @param link $argsArr */ function RunnerApply (&$obj, &$argsArr) { //$i=0; foreach ($argsArr as $key=>$var) { //if (isset($obj->$key)) setObjectProperty($obj,$key,$argsArr[$key]); // $obj->$key = &$argsArr[$key]; //$i++; } }
/** * Abstract base class for all pages. Contains main functionality * */ class RunnerPage { /** * Id on page * * @var integer */ var $id = 1; /** * Total js code for page * * @var string */ var $totalCode = ""; /** * Use calendar or not * * @var bool */ var $calendar = false; /** * Use timepicker or not * * @var bool */ var $timepicker = false; /** * Use iBox or not * * @var bool */ var $useIbox = false; /** * Use tool tips or not * * @var bool */ var $isUseToolTips = false; /** * If use Ajax Suggest js file or not * * @var bool */ var $isUseAjaxSuggest = true; /** * Type of page * * @var string */ var $pageType = ""; /** * Mode of page * * @var integer */ var $mode = 0; /** * If use display loading or not * * @var bool */ var $isDisplayLoading = false; /** * Original table name * * @var string */ var $strOriginalTableName = ""; /** * String caption of table * * @var string */ var $strCaption = ""; /** * Short table name * * @var string */ var $shortTableName = ''; /** * Prefix for session variable * * @var integer */ var $sessionPrefix = ""; /** * Name of current table * * @var string */ var $tName = ""; /** * Connect to database * * @var string */ var $conn = ""; /** * Array of order index in table * * @var array() */ var $gOrderIndexes = array(); /** * String of OrderBy for query * * @var string */ var $gstrOrderBy = ""; /** * Page size * * @var integer */ var $gPageSize = 0; /** * Extence of class Xtempl * * @var object */ var $xt = null; /** * Instance of SearchClause class * * @var object */ var $searchClauseObj = null; /** * Need use search clause object or not * * @var boolean */ var $needSearchClauseObj = true;
var $flyId = 1; /* * The list of including js files */ var $includes_js = array(); /* * The list of including js files */ var $includes_jsreq = array(); /* * The list of including css files */ var $includes_css = array(); /* * Loacale tunes */ var $locale_info = array();
/** * Id of record * * @var integer */ var $recId = 0;
var $googleMapCfg = array('markerAsLinkToView'=>true, 'isUseMainMaps'=>false, 'isUseFieldsMaps'=> false, 'isUseGoogleMap'=>false, 'APIcode'=>"", 'mainMapIds'=>array(), 'fieldMapsIds'=>array(), 'mapsData'=>array()); /** * Array of menu tables * * @var array */ var $menuTablesArr = array(); /** * Array of permissions for pages * * @var array */ var $permis = array(); /** * If use group scurity or not * * @var bool */ var $isGroupSecurity = true;
var $debugJSMode = false;
/** * Use mode ajax for simple listPage * * @var boolean */ var $listAjax = false;
/** * Array of body begin, end code and body attributs * * @var array */ var $body = array('begin' => '', 'end'=> '');
var $onLoadJsEventCode = ''; /** * Master table name * * @var string */ var $masterTable = ""; /** * If use Details Preview js file or not * * @var bool */ var $useDetailsPreview = false; /** * Array of all details tables data * * @var array */ var $allDetailsTablesArr = array(); /** * Array of java script settings for page * * @var array */ var $jsSettings = array(); /** * Array of controls HTML map * * @var array */ var $controlsHTMLMap = array(); /** * Array of controls map * * @var array */ var $controlsMap = array(); /** * Array of field settings for use it in javascript settings * * @var array */ var $settingsMap = array(); /** * Is add page show as inlineAdd or not * * @var array */ var $pageAddLikeInline = false; /** * Is edit page show as inlineEdit or not * * @var array */ var $pageEditLikeInline = false; /** * Array of tabs and sections for add page * * @var array */ var $arrAddTabs = array(); /** * Use Tabs and Setctions on add page or not * * @var boolean */ var $useTabsOnAdd = false; /** * Array of tabs and sections for edit page * * @var array */ var $arrEditTabs = array(); /** * Use Tabs and Setctions on edit page or not * * @var boolean */ var $useTabsOnEdit = false; /** * Array of tabs and sections for edit page * * @var array */ var $arrViewTabs = array(); /** * Use Tabs and Setctions on edit page or not * * @var boolean */ var $useTabsOnView = false; /** * Array of records per page for list and report without group fields * * @var array */ var $arrRecsPerPage = array(); /** * Array of groups per page for report with group fields * * @var array */ var $arrGroupsPerPage = array(); /** * Use group fields on report page or not * * @var boolean */ var $reportGroupFields = false; /** * Number of page size * * @var integer */ var $pageSize = 0; /** * Type of table - list, report or chart * * @var string */ var $isTableType = ""; /** * Events object for the current table * * @var object */ var $eventsObject; /** * Detail keys by master table * * @var array */ var $detailKeysByM = array(); /** * Is captcha ok after submit or not * * @var boolean */ var $isCaptchaOk = true; /** * Captcha ID * * @var string */ var $captchaId = ""; /** * Locking object * * @var object */ var $lockingObj = null; /** * Is use Video player or not * * @var boolean */ var $isUseVideo = false; /** * Is use Audio player or not * * @var boolean */ var $isUseAudio = false; /** * Is show add page like popUp or not * * @var boolean */ var $showAddInPopup = false; /** * Is show edit page like popUp or not * * @var boolean */ var $showEditInPopup = false; /** * Is show view page like popUp or not * * @var boolean */ var $showViewInPopup = false; /** * Is columns will be resizable or not * * @var boolean */ var $isResizeColumns = false; /** * Is use CKeditor or not * * @var boolean */ var $isUseCK = false; /** * Is display detail data on page or not * * @var boolean */ var $isShowDetailTables = false; /** * arrays of files to process after adding or editing a record */ var $filesToSave = array(); var $filesToMove = array(); var $filesToDelete = array();
/** * Constructor, set initial params * * @param array $params */ function RunnerPage(&$params) { global $locale_info, $cCharset;
// copy properties to object RunnerApply($this, $params);
/** * Fill field settings for current table */ function fillFieldSettings() { $arrFields = $this->getFieldsByPageType(); foreach($arrFields as $fName) { if(!array_key_exists($fName,$this->jsSettings['tableSettings'][$this->tName]['fieldSettings'])) $this->jsSettings['tableSettings'][$this->tName]['fieldSettings'][$fName] = array();
return CategoryControl($fName,$this->tName); } /** * Return JS for preload dependent ctrl * * @param string $fName - field name * @param string $fval - value of field * @return array */ function getPreloadArr($fName,$value) { // category control field $strCategoryControl = $this->hasDependField($fName);
if($strCategoryControl === false) return false;
// Is field appear or not $fieldAppear=true; if($this->pageType == PAGE_ADD) { if(!AppearOnInlineAdd($fName)) $fieldAppear=($this->mode!=ADD_INLINE); elseif(!AppearOnAddPage($fName)) $fieldAppear=($this->mode==ADD_INLINE);
// Is category control appear or not if($this->mode==ADD_INLINE) { if(AppearOnInlineAdd($strCategoryControl)) $categoryFieldAppear=true; else $categoryFieldAppear=false; } else{ if(AppearOnAddPage($strCategoryControl)) $categoryFieldAppear=true; else $categoryFieldAppear=false; } } elseif($this->pageType == PAGE_EDIT) { if(!AppearOnInlineEdit($fName)) $fieldAppear=($this->mode!=EDIT_INLINE); elseif(!AppearOnEditPage($fName)) $fieldAppear=($this->mode==EDIT_INLINE); $categoryFieldAppear=true; } else{ if($strCategoryControl) $categoryFieldAppear=true; else $categoryFieldAppear=false; }
/** * Return name of parent field * * @param string $fName * @return string */ function getParentCtrlName($fName) { return CategoryControl($fName, $this->tName); }
/** * Return parent value for dependent ctrl * Used value of first parent field * * @param string $fName * @return string */ function getParentVal($fName) { $categoryFieldParams = $this->searchClauseObj->getSearchCtrlParams($this->getParentCtrlName($fName)); if (count($categoryFieldParams)) return $categoryFieldParams[0]['value1']; else return false; }
/** * Return JS for preload dependent ctrl for search fields * * @param string $fName - field name * @param string $fval - value of field * @return array */ function getSearchPreloadArr($fName, $fval) { // if no parent in project settings if (GetEditFormat($fName) != EDIT_FORMAT_LOOKUP_WIZARD && !UseCategory($fName, $this->tName)) return false;
// if parent exist in settings $parentFieldName = CategoryControl($fName, $this->tName); $parentVal = $this->getParentVal($fName); $doFilter = true; // if no filter f parent doesn't exist or it's value is empty if ($parentVal===false || $parentVal==='') $doFilter = false;
/** * Add confirm field to field settings * Use for register page only */ function addConfirmToFieldSettings() { $arrSetVals = array(); $arrSetVals['strName'] = 'confirm'; $arrSetVals['EditFormat'] = 'Password'; $arrSetVals['validation']['validationArr'][] = 'IsRequired'; $this->jsSettings['tableSettings'][$this->tName]['fieldSettings']['confirm'] = $arrSetVals; }
/** * Add captcha field to field settings * Use for register page only */ function addCaptchaToFieldSettings() { $arrSetVals = array(); $arrSetVals['strName'] = 'captcha'; $arrSetVals['EditFormat'] = 'Text Field'; $arrSetVals['validation']['validationArr'][] = 'IsRequired'; $this->jsSettings['tableSettings'][$this->tName]['fieldSettings']['captcha'] = $arrSetVals; }
/** * Get code for stop Loading indicator */ function getStopLoading() { $this->AddJsCode("\nstopLoading(".$this->id.",".$this->mode.");"); }
/** * Fill validation for current field */ function fillValidation($fData,$val,&$arrSetVals) { if(count($fData)) { $arrSetVals[$val['jsName']]["validationArr"] = $fData['basicValidate']; if(array_key_exists("regExp",$fData)) $arrSetVals[$val['jsName']]["regExp"] = $fData["regExp"]; elseif(!array_key_exists($val['jsName'],$this->jsSettings['fieldDefSettings']) || !array_key_exists("RegExp",$this->jsSettings['fieldDefSettings'][$val['jsName']])) $this->jsSettings['fieldDefSettings'][$val['jsName']]["regExp"] = null; } elseif(!array_key_exists($val['jsName'],$this->jsSettings['fieldDefSettings'])) { $this->jsSettings['fieldDefSettings'][$val['jsName']]["regExp"] = null; $this->jsSettings['fieldDefSettings'][$val['jsName']]['validationArr'] = $val['default']; } elseif(!array_key_exists("validationArr",$this->jsSettings['fieldDefSettings'][$val['jsName']])) $this->jsSettings['fieldDefSettings'][$val['jsName']]['validationArr'] = $val['default']; }
/** * Get array of fields by current page type * return array - of fields */ function getFieldsByPageType() { $arrFields = array(); $allfields = GetFieldsList($this->tName); foreach($allfields as $fName) { if($this->pageType == PAGE_EDIT && $this->pageEditLikeInline) $app = AppearOnCurrentPage($fName,$this->pageType,true); else if($this->pageType == PAGE_ADD && $this->pageAddLikeInline) $app = AppearOnCurrentPage($fName,$this->pageType,true); else $app = AppearOnCurrentPage($fName,$this->pageType); if($app === 'break') break; elseif(!$app) continue; $arrFields[] = $fName; } return $arrFields; }
/** * Fill all settings for current table */ function fillSettings() { $this->fillGlobalSettings(); $this->fillTableSettings(); $this->fillFieldSettings(); }
/** * Fill tool tips for current table fields * @param $fName - filed name */ function fillFieldToolTips($fName){ $toolTipText = GetFieldToolTip($this->tName, $fName); if (strlen($toolTipText)){ $this->controlsMap['toolTips'][$fName] = $toolTipText; } }
/** * Fill controls map * For add, edit, search pages - controls * * @param $arr - array of settings for one control * @param $addSet - add additional settings to control */ function fillControlsMap($arr,$addSet = false,$fName="") { if(!$addSet) { foreach($arr as $key=>$val) $this->controlsMap[$key][] = $val; } else{ foreach($arr as $key=>$val) { foreach($val as $vkey=>$vval) { if(!$fName) $this->controlsMap[$key][count($this->controlsMap[$key])-1][$vkey] = $vval; else{ for($i=0;$i<count($this->controlsMap[$key]);$i++) { if($this->controlsMap[$key][$i]['fieldName']==$fName) { $this->controlsMap[$key][$i][$vkey] = $vval; break; } } } } } } }
/** * Fill field settings for current table */ function fillControlsHtmlMap() { $this->controlsHTMLMap[$this->tName] = array(); $this->controlsHTMLMap[$this->tName][$this->pageType] = array(); $this->controlsHTMLMap[$this->tName][$this->pageType][$this->id] = array();
$this->controlsMap['gMaps'] = $this->googleMapCfg; foreach($this->controlsMap as $key=>$val) $this->controlsHTMLMap[$this->tName][$this->pageType][$this->id][$key] = $val; }
/** * Fill jsSettings and controlsHTMLMap arrays for current table */ function fillSetCntrlMaps() { $this->fillSettings(); $this->fillControlsHTMLMap(); }
/** * Fill arrays of names tab group and section to controlsHTMLMap for current table */ function fillCntrlTabGroups() { $arrTabs = $this->getArrTabs(); $this->controlsMap['tabs'] = array(); $this->controlsMap['sections'] = array();
/** * Assign body end */ function assignBodyEnd(&$params) { $this->fillSetCntrlMaps(); echo "<script> window.controlsMap = '".jsreplace(my_json_encode($this->controlsHTMLMap))."'; ". $this->PrepareJS()." window.settings = '".jsreplace(my_json_encode($this->jsSettings))."'; </script>"; }
/** * Generates new id, same as flyId on front-end * * @return int */ function genId() { $this->flyId++; $this->recId = $this->flyId; return $this->flyId; }
/** * Get page type */ function getPageType() { return $this->pageType; } /** * Accumulation of js code for page */ function AddJSCode($jscode) { $this->totalCode .=$jscode; } /** * Add js files for page */ function AddJSFileNoExt($file) { $this->includes_js[]=$file; }
/** * Init for details preview * Use for dpInline only */ function initForDetailsPreview() { return ''; }
/** * Set languge params for page */ function setLangParams() { }
/** * Add general js or css files for pages */ function addCommonJs() { $this->AddJSFile("include/json"); $this->AddJSFile("include/cookies"); $this->AddJSFile("include/lang/".getLangFileName(mlang_getcurrentlang()));
if ($this->googleMapCfg['isUseGoogleMap'] && !postvalue("onFly")) { $this->body["begin"].= '<script src="http://maps.google.com/maps?file=api&v=2&sensor=true&key='.$this->googleMapCfg['APIcode'].'" type="text/javascript"></script>'; }
function initGmaps() { if ($this->googleMapCfg['isUseGoogleMap']) { foreach ($this->googleMapCfg['mainMapIds'] as $mapId) { if ($this->googleMapCfg['mapsData'][$mapId]['showCenterLink'] === 1) { $this->googleMapCfg['centerLinkText'] = $this->googleMapCfg['mapsData'][$mapId]['centerLinkText']; break; } } $this->googleMapCfg['id'] = $this->id; $this->AddJSFile("include/json"); $this->AddJSFile("include/runnerJS/gmap"); if (!$this->googleMapCfg['APIcode']) { $this->googleMapCfg['APIcode'] = ''; } $this->controlsMap['gMaps'] = &$this->googleMapCfg; //$this->AddJSFileNoExt('http://maps.google.com/maps?file=api&v=2&sensor=true&key='.$this->googleMapCfg['APIcode']); } }
function addCenterLink(&$value, $fName) { if ($this->googleMapCfg['isUseMainMaps']) { foreach ($this->googleMapCfg['mainMapIds'] as $mapId) { // if no center link than continue; if ($this->googleMapCfg['mapsData'][$mapId]['addressField'] != $fName || !$this->googleMapCfg['mapsData'][$mapId]['showCenterLink']) { continue; } // if use user defined link if prop = 1 or use value if prop = 2 if($this->googleMapCfg['mapsData'][$mapId]['showCenterLink'] === 1) { $value = $this->googleMapCfg['mapsData'][$mapId]['centerLinkText']; } return '<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=104652864&url=#" type="centerOnMarker'.$this->id.'" recId="'.$this->recId.'" data-href="#" type="centerOnMarker'.$this->id.'" recId="'.$this->recId.'">'.$value.'</a>'; } } return $value; }
function createOldMenu() { $allowedTablesCount = 0; $redirect_menu = '';
$resArr["add"]=(strpos($strPerm, "A") !== false); $resArr["delete"]=(strpos($strPerm, "D") !== false); $resArr["edit"]=(strpos($strPerm, "E") !== false); $resArr["search"]=(strpos($strPerm, "S") !== false); $resArr["export"]=(strpos($strPerm, "P") !== false); $resArr["import"]=(strpos($strPerm, "I") !== false); } return $resArr; } /** * Check is need to create menu * */ function isCreateMenu() { foreach($this->menuTablesArr as $menuTable) { if($this->permis[$menuTable['dataSourceTName']]['add'] || $this->permis[$menuTable['dataSourceTName']]['search']) return true; } return false; }
function addRunLoading() {
}
/** * Check is event exists on current page * @param {string} - event name */ function eventExists($name) { if(!$this->eventsObject) return false; return $this->eventsObject->exists($name); }
/** * Check is captcha exists on current page * */ function captchaExists() { if(!$this->eventsObject) return false; return $this->eventsObject->existsCAPTCHA($this->pageType); }
// move this functions to viewpage or editpage class when they will be created function getNextPrevRecordKeys(&$data,$securityMode,&$next,&$prev) { global $conn; $next=array(); $prev=array();
if($where_next=="" or $order_next=="" or $where_prev=="" or $order_prev=="") { $_SESSION[$this->sessionPrefix."_noNextPrev"] = 1; return; } // make the resulting query if($query === null) return;
//create control and settings for captcha field, if it show on page $controls = array('controls'=>array()); $controls['controls']['ctrlInd'] = 0; $controls['controls']['id'] = $this->id; $controls['controls']['fieldName'] = 'captcha'; $controls['controls']['mode'] = $this->pageType; $this->fillControlsMap($controls); $this->addCaptchaToFieldSettings(); } elseif($sbmPage) $this->isCaptchaOk = true; }
menuTablesArr[$i] ifadesi dizi durumunda ise bu hatayı verir. Siz bu satırın altına
print_r($this->menuTablesArr);
satırını ekleyip ekstradan çıkacağını tahmin ettiğim kısmı paylaşabilir misiniz?
Lokalde çalışıp sunucuda sorun çıkarması PHP versiyonunun farklı olmasından veya bazı eklentilerin eksik olması veya aktif edilmemiş olması durumlarından olabilir. Lokal ile sunucu karşılaştırması yaparsanız sorunu kaynağından çözmek daha kolay olur.
Öncelikle php konusunda pek deneyimim olmadığını söylemeliyim. Ancak buna rağmen işyerimin sitesini oluştururken PHPrunner isimli programdan faydalandım ve müşterilerimi, randevularımı takip edebileceğim bi bölüm oluşturdum. Local'de sorunsuz çalışmasına karşın dosyaları (linux server) upload ettiğimde login ekranına kadar sorunsuz geliyorum ama login sonrası hemen ilgili hatayı alıyorum.
< Resime gitmek için tıklayın >
kodları da aşağıda bulunuyor. Bu sorunu çözmemle ilgili yardımcı olursanız sevinirim.
< Bu mesaj bu kişi tarafından değiştirildi Murat_Cakin -- 10 Nisan 2015; 18:23:12 >