PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (56): В начало « ... 48 49 50 51 52 [53] 54 55 56 »
Найдено сообщений: 830
White
Отправлено: 22 Июня, 2011 - 19:02:55 • Тема: MsSql • Форум: SQL и Архитектура БД
Ответов: 2 Просмотров: 27
а причем mysql_query, если вы конектитесь к MS Sql Server???
может mssql_query?
может не selected а $selected?
White
Отправлено: 22 Июня, 2011 - 09:03:02 • Тема: проверка содержимого буфера вывода • Форум: Хранение данных, их вывод и обработка
Ответов: 1 Просмотров: 1030
Есть функция multithread(), которая должна стоять в скрипте перед записью чего либо в буфер вывода php (выполнение функций echo, print ...),
возможно ли проверить данное условие, и если да, то как.
(Добавление)
вопрос снят, типичный недогугл))) ob_get_contents()
White
Отправлено: 21 Июня, 2011 - 07:55:53 • Тема: Класс для ведения логов • Форум: Пользовательские функции
Ответов: 2 Просмотров: 384
Цитата: таб в восемь пробелов gedit или привычка??
У меня и то и то
geany (по сути тот же gedit, но мне как то больше по душе) + привычка
White
Отправлено: 20 Июня, 2011 - 22:11:26 • Тема: Класс для ведения логов • Форум: Пользовательские функции
Ответов: 2 Просмотров: 384
Возможно кому то пригодится, написано мной для ведения логов SQL запросов, но возможности применения значительно шире.
В начале кроткое API
CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
/* Multypurpose logger class v1.0.0
* ### Functions ###
* $log = log::start([$die_limit, $log_url, $log_ip, $log_time])
* Starts logger, arguments are optional and should be sent on first init,
* any further attempts will be ignored.
* If using inside functions $log = log::start should be called to get an access to object
* ### Arguments ###
* $die_limit - maximum rows in logger, if reached will cause script break (defaults to 0)
* $log_url - if set to 0, will not log url
* $log_ip - if set to 0, will not log ip
* $log_time - if set to 0, will not log time
* $log->add($string)
* Adds new entry to logger with $string text
* $log->build([$type])
* Returns log in string
* ### Arguments ###
* $type = ('html' || 'text' || 'plain'), defaults to 'html'
* 'html' - build log as html table
* 'text' - build as a text
* 'plain' - build as serialized object string
* $log->show([$row])
* Returns an object with parameters for $row(defaults to last string)
* $row - is a $row number to show
* returns $obj->string(entry text), [$obj->url, $obj->ip, $obj->time]*if set
* $log->write($filename [, $type, $rewrite])
* Writes data to file ($filename)
* ### Arguments ###
* $type - ('html', 'text', 'plain') same as for build
* $rewrite - bool, if set will not append, but rewrite file
*
* Under condition and terms of GNU/GPL
* 2011, Oleg Kasian, o-kasian@yandex.ru
*/
private $die_limit ;
private $log_time ;
private $log_ip ;
private $log_url ;
private $counter ;
private $row ;
private static $instance ;
private function __construct( $die_limit , $log_time , $log_ip , $log_url ) {
$this -> die_limit = $die_limit ;
$this -> log_time = $log_time ;
$this -> log_ip = $log_ip ;
$this -> log_url = $log_url ;
$this -> counter = 0 ;
}
public function __clone( ) { }
//typical singleton construction function
public static function start( $die_limit = 0, $log_url = 1, $log_ip = 1, $log_time = 1) {
if ( ! isset ( self:: $instance ) ) { $c = __CLASS__ ;
self:: $instance = new $c ( $die_limit , $log_time , $log_ip , $log_url ) ;
}
return self:: $instance ;
}
//adds new string to log, any string to log must be set as an argument
public function add( $string ) {
$this -> row [ $this -> counter ] -> string = $string ;
if ( $this -> log_url ) $this -> row [ $this -> counter ] -> url = $_SERVER [ "REQUEST_URI" ] ;
if ( $this -> log_ip ) $this -> row [ $this -> counter ] -> ip = $_SERVER [ 'REMOTE_ADDR' ] ;
if ( $this -> log_time ) $this -> row [ $this -> counter ] -> time = time ( ) ; ++ $this -> counter ;
$this -> limit ( ) ;
}
//builds log to str, argument(optional) $type=('html' || 'text' || 'plain')
public function build( $type = 'html' ) {
case 'html' :
$output = '<h3>Site Log</h3><table style="width:100%" id="site_log">' ;
$output .= '<tr><td><b>Text</b></td>' ;
if ( $this -> log_url ) $output .= '<td><b>Url</b></td>' ;
if ( $this -> log_ip ) $output .= '<td><b>Ip</b></td>' ;
if ( $this -> log_time ) $output .= '<td><b>Time</b></td>' ;
$output .= '</tr>' ;
foreach ( $this -> row as $value ) {
$output .= '<tr><td>' . $value -> string . '</td>' ;
if ( $this -> log_url ) $output .= '<td>' . ( $value -> url ) . '</td>' ;
if ( $this -> log_ip ) $output .= '<td>' . ( $value -> ip ) . '</td>' ;
if ( $this -> log_time ) $output .= '<td>' . date ( 'r' , $value -> time ) . '</td>' ; $output .= '</tr>' ;
}
$output .= '</table>' ;
break ;
case 'text' :
foreach ( $this -> row as $value ) {
$output .= $value -> string . ' called' ;
if ( $this -> log_url ) $output .= ' at ' . $value -> url ;
if ( $this -> log_ip ) $output .= ' by ' . $value -> ip ;
if ( $this -> log_time ) $output .= ' time ' . date ( 'r' , $value -> time ) ; $output .= "\r \n " ;
}
break ;
case 'plain' :
break ;
default :
$output = 'bad argument for build: ' . strtolower ( $type ) ; }
return $output ;
}
//shows last row if no argument set, else shows row number $row(int value)
public function show( $row = 'last' ) {
$output = $this -> row [ $this -> counter - 1] ;
} else {
if ( ( int) $row > ( $this -> counter - 1) ) $output = 'no row exist' ; else $output = $this -> row [ $row ] ;
}
return $output ;
}
//writes log to $file (local path must be set)
public function write( $file , $type = 'text' , $rewrite = 0) {
if ( $rewrite ) $fp = fopen ( $file , 'w' ) ; else $fp = fopen ( $file , 'a' ) ; fwrite ( $fp , $this -> build ( $type ) ) ; }
//writes custom error message if limit is reached
private function limit( ) {
if ( $this -> die_limit and $this -> die_limit == $this -> counter ) {
echo '<p style="display:block;color:red;background-color:yellow;border:1px solid red;">Log limit is reached. Will now stop.</p>' ;
}
}
}
?>
White
Отправлено: 20 Июня, 2011 - 17:01:15 • Тема: PHP Редактор tpl, css и html файлов • Форум: Напишите за меня, пожалуйста
Ответов: 22 Просмотров: 223
специально для вас в начале кода в комментариях маленький api, ваша ошибка говорит о том, что вы изменили значение переменной $workwith, для того чтобы отображать файлы только одного каталога $workwith='catalog'; $catalog="каталог с которым вы хотите работать" (например $catalog='/tpl')
White
Отправлено: 19 Июня, 2011 - 20:30:41 • Тема: PHP Редактор tpl, css и html файлов • Форум: Напишите за меня, пожалуйста
Ответов: 22 Просмотров: 223
1. После открытия текстовым редактором? Пример файла пож.
2. В начале скрипта добавил короткий конфиг, чуть изменил структуру 2 блока, измените значение переменной $catalog на требуемое(в домашней директории сайта, а не локальной фс!)
PHP:
скопировать код в буфер обмена
<?PHP
/* Configuration block
* $workwith = ('site' || 'catalog');
* $catalog - catalog name in site's home directory
*/
$workwith = 'catalog' ;
$catalog = '/editor/workwith' ;
//Saving file if POST array send
if ( $_POST [ 'filename' ] ) {
$fp = fopen ( $_POST [ 'filename' ] , 'w' ) ; fwrite ( $fp , $_POST [ 'fileentry' ] ) ; }
?>
<style>
p {
padding: 2px;
margin: 0px;
}
a, a:active {
color: black;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
td {
vertical-align:top;
}
</style>
<table style='width:100%'>
<tr>
<td style='width:300px; border-right:2px solid silver;'>
<?PHP
//Generating file navigation block
case 'site' :
if ( $_GET [ 'path' ] ) $path = $_GET [ 'path' ] ; else $path = $_GET [ 'path' ] = str_replace ( "\\ " , '/' , getcwd ( ) ) ; if ( strlen ( $_SERVER [ 'DOCUMENT_ROOT' ] ) < strlen
( $path ) ) echo '<a href="editor.php?path=' . substr ( $path , 0
, strrpos ( $path , '/' ) ) . '">../</a>' ; break ;
case 'catalog' :
$path = $_SERVER [ 'DOCUMENT_ROOT' ] . $catalog ;
break ;
default :
die ( 'CONFIGURATION ERROR' ) ; }
foreach ( glob ( $path . '/*' ) as $obj ) { if ( is_dir ( $obj ) and
strtolower ( $workwith ) == 'site' ) echo '<p><a href="editor.php?path=' . $obj . '">' . $filename . '/</a></p>' ; else { if ( $_GET [ 'path' ] ) echo '<p><a href="editor.php?path=' . $_GET [ 'path' ] . '&file=' . $obj . '">' . $filename . '</a></p>' ;
else echo '<p><a href="?file=' . $obj . '"></a></p>' ;
}
}
?>
</td>
<td style="padding-left:5px;">
<?PHP
//Generating file editor block
if ( $_GET [ 'path' ] ) echo '<form action="editor.php?path=' . $_GET [ 'path' ] . '&file=' . $_GET [ 'file' ] . '" method=post>' ;
else echo '<form action="editor.php" method=post>' ;
if ( $_GET [ 'file' ] ) {
$filename = $_GET [ 'file' ] ;
echo '<p>Current file: <b>' . $filename . '</b></p>' ;
echo '<input type=hidden name=filename value="' . $filename . '">' ;
} else echo 'No file loaded' ;
echo '<textarea rows=40; style="width:100%;" name=fileentry>' ;
if ( $_GET [ 'file' ] ) {
$filerows = file ( $filename ) ; foreach ( $filerows as $value ) {
}
}
echo '</textarea>' ;
echo '<input type=submit value="save" style="margin-top:10px;">' ;
?>
</form>
</td>
</tr>
</table>
White
Отправлено: 17 Июня, 2011 - 12:50:43 • Тема: Отображение div'a • Форум: HTML, Дизайн & CSS
Ответов: 8 Просмотров: 1814
Цитата: Есть дизайн. И я определяю расположение блоков согласно дизайну.
Перефразирую вопрос, в каких случаях вам надо отображать этот блок, а в каких нет.
White
Отправлено: 17 Июня, 2011 - 12:47:24 • Тема: Структура сайта, общий вопрос PHP • Форум: Работа с файловой системой и файлами
Ответов: 10 Просмотров: 8733
для себя я попытался объединить все то что мне нравится в определенных CMS, получился некий гибрид Joomla+Modx
от Modx:
1.Неограниченная вложенность ссылок.
2.Использование репозиториев для загрузки и установки дополнений(проект разрабатывается под GNU/GPL)
3.Полная масштабируемость (система даже больше CMF)
от Joomla:
1.Простота оформления шаблонов.
2.Похожая система дополнений.
3.Использование Mootools(планирую заменить на JQuery, его функциональности здесь достаточно)
+немного от себя:
1.файловый менеджер,
2.Система бэкапа/переноса сайта
3.Система SimpleAdmin для создания альтернативной админ панели, полностью масштабируемой под пользователя.
4.Модуль seo мониторинга
P.S. Целью написания является "научиться чему-то". На данный момент работает около 60% описанного функционала, так что до выпуска первой альфы еще долго.
White
Отправлено: 17 Июня, 2011 - 09:36:22 • Тема: Отображение div'a • Форум: HTML, Дизайн & CSS
Ответов: 8 Просмотров: 1814
Цитата: Есть многостраничный сайт, и есть div, отображать который нужно только на некоторых страницах
Согласно чему вы для себя, определяете где нужно отображать этот блок а где нет?
White
Отправлено: 17 Июня, 2011 - 09:27:50 • Тема: Структура сайта, общий вопрос PHP • Форум: Работа с файловой системой и файлами
Ответов: 10 Просмотров: 8733
создал синглтон logger;
работу с SQL осуществлял только собственными функциями, то есть например:
mysql_query('SELECT * FROM `table_name`);
заменено функцией
db_readtable('tablename')
внутри каждой подобной функции помимо проверки всех ее параметров с целью исключения возможности sql inject, есть обработчик ошибок и логгер, которые записывают значения в
logger, например $logger->sqllog('Function db_readtable called at '.$_SERVER['REQUEST_URI']), добавляет к str свойству $logger->log новую строку
Цитата: ограничение по количеству обращений к бд
если добавить в начале каждой функции работы с бд проверку содержимого свойства $logger->log на количество строк, можно узнать, сколько раз происходило обращение к бд, и если оно превышает какой то установленный тобой лимит сделать что-то вроде die('превышен лимит обращений к бд').
P.S. Я не ограничивал подключения к бд, я только записывал их в отдельный файл, чтобы в последующем знать, какие участки кода требуют оптимизации
Страниц (56): В начало « ... 48 49 50 51 52 [53] 54 55 56 »
Powered by ExBB FM 1.0 RC1. InvisionExBB