PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (19): « 1 [2] 3 4 5 6 7 8 9 ... » В конец

> Найдено сообщений: 283
foozzi Отправлено: 13 Мая, 2013 - 23:00:55 • Тема: выборка из 2х таблиц по order by • Форум: Работа с СУБД

Ответов: 14
Просмотров: 2715
EuGen пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id_post AS union_id, * FROM post
  2. UNION ALL
  3. SELECT id_quote AS union_id, * FROM quote
  4. ORDER BY union_id DESC

?

Unknown column 'union_id' in 'order clause'
foozzi Отправлено: 13 Мая, 2013 - 22:49:06 • Тема: выборка из 2х таблиц по order by • Форум: Работа с СУБД

Ответов: 14
Просмотров: 2715
Есть 2 таблицы, из нужно тянуть все данные, НО по order by каждой таблицы id
пробовал так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT F.*, S.* FROM post F, quote S ORDER BY F.id_post, S.id_quote DESC


Но это уже полный бред, и не то получаю....
foozzi Отправлено: 12 Мая, 2013 - 22:40:51 • Тема: Способ вернуть ошибку после редиректа • Форум: Объектно-ориентированное программирование

Ответов: 10
Просмотров: 2087
Но данные то атправляются на /add, а там только модуль, выводить на чистой странице все?
foozzi Отправлено: 12 Мая, 2013 - 21:30:59 • Тема: Способ вернуть ошибку после редиректа • Форум: Объектно-ориентированное программирование

Ответов: 10
Просмотров: 2087
Отказался от ajax, ибо реальный костыль...
Теперь думаю, во время работы класса, по логике возникают ошибки и сообщения, заношу я их в массив, а обрабатываю отдельным методом:
PHP:
скопировать код в буфер обмена
  1. private function Error_Count1()
  2.         {
  3.             if(count($this->err) != 0)
  4.             {
  5.                 foreach($this->err as $display_error)
  6.                 {
  7.                     $this->error_dis = $display_error;
  8.                     echo $this->error_dis;
  9.                     exit;
  10.                 }
  11.             }
  12.         }


потом просто по нужде вызываю в классе:


И так как я отказался от ajax, теперь мне требуется отправить header на главную страницу и вывести ошибку там.
Думал писать ошибку в сессию, а потом чистить, но это как мне кажется лишняя нагрузка и не совсем правильно...
foozzi Отправлено: 12 Мая, 2013 - 21:26:54 • Тема: Один из первых классов • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 1841
DeepVarvar пишет:
Почему (зачем) одни св-ва приватные, а другие защищенные?

Приватные используются только в том классе где они были объявлены, а защищенные могу использоватся в наледуемых и родительных классах
foozzi Отправлено: 12 Мая, 2013 - 00:58:31 • Тема: Один из первых классов • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 1841
Вот еще пишу статичный класс авторизации, знаю что он убог и логика его убога, но хотелось бы спросить, есть ли возможность обхода авторизации по этому методу? то есть "нарисовать" куки и получить доступ?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class Auth {
  4.  
  5.     private static $username;
  6.     private static $password;
  7.  
  8.     protected static $user;
  9.     protected static $length = 6;
  10.     protected static $code = "";
  11.     protected static $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
  12.  
  13.     public static $msg;
  14.  
  15.  
  16.     /**
  17.      * Attempts to log a user in with the given credentials
  18.      *
  19.      * @param   string  $username
  20.      * @param   string  $password
  21.      * @return  bool
  22.      */
  23.  
  24.     public static function attempt($username, $password)
  25.     {
  26.  
  27.         $password = md5(md5(trim($password)));
  28.        
  29.         $Get_User = db::normalizeQuery("SELECT * FROM users WHERE name_user = '%s' AND passwd_user = '%s'", $username, $password);
  30.        
  31.         if ($user = $Get_User)
  32.         {
  33.             self::$user = $user;
  34.  
  35.             self::Login();
  36.  
  37.             return true;
  38.         }
  39.  
  40.         return false;
  41.     }
  42.  
  43.     /**
  44.      * login function
  45.      */
  46.  
  47.     protected static function Login()
  48.     {
  49.  
  50.         db::set("UPDATE users SET hash_user = '%s' WHERE id_user = '%s'", self::Ger_Hash(), self::$user['id_user']);
  51.  
  52.         setcookie("id_user", self::$user['id_user'], time()+60*60*24*30);
  53.  
  54.         setcookie("hash", self::Ger_Hash(), time()+60*60*24*30);
  55.  
  56.         $_SESSION['user_id'] = self::$user['id_user'];
  57.  
  58.         //$_SESSION['raw'] = 'юзер';
  59.         setcookie("guest", "");
  60.  
  61.         header("Location: /main");
  62.  
  63.     }
  64.  
  65.     /**
  66.      * get user info
  67.      */
  68.  
  69.     public static function info_user()
  70.     {
  71.         $Get_Ingo_User = db::normalizeQuery("SELECT * FROM users WHERE id_user = '%s'", $_SESSION['user_id']);
  72.     }
  73.  
  74.  
  75.     /**
  76.      * Generation hash!
  77.      */
  78.  
  79.     protected static function Ger_Hash()
  80.     {
  81.  
  82.         $clen = strlen(self::$chars) - 1;
  83.  
  84.         while (strlen(self::$code) < self::$length)
  85.         {
  86.  
  87.             self::$code .= self::$chars[mt_rand(0,$clen)];  
  88.         }
  89.  
  90.         return self::$code;
  91.     }
  92.  
  93.  
  94.  
  95.     /**
  96.      * Log out the current user
  97.      *
  98.      * @return  void
  99.      */
  100.  
  101.     public static function logout()
  102.     {
  103.         self::$user = null;
  104.  
  105.         $_SESSION = array();
  106.  
  107.         unset($_SESSION['user_id']);
  108.  
  109.         unset($_SESSION['raw']);
  110.  
  111.         session_destroy();
  112.  
  113.         setcookie("id_user", "", time() - 3600*24*30*12, "/");
  114.  
  115.         setcookie("hash", "", time() - 3600*24*30*12, "/");
  116.  
  117.         header("Location: /main");
  118.        
  119.         exit;
  120.     }
  121.  
  122.  
  123.     /**
  124.      * Checks if the current user is a guest
  125.      *
  126.      * @return  bool
  127.      */
  128.  
  129.     public static function guest()
  130.     {
  131.         setcookie("guest", self::Ger_Hash());
  132.         $_SESSION['raw'] = "Гость";
  133.     }
  134.  
  135.     public static function check_session()
  136.     {
  137.         if((empty($_COOKIE['hash'])) && (empty($_COOKIE['id_user'])))
  138.         {
  139.  
  140.             self::guest();
  141.  
  142.         }
  143.  
  144.         else
  145.         {
  146.  
  147.             $Check_cookie = db::normalizeQuery("SELECT * FROM users WHERE hash_user = '%s'", $_COOKIE['hash']);
  148.  
  149.             if($Check_cookie)
  150.  
  151.             {
  152.  
  153.                 $_SESSION['user_id'] = $Check_cookie['id_user'];
  154.                 $_SESSION['raw'] = $Check_cookie['name_user'];
  155.  
  156.             }
  157.             else
  158.             {
  159.                 setcookie("id_user", "", time() - 3600*24*30*12, "/");
  160.  
  161.                 setcookie("hash", "", time() - 3600*24*30*12, "/");
  162.             }
  163.  
  164.         }
  165.     }
  166. }
  167. ?>
foozzi Отправлено: 10 Мая, 2013 - 21:39:31 • Тема: Один из первых классов • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 1841
DeepVarvar пишет:
Ну вот, foozzi получил конкретную критику. С чем и поздравляю.

не страшно, я работаю над кодом) пытаюсь оттачивать )
foozzi Отправлено: 07 Мая, 2013 - 23:58:09 • Тема: Один из первых классов • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 1841
Это мой один из первых классов, хотелось бы услышать ошибки, которые я допустил.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. Class Upload extends SimpleImage
  4. {
  5.  
  6.     private $text;
  7.     private $filename;
  8.     private $filesize;
  9.     private $filetmp;
  10.     private $link;
  11.     private $thumb_link;
  12.     private $err;
  13.  
  14.     public $valid_extensions;
  15.  
  16.     public function __construct($text, $name, $size, $tmp)
  17.     {
  18.  
  19.         $this->err = array();
  20.  
  21.  
  22.         $valid_extensions = array('gif', 'jpg', 'png', 'GIF', 'JPG', 'PNG');
  23.  
  24.  
  25.         /**
  26.          * file data array
  27.          */
  28.  
  29.         $this->text = $text;
  30.         $this->filename = $name;
  31.         $this->filesize = $size;
  32.         $this->filetmp = $tmp;
  33.  
  34.         $this->valid_extensions = $valid_extensions;
  35.  
  36.         /**
  37.          * Clean text
  38.          */
  39.  
  40.         $this->text = preg_replace("/[^\\w\\x7F-\\xFF\\s]+/s", "", $this->text);
  41.         $this->text = xss(trim($this->text));
  42.  
  43.         if($this->filesize == 0)
  44.         {
  45.             var_dump($this->valid_extensions);
  46.             $this->err[] = display_msg("Ошибка", "alert-error", "Файл не выбран");
  47.         }
  48.  
  49.         /**
  50.          * get ext file
  51.          */
  52.  
  53.         $this->ex = pathinfo($this->filename, PATHINFO_EXTENSION);
  54.  
  55.         /**
  56.          * unick name for image
  57.          */
  58.  
  59.         $this->new_img_name = uniqid() . '.' . $this->ex;
  60.  
  61.         if (isset($valid_extensions))
  62.         {
  63.             $allowed = 0;
  64.             foreach ($valid_extensions as $ext)
  65.             {
  66.                 if(substr($this->filename, (0 - (strlen($ext) + 1))) == ".".$ext)
  67.                 $allowed = 1;
  68.             }
  69.             if ($allowed == 0)
  70.             {
  71.                 $this->err[] = display_msg('Ошибка', 'alert-error', 'Неверный формат изображения');
  72.             }
  73.         }
  74.  
  75.         /**
  76.          * path for upload and write table
  77.         */
  78.  
  79.         $this->link = UPLOAD_DIR . $this->new_img_name;
  80.         $this->link_thumb = UPLOAD_DIR_THUMB . $this->new_img_name;
  81.  
  82.         if($this->Check_Image($this->filetmp, $valid_extensions))
  83.         {
  84.             $this->err[] = 'Это не картинка';
  85.         }
  86.  
  87.         /**
  88.          * default value for text
  89.          */
  90.  
  91.         if(empty($this->text))
  92.         {
  93.             $this->text = '<span class="label label-success"> Подписи нет </span>';
  94.         }
  95.  
  96.         /**
  97.          * Echo error msg
  98.          */
  99.  
  100.         $this->Error_Count1();
  101.  
  102.         /**
  103.          * start upload and insert data
  104.          */
  105.  
  106.         $this->Uploading();
  107.  
  108.     }
  109.  
  110.     /**
  111.      * anti-upload for other files
  112.      */
  113.  
  114.     private function Check_Image()
  115.     {
  116.         if(!$image_info = get_image_info($this->filetmp) or !in_array($image_info['extension'], $this->valid_extensions))
  117.         {
  118.             return false;
  119.         }
  120.     }
  121.  
  122.     /**
  123.      * function uploading file and insert data to table
  124.      */
  125.  
  126.     private function Uploading()
  127.     {
  128.  
  129.         /**
  130.          * start upload
  131.          */
  132.  
  133.         if(move_uploaded_file($this->filetmp, $this->link))
  134.         {
  135.             /**
  136.              * get size images
  137.              */
  138.  
  139.             list($width, $height) = getimagesize($this->link);
  140.  
  141.             /**
  142.              * if width > thumbnail size
  143.              */
  144.  
  145.             if($width > MAX_FILE_SIZE)
  146.             {
  147.                 $this->load($this->link);
  148.                 $this->resizeToHeight(MAX_FILE_SIZE);
  149.                 $this->save($this->link_thumb);
  150.             }
  151.             else
  152.             {
  153.                 $this->link_thumb = $this->link;
  154.             }
  155.  
  156.             /**
  157.              * if image very small
  158.              */
  159.  
  160.             if($width < MIN_SIZE_FILE || $height < MIN_SIZE_FILE)
  161.             {
  162.                 $this->err[] = display_msg('Ошибка', 'alert-error', 'Пикча маловата');
  163.             }
  164.  
  165.             /**
  166.             * check errors and msg
  167.             */
  168.  
  169.             $this->Error_Count1();
  170.  
  171.             /**
  172.              * connect db
  173.              */
  174.  
  175.             db::connect(HOST, USER, PASSWD, DB);
  176.  
  177.             db::setCharset(CHARSET);
  178.  
  179.             /**
  180.              * insert data to table
  181.              */
  182.  
  183.             db::set("INSERT INTO post (
  184.                id_post,
  185.                text_post,
  186.                img_large,
  187.                img_mini,
  188.                date_post
  189.                ) VALUES (
  190.                '%s',
  191.                '%s',
  192.                '%s',
  193.                '%s',
  194.                NOW()
  195.                )",
  196.                 NULL, $this->text, $this->link, $this->link_thumb
  197.             );
  198.  
  199.             /**
  200.              * Good upload
  201.              */
  202.  
  203.             $this->err[] = display_msg('Сообщение', 'alert-info', 'Сообщение добавлено на проверку');
  204.         }
  205.         else
  206.         {
  207.             /**
  208.              * truble upload
  209.              */
  210.  
  211.             $this->err[] = display_msg('Ошибка', 'alert-error', 'При загрузке возникли какие-то неполадки');
  212.         }
  213.  
  214.         /**
  215.          * echo msg or error
  216.          */
  217.  
  218.             $this->Error_Count1();
  219.  
  220.             exit;
  221.     }
  222.  
  223.     /**
  224.      * function count and return errors and msg
  225.      */
  226.  
  227.     private function Error_Count1()
  228.     {
  229.         if(count($this->err) != 0)
  230.         {
  231.             foreach($this->err as $display_error)
  232.             {
  233.                 $this->error_dis = $display_error;
  234.                 echo $this->error_dis;
  235.                 exit;
  236.             }
  237.         }
  238.     }
  239.  
  240. }
foozzi Отправлено: 31 Марта, 2013 - 16:31:04 • Тема: CHAR_LENGTH посчитать символы • Форум: Вопросы новичков

Ответов: 4
Просмотров: 162
Мелкий пишет:
Всё нормально, никакой беды. Ресурс возвращать и должен.

эм... пример в дампа
CODE (SQL):
скопировать код в буфер обмена
  1. --
  2. -- Структура таблицы `post`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `post` (
  6.   `id` int(11) NOT NULL AUTO_INCREMENT,
  7.   `n_post` varchar(100) CHARACTER SET utf8 NOT NULL,
  8.   `t_post` text CHARACTER SET utf8 NOT NULL,
  9.   `a_post` varchar(50) CHARACTER SET utf8 NOT NULL,
  10.   `d_post` datetime NOT NULL,
  11.   `i_post` varchar(200) CHARACTER SET utf8 NOT NULL,
  12.   PRIMARY KEY (`id`)
  13. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
  14.  
  15. --
  16. -- Дамп данных таблицы `post`
  17. --
  18.  
  19. INSERT INTO `post` (`id`, `n_post`, `t_post`, `a_post`, `d_post`, `i_post`) VALUES
  20. (1, 'Первый пост!\r\n', 'Если судить по многочисленным темам в различных форумах, посвящённых языку PHP, то можно с уверенностью констатировать, что львиная доля не только новичков, но разработчиков среднего уровня абсолютно не понимают что такое шаблоны в PHP, зачем они нужны и как правильно использовать шаблонизацию в PHP. Именно для тех, кто ещё не до конца осознал, что такое шаблоны и написана эта статья. В ней описаны все критические ошибки, которые совершают начинающие разработчики по части шаблонизации в языке PHP.\r\n\r\nRead more: http://www.phpinfo.su/articles/practice/shablony_v_php.html#ixzz2P4jVfN4y\r\n', 'foozzi', '2013-03-21 00:00:00', 'http://foozzi.tk/hdf');


как там может быть 8?
foozzi Отправлено: 31 Марта, 2013 - 15:27:16 • Тема: CHAR_LENGTH посчитать символы • Форум: Вопросы новичков

Ответов: 4
Просмотров: 162
данный код
CODE (SQL):
скопировать код в буфер обмена
  1. $num_word = mysql_query("SELECT CHAR_LENGTH(`t_post`) FROM `post` WHERE `id` = '$id'");


возвращает такое Resource id #8
в чем беда?
foozzi Отправлено: 27 Марта, 2013 - 10:50:10 • Тема: Тесная работа php и ajax • Форум: Вопросы новичков

Ответов: 1
Просмотров: 122
Столкнулся с проблемой, которую досих пор не могу решить.
Сдесь http://xozblog[dot]ru/2013/01/infinite-scroll/ описано как с помощью плагина jquery infinite-scroll организовать "бесконечную прокрутку" страны aka vk.com/twitter.com
Но вся проблема в том, что данный код:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. mysql_connect('localhost', 'username', 'password') or die();
  4. mysql_select_db('database');
  5.  
  6. $offset = is_numeric($_POST['offset']) ? $_POST['offset'] : die();
  7. $postnumbers = is_numeric($_POST['number']) ? $_POST['number'] : die();
  8.  
  9.  
  10. $run = mysql_query("SELECT * FROM ex_posts ORDER BY id DESC LIMIT ".$postnumbers." OFFSET ".$offset);
  11.  
  12.  
  13. while($row = mysql_fetch_array($run)) {
  14.  
  15.   $content = substr(strip_tags($row['text']), 0, 500);
  16.  
  17.   echo '<h1><a href="#">'.$row['title'].'</a></h1><hr />';
  18.   echo '<p>'.$content.'...</p><hr />';
  19.  
  20. }
  21.  
  22. ?>

Слишкой убог и не удобен в использование т.к. выводить контент через echo, как мне кажется это быдлокод.

У меня же происходит все так: index.php подключает файл с html разметкой, к примеру:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include('header.html');
  3. while(mysql_fetch_assoc($query)) {
  4. ?>

CODE (html):
скопировать код в буфер обмена
  1. <h2><?=$query['title']?></h2>
  2. <div class="content"><?=$query['text']?></div>


То есть если я буду использовать данные js код:
CODE (javascript):
скопировать код в буфер обмена
  1. // Функция AJAX запроса
  2. function getData() {
  3.        
  4.      // Формируется POST запрос к ajax.php
  5.      $.post('index.php', {
  6.            
  7.           action   : 'scrollpagination',
  8.           number   : $settings.nop,
  9.           offset   : offset,
  10.              
  11.      }, function(data) {
  12.            
  13.           // Информируем пользователя
  14.           $this.find('.loading-bar').html($initmessage);
  15.          
  16.           // Если возвращенные данные пусты то сообщаем об этом
  17.           if(data == "") {
  18.                $this.find('.loading-bar').html($settings.error);
  19.           }
  20.           else {
  21.                // Смещение увеличивается
  22.                offset = offset+$settings.nop;
  23.                
  24.                // Добавление полученных данных в DIV content
  25.                $this.find('.content').append(data);
  26.            
  27.                // Процесс завершен
  28.                busy = false;
  29.           }
  30.            
  31.      });
  32.          
  33. }

Каждую новую запись из бд будет выводить с еще одним header'ом и footer'ом (потому что в файле шаблона происходит инклуд этих файлов)

Как решить эту проблему? Какие предложение?
foozzi Отправлено: 12 Марта, 2013 - 23:54:05 • Тема: вывод переменной php в ajax алерте • Форум: Вопросы новичков

Ответов: 2
Просмотров: 100
есть переменная после if()... к примеру:

$msg = 'Вы авторизованы!';

и вот если она существует, требуется вывести алерт с этим сообщением без перезагрузки.
Просто с инклудами уже переборщил.
В аяксе полный ноль, хотелось бы увидать пример, дальше разберусь
foozzi Отправлено: 05 Марта, 2013 - 21:52:28 • Тема: проверка юзера в базе • Форум: Вопросы новичков

Ответов: 4
Просмотров: 139
avtor.fox пишет:
foozzi, а смысл?

Для начала, у Вас тянется из базы одна запись с минимальным id. Соответственно никто кроме этого id не сможет попасть в "систему". Далее, зачем такой "сложный" код?

PHP:
скопировать код в буфер обмена
  1. $q = mysql_query("SELECT user, passwd FROM moder WHERE user = '".mysql_real_escape_string($login)."' AND passwd = '".mysql_real_escape_string($passwd)."'");


Сразу тянете нужного пользователя и работаете далее.
Параноик Подмигивание

спасибо, то что надо)
foozzi Отправлено: 05 Марта, 2013 - 21:27:15 • Тема: проверка юзера в базе • Форум: Вопросы новичков

Ответов: 4
Просмотров: 139
avtor.fox пишет:
foozzi, а сколько он должен проверить пользователей?

всех кто есть в таблице
foozzi Отправлено: 05 Марта, 2013 - 21:17:54 • Тема: проверка юзера в базе • Форум: Вопросы новичков

Ответов: 4
Просмотров: 139
есть такая примитивная ф-я:
PHP:
скопировать код в буфер обмена
  1. function login($login, $passwd) {
  2.     $usr = mysql_query("SELECT user, passwd FROM moder ORDER BY id" ) or die(mysql_error());
  3.    $arr_usr = mysql_fetch_assoc($usr);
  4.     if(trim(htmlspecialchars(stripslashes($login))) == $arr_usr['user'] && trim(htmlspecialchars(stripslashes($passwd))) == $arr_usr['passwd']) {
  5.         $_SESSION['moder'] = uniqid().$arr_usr['user'];
  6.         $_SESSION['login'] = $arr_usr['user'];
  7.         //header('Location: adm/index.php');
  8.         echo '<script>setTimeout( \'location=\"adm/index.php\";\', 1 );</script>';
  9.     }
  10.     else {
  11.         $msg = 'Не верные данные!';
  12.         include_once(THEME.'/error.php');
  13.         exit;
  14.     }
  15. }

проблема в том, что проверяет только 1 пользователя в таблице, а других игнорирует, пробовал циклом, не вышло... как решить?

Страниц (19): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB