![]() |
Страницы (3): [1] 2 3 » Показаны 39 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Оптимизация кода, и новые фичи (http://netadmin.ws/forum/showthread.php?threadid=7563)
Оптимизация кода, и новые фичи
собсна говоря написал я кой чего. типа простой редактор текстовых файлов.. помогите оптимизировать код, ну и может чего дельного подскажите... единственное условие - фсе фичи должны быть в одном файле.. либо как модули.. .проинклюдил их и готово.. требование это для легкости переноста с хостинга на хостинг данного скрипта.
ниже код скрипта:
Скрипт будет глючить при отключенных register_globals - исправляй. Иначе об универсальности речи идти не может.
а как бы это покрасивше сделать?
получилось что я так криво написал что испльзовал и метод GET & POST , а теперь туплю...
Есть еще переменная $_REQUEST.
__________________
Всегда есть решение.
polo спасибо. клевая переменная .. не знал о ней.
а еще предложения есть?
кстати почему то переносы строк плохо работают.. тоесть они постоянно увеличиваются..
__________________
http://www.best-pills-store.com
quote:
кстати почему то переносы строк плохо работают.. тоесть они постоянно увеличиваются..
__________________
Всегда есть решение.
вот несколько функций для работы с файлами, может пригодятся.
/**
* @return bool
* @param $filename string
* @param $relative bool
* @desc Validate filename
*/
function is_filename($filename=' ',$relative=0)
{
$allowed = '[wd]'.preg_quote("./_");
if (eregi('^WIN(.*)',PHP_OS))
$allowed .= preg_quote(':');
if ($relative && preg_match('%(..)|(/./)*%i',$filename))
return FALSE;
if (!eregi('[a-z]://(.*)',$filename))
return(!preg_match('%[^'.$allowed.'-]%i',$filename));
return FALSE;
}
/**
* @return
* @param $filename string
* @desc Check file for read access
*/
function is_readable_file($filename=' ')
{
if (is_filename($filename))
return(is_readable($filename) && is_file($filename));
}
/**
* @return bool
* @param $filename string
* @param $perms int
* @desc Create dummy file with defined permissions
*/
function file_create($filename=' ',$perms=0640)
{
if (is_filename($filename))
{
if (!file_exists($filename))
{
if (touch($filename)) return chmod($filename,$perms);
}
}
return false;
}
/**
* @return mixed
* @param $filename string
* @param $mode char
* @desc Return file descriptor if filename valid and file readable
*/
function file_open($filename=' ',$mode='r')
{
if (is_filename($filename) && is_readable($filename))
return fopen($filename, $mode);
return false;
}
/**
* @return mixed
* @param $filename string
* @desc Return contens of a file if readable
*/
function file_read($filename=' ')
{
if (is_filename($filename) && is_readable($filename))
{
$fd = file_open($filename,'r');
if ($fd)
{
$file = fread($fd, filesize($filename));
fclose($fd);
return $file;
}
}
return false;
}
/**
* @return bool
* @param $filename string
* @param $contens string
* @desc Write $contens to $filename
*/
function file_write($filename=' ',$contens='')
{
if (is_filename($filename) && is_writeable($filename) && !empty($contens))
{
$fd = file_open($filename,'w');
if ($fd)
{
if (flock($fd,LOCK_EX,TRUE))
{
set_file_buffer($fd,0);
fwrite($fd, $contens);
flock($fd,LOCK_UN);
return fclose($fd);
}
}
}
return false;
}
/**
* @return unknown
* @param $filename unknown
* @desc Delete file if valid name and permissions
*/
function file_delete($filename=' ')
{
if (is_filename($filename) && is_writeable($filename)) return unlink($filename);
}
/ **************************************************
*************************
*
* Define most usabled constants from ENV
*
**************************************************
*************************/
# Store software and protocol used both (client,server) sides
define('ENV_HTTP_CLIENT', getenv('HTTP_USER_AGENT'));
define('ENV_HTTP_SERVER', getenv('SERVER_SOFTWARE'));
# Store used protocol and method
define('ENV_HTTP_PROTOCOL', strtolower(eregi_repla
ce('/(.+)$','',getenv('SERVER_PROTOCOL'))));
define('ENV_HTTP_METHOD', getenv('REQUEST_METHOD')
);
# Store server machine configuration
define('ENV_SERVER_ADDR', getenv('SERVER_ADDR'));
define('ENV_SERVER_HOST', getenv('HTTP_HOST'));
define('ENV_SERVER_PORT', getenv('SERVER_PORT'));
# Store client machine configuration
define('ENV_CLIENT_ADDR', getenv('REMOTE_ADDR'));
define('ENV_CLIENT_HOST', gethostbyaddr(ENV_CLIENT
_ADDR));
define('ENV_CLIENT_PORT', getenv('REMOTE_PORT'));
# Store additional request related variables
define('ENV_REQUEST_URI', getenv('REQUEST_URI'));
define('ENV_REQUEST_REFER', getenv('HTTP_REFERER'
));
define('ENV_REQUEST_STRING', getenv('QUERY_STRING'
));
define('ENV_REQUEST_COOKIES', getenv('HTTP_COOKIE'
));
# Store script path and URL related variables
define('ENV_SCRIPT_FILE', str_replace("",'/',getenv('SCRIPT_FILENAME')));
define('ENV_SCRIPT_NAME', getenv('SCRIPT_NAME'));
define('ENV_SCRIPT_DIR', dirname(ENV_SCRIPT_FILE));
define('ENV_SCRIPT_URI', sprintf('%s://%s',ENV_HTTP_PROTOCOL,ENV_SERVER_HOST.ENV_REQUEST_URI));
// ... этот кусок не будет работать без
// определенных констант JK_*, ENV_* и VAR_*
//которые в нем используются
/ **************************************************
*************************
*
* Low level handling request - get GPC vars
*
**************************************************
*************************/
# Initialize user request vars
switch (ENV_HTTP_METHOD)
{
case (JK_ACTION_READ):
$JK_FILES = false;
if (!empty(${VAR_GET})) $JK_PARAMS =& ${VAR_GET};
break;
case (JK_ACTION_EXEC):
if (!empty(${VAR_POST})) $JK_PARAMS =& ${VAR_POST};
!empty(${VAR_FILES})
?$JK_FILES =& ${VAR_FILES}
:$JK_FILES = false;
break;
case (JK_ACTION_INFO):
$date = date('D, d F Y H:i:s').' GMT';
$header = "200 Document Followsrn";
$header .= "Last-modifed: ".$date."rnrn";
header('HTTP/1.1 '.$header);
exit();
default:
$header = "405 Method Not Allowedrn";
$header .= "Allow: GET,POST,HEAD,INFOrnrn";
header('HTTP/1.1 '.$header);
exit();
}
# initialise JK_PARAMS var if not initialize
if (empty($JK_PARAMS)) $JK_PARAMS = FALSE;
# initialize JK_COOKIES var
!empty(${VAR_COOKIE})
?$JK_COOKIE =& ${VAR_COOKIE}
:$JK_COOKIE = false;
if ($act == 'foo') echo 'bla-bla-bla';
if ($act == 'bar') echo 'bla1-bla1-bla1';
if ($act == 'com') echo '_bla-_bla-_bla';
switch ($act) // обрабаотываем переменную $act
{
case ('foo'):
echo 'bla-bla-bla';
break;
case ('bar'):
echo 'bla1-bla1-bla1';
break;
case ('com'):
echo '_bla-_bla-_bla';
break;
default:
return(null);
}
if($act=='delete') {
unlink($root.$tpl);
echo "FILE ".$tpl." DELETED ";
}
__________________
FAQ OFF
бррр... ошарашен количеством приведенной инфы.. буду разбираться....
про свичи понятно.. пока писал не сообразил что удобнее сразу свич испольовать.. перепишу
---
с делетом тоже понятно (вроде как достаоточно просто проверки на существоваине файла)
--
с константами не очень понятно... насколько я понял достаточно только пару констант из приведенного списка определить и юзать... хотелось бы пример использования увидить..
--
с остальным не врубился.. (читаю ночью бухой в нулину..
)
zyablik добавил 17-01-2004 в 23:30:53:
quote:
Первоначальное сообщение от polo
Ð_то ты про что?
quote:
йцуйцуйцу(перенос)
йцуйцуйц(перенос)
уйцуйцуйцу(перенос)
йцуйцуйцу
quote:
йцуйцуйцу(перенос)(пере
нос)
йцуйцуйц(перенос)(перенос)
уйцуйцуйцу(перенос)(переноÑ
�)
йцуйцуйцу
перенос какой? win (rn) или uinx (n)?
SCHIZO добавил 18-01-2004 в 02:03:55:
всегда TRUE
while($entry=$d->read())
while($entry==$d->read())
if($act=='create') {
$fp = fopen($root.$new_file.".html", "a");
$root = $_SERVER["DOCUMENT_ROOT"]."/txt/";
$act = $_REQUEST["act"];
$tpl = $_REQUEST["tpl"];
$rename_file = $_REQUEST["rename_file"];
$status = $_REQUEST["status"];
$current = $_REQUEST["current"];
$d = dir($root);
__________________
FAQ OFF
Нельзя забывать про то, что файл нужно блокировать перед записью.
$fp = fopen($file);
flock($fp, 3);
....
flock($fp, 2);
fclose($fp);
while($entry=$d->read())
while (($entry=$d->read()) !== false)
...насчет функций чтения файла в строку и записи строки в файл:
http://www.php.net/manual/en/function.file-get-contents.php
http://www.php.net/manual/en/function.file-put-contents.php
__________________
FAQ OFF
вроде нормально =)
покрайней мере как ни странно работает
А что, ни у кого нет предложений по поводу новых фич?
quote:приведи простенький пример как это делается?
весь HTML с переменными значениями лучше сразу запихать в переменные а потом когда надо выводить? делать это при помощи форматной строки
__________________
http://www.best-pills-store.com
?>
html код
<?php
php код
?>
__________________
Всегда есть решение.
а скрипт то растет....
добавил красивостей, функций, перенес почти весь хтмл в переменные.
вроде все впорядке, но как то неудобно...
(если вдруг кто пользоваться будет - напишите здесь
)
| Формат времени GMT. Текущее время 13:35. | Страницы (3): [1] 2 3 » Показаны 39 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.