Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2011, 00:11   #61
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию

https://github.com/ionc-catalin/php5...ree/master/spl - я не зря ссылку давал
8oOoRPM вне форума Ответить с цитированием
Старый 30.08.2011, 14:37   #62
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Кстати на счёт ЧПУ можно позаимствовать urlManager у Yii. Довольно не плохой.
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 30.08.2011, 18:49   #63
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

Что то мне уже расхотелось сильно переделывать ЧПУ. Пишу на Nginx.

Вот кстати переделанный класс GET и POST

PHP код:
Class getRequest{
        var 
$_get_params = array();
        var 
$_post_params = array();
        
        function 
__construct(){    
            
parse_str($_SERVER['QUERY_STRING'], $this->_get_params);
            
$this->_post_params $_REQUEST;
             
$_GET = array();
             
$_POST = array();
             
$_REQUEST NULL;
             
$_SERVER['QUERY_STRING'] = NULL
        }
        
        function 
postPram($key){
         if (isset(
$this->_post_params[$key])) {
                   return 
getRequest::xss_clean($this->_post_params[$key]);
                } else {
                   return 
null;
                }    
        }
        
        
        function 
postParams() {
           
$out = array();
           foreach(
$this->_post_params as $k=>$v){
                  
$k getRequest::xss_clean($k);  
                  
$v getRequest::xss_clean($v);   
                
$out[$k] = $v;   
                    }  
         return 
$out;
       }
        
        
        function 
getParam($key) {
         if (isset(
$this->_get_params[$key])) {
                   return 
getRequest::xss_clean($this->_get_params[$key]);
                } else {
                   return 
null;
                }     
           }
                   
   
       function 
getParams() {
           
$out = array();
           foreach(
$this->_get_params as $k=>$v){
                  
$k GetParams::xss_clean($k);  
                  
$v GetParams::xss_clean($v);   
                
$out[$k] = $v;   
                    }  
         return 
$out;
       }
                
        static function 
File(){
                return 
$_FILES;
        }
            
public static function 
xss_clean($str)
{
    if(
is_array($str) || is_object($str))
    {
        foreach (
$str as $k => $s)
        {    
          
$str[$k] = getRequest::xss_clean($s);
        }
        return 
$str;
    }
    
    
$str str_replace("\0"''$str);

    if (
preg_match("/script/i"$str) || preg_match("/xss/i"$str))
    {
    
$str preg_replace("#<(/*)(script|xss)(.*?)\>#si"''$str);
    }
    
    
$str mysql_real_escape_string($str);
    
    
$str htmlspecialchars($str);
 
    return 
$str;
}    
    } 
dem66 вне форума Ответить с цитированием
Старый 30.08.2011, 23:11   #64
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

ау есть кто нибудь?
dem66 вне форума Ответить с цитированием
Старый 31.08.2011, 10:57   #65
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

1. Еще раз повторю свой совет - всегда тестируйте свой код:
Цитата:
Class getRequest{
.................
function postParams() {
$out = array();
foreach($this->_post_params as $k=>$v){
$k = getRequest::xss_clean($k);
$v = getRequest::xss_clean($v);
$out[$k] = $v;
}
return $out;
}
..................
function getParams() {
$out = array();
foreach($this->_get_params as $k=>$v){
$k = GetParams::xss_clean($k);
$v = GetParams::xss_clean($v);
$out[$k] = $v;
}
return $out;
}
2. То, что вы делаете со своими методами postPram()/postParams() и getParam()/getParams() - в программировании называется "copy-paste" (копи-паст по нашему).
Это как раз то, для борьбы с чем и придумали процедурные функции и, собственно, ООП.
Andkorol вне форума Ответить с цитированием
Старый 05.09.2011, 23:49   #66
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
Стрелка

Доброго времени суток.
Вот немножко обновил фреймворк, віложил части файлов.

Кстати для POST и GET добавил вайлидацию, прикольно работает

Сейчас занимаюсь написанием небольшой ORM, пока без фильтрации.

Вовод какойто части
PHP код:
$data = new('table',1);
echo 
$data->name
Выведен название
где 1 - айди записи.

Можно вывести все записи
PHP код:
$data = new('table');
print_r($data->find_all()); 
Можно обновить какуюто запись,например
PHP код:
$data = new('table',1);
$data->name 'новый текст';
echo 
$data->name
прикольно все работает, а главное удобно.
Вот только не решил проблему с добавление и удалением, пока еще к этому не дошло.

Может у кого появятся какието идеи??
Вложения
Тип файла: rar index.rar (2.3 Кб, 8 просмотров)
dem66 вне форума Ответить с цитированием
Старый 06.09.2011, 00:29   #67
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от dem66 Посмотреть сообщение
Кстати для POST и GET добавил вайлидацию, прикольно работает
Копипаст как был - так и остался.
Что делает ваша валидация - так понять и не смог.
Цитата:
$data = new('table',1);
$data = new('table');
Наверно таки $data = new ORM('table'); ?

ORM:
Цитата:

function db_connect()
{
return @mysql_connect($this->dbase['host'], $this->dbase['user'], $this->dbase['password']);

}

function db_select()
{
return @mysql_select_db($this->dbase['database'], $this->db_connect());
}

function _close($query)
{
@mysql_free_result($query);
@mysql_close($this->db_connect());
}

public function insert_once($key, $var, $id){
if(!empty($id)){
mysql_query("UPDATE ".$this->table." set ".$key."='$var' where id='$id'");
}else{
mysql_query("INSERT INTO ".$this->table."(".$key.") values('$var')");
}
return TRUE;
$this->_close($sql); - и где она тут взялась, переменная $sql...???
}
Куча собак в коде...
И зачем почти в каждом методе закрывать соединение с сервером?
Сомнительное "удобство" - для каждого обращения к БД создавать новый объект, и тут же его прибивать.
Цитата:
прикольно все работает, а главное удобно.
- эт точно....

Последний раз редактировалось Andkorol; 06.09.2011 в 00:52.
Andkorol вне форума Ответить с цитированием
Старый 06.09.2011, 03:45   #68
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию

- да уж, прикольно...
Изображения
Тип файла: jpg bike.m.f.jpg (100.9 Кб, 36 просмотров)
8oOoRPM вне форума Ответить с цитированием
Старый 06.09.2011, 14:31   #69
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

to 8oOoRPM, не звиздеть.

Что делает ваша валидация - так понять и не смог.

text='privet vsem'

вот пучение значения
PHP код:
$this->getParam('text''is_digit'); 
Вренет NULL потомушто там текст а не числа, так как при валидации указано is_digit, тоесть пропуска только цифры.

text=25

PHP код:
$this->getParam('text''is_range', array(0,20)); 
Тоже вернет NULL потомушто 25 всетаки больше за 20 которые указаны.

text=mail.mail.ru

PHP код:
$this->getParam('text''is_email'); 
Вернет NULL потомушто текст не является email адрессом. Вернее имеет не верный формат.

Код:
Цитата: $data = new('table',1); 
 $data = new('table');
Наверно таки $data = new ORM('table'); ?

Угу, это я вчера уже в полусонном виде упустил.

Цитата:
public function insert_once($key, $var, $id){
if(!empty($id)){
mysql_query("UPDATE ".$this->table." set ".$key."='$var' where id='$id'");
}else{
mysql_query("INSERT INTO ".$this->table."(".$key.") values('$var')");
}
return TRUE;
$this->_close($sql); - и где она тут взялась, переменная $sql...???
}
Я же говорю, писал ужен ночью.

PHP код:
public function insert_once($key$var$id){
 if(!empty(
$id)){
 
mysql_query("UPDATE ".$this->table." set ".$key."='$var' where id='$id'"); 
 }else{
 
mysql_query("INSERT INTO ".$this->table."(".$key.") values('$var')"); 
 }
 return 
TRUE
 } 
И правда и н--ра очищать буфер после запроса. Он правда и сам очизается, но пусть лучше будет по правильному. Как в учебниках пишут
dem66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows 98 и Framework 2 doober Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 7 12.07.2010 14:37
Framework 3.5 psycho-coder Общие вопросы .NET 8 17.07.2009 14:33
PHP и MySQL: Тестирование студентов Sanakan PHP 3 27.05.2009 20:26
Framework Blackout Софт 8 19.02.2009 09:49