PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (19): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
Найдено сообщений: 283
foozzi
Отправлено: 13 Мая, 2013 - 22:49:06 • Тема: выборка из 2х таблиц по order by • Форум: Работа с СУБД
Ответов: 14 Просмотров: 2715
Есть 2 таблицы, из нужно тянуть все данные, НО по order by каждой таблицы id
пробовал так:
Но это уже полный бред, и не то получаю....
foozzi
Отправлено: 12 Мая, 2013 - 21:30:59 • Тема: Способ вернуть ошибку после редиректа • Форум: Объектно-ориентированное программирование
Ответов: 10 Просмотров: 2087
Отказался от ajax, ибо реальный костыль...
Теперь думаю, во время работы класса, по логике возникают ошибки и сообщения, заношу я их в массив, а обрабатываю отдельным методом:
PHP:
скопировать код в буфер обмена
private function Error_Count1( )
{
if ( count ( $this -> err ) != 0
) {
foreach ( $this -> err as $display_error )
{
$this -> error_dis = $display_error ;
echo $this -> error_dis ;
}
}
}
потом просто по нужде вызываю в классе:
И так как я отказался от ajax, теперь мне требуется отправить header на главную страницу и вывести ошибку там.
Думал писать ошибку в сессию, а потом чистить, но это как мне кажется лишняя нагрузка и не совсем правильно...
foozzi
Отправлено: 12 Мая, 2013 - 21:26:54 • Тема: Один из первых классов • Форум: Объектно-ориентированное программирование
Ответов: 8 Просмотров: 1841
DeepVarvar пишет: Почему (зачем) одни св-ва приватные, а другие защищенные?
Приватные используются только в том классе где они были объявлены, а защищенные могу использоватся в наледуемых и родительных классах
foozzi
Отправлено: 12 Мая, 2013 - 00:58:31 • Тема: Один из первых классов • Форум: Объектно-ориентированное программирование
Ответов: 8 Просмотров: 1841
Вот еще пишу статичный класс авторизации, знаю что он убог и логика его убога, но хотелось бы спросить, есть ли возможность обхода авторизации по этому методу? то есть "нарисовать" куки и получить доступ?
PHP:
скопировать код в буфер обмена
<?PHP
class Auth {
private static $username ;
private static $password ;
protected static $user ;
protected static $length = 6 ;
protected static $code = "" ;
protected static $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789" ;
public static $msg ;
/**
* Attempts to log a user in with the given credentials
*
* @param string $username
* @param string $password
* @return bool
*/
public static function attempt( $username , $password )
{
$Get_User = db:: normalizeQuery ( "SELECT * FROM users WHERE name_user = '%s ' AND passwd_user = '%s '" , $username , $password ) ;
if ( $user = $Get_User )
{
self :: $user = $user ;
self :: Login ( ) ;
return true ;
}
return false ;
}
/**
* login function
*/
protected static function Login( )
{
db:: set ( "UPDATE users SET hash_user = '%s ' WHERE id_user = '%s '" , self :: Ger_Hash ( ) , self :: $user [ 'id_user' ] ) ;
setcookie ( "id_user" , self :: $user [ 'id_user' ] , time ( ) + 60
* 60
* 24
* 30
) ;
$_SESSION [ 'user_id' ] = self :: $user [ 'id_user' ] ;
//$_SESSION['raw'] = 'юзер';
}
/**
* get user info
*/
public static function info_user( )
{
$Get_Ingo_User = db:: normalizeQuery ( "SELECT * FROM users WHERE id_user = '%s '" , $_SESSION [ 'user_id' ] ) ;
}
/**
* Generation hash!
*/
protected static function Ger_Hash( )
{
$clen = strlen ( self :: $chars ) - 1 ;
while ( strlen ( self :: $code ) < self :: $length ) {
self :: $code .= self :: $chars [ mt_rand ( 0
, $clen ) ] ; }
return self :: $code ;
}
/**
* Log out the current user
*
* @return void
*/
public static function logout( )
{
self :: $user = null ;
unset ( $_SESSION [ 'user_id' ] ) ;
}
/**
* Checks if the current user is a guest
*
* @return bool
*/
public static function guest( )
{
$_SESSION [ 'raw' ] = "Гость" ;
}
public static function check_session( )
{
if ( ( empty ( $_COOKIE [ 'hash' ] ) ) && ( empty ( $_COOKIE [ 'id_user' ] ) ) ) {
self :: guest ( ) ;
}
else
{
$Check_cookie = db:: normalizeQuery ( "SELECT * FROM users WHERE hash_user = '%s '" , $_COOKIE [ 'hash' ] ) ;
if ( $Check_cookie )
{
$_SESSION [ 'user_id' ] = $Check_cookie [ 'id_user' ] ;
$_SESSION [ 'raw' ] = $Check_cookie [ 'name_user' ] ;
}
else
{
}
}
}
}
?>
foozzi
Отправлено: 07 Мая, 2013 - 23:58:09 • Тема: Один из первых классов • Форум: Объектно-ориентированное программирование
Ответов: 8 Просмотров: 1841
Это мой один из первых классов, хотелось бы услышать ошибки, которые я допустил.
PHP:
скопировать код в буфер обмена
<?PHP
Class Upload extends SimpleImage
{
private $text ;
private $filename ;
private $filesize ;
private $filetmp ;
private $link ;
private $thumb_link ;
private $err ;
public $valid_extensions ;
public function __construct( $text , $name , $size , $tmp )
{
$valid_extensions = array ( 'gif' , 'jpg' , 'png' , 'GIF' , 'JPG' , 'PNG' ) ;
/**
* file data array
*/
$this -> text = $text ;
$this -> filename = $name ;
$this -> filesize = $size ;
$this -> filetmp = $tmp ;
$this -> valid_extensions = $valid_extensions ;
/**
* Clean text
*/
$this -> text = preg_replace ( "/[^\\ w\\ x7F-\\ xFF\\ s]+/s" , "" , $this -> text ) ; $this -> text = xss
( trim ( $this -> text ) ) ;
if ( $this -> filesize == 0)
{
$this -> err [ ] = display_msg( "Ошибка" , "alert-error" , "Файл не выбран" ) ;
}
/**
* get ext file
*/
$this -> ex = pathinfo ( $this -> filename , PATHINFO_EXTENSION
) ;
/**
* unick name for image
*/
$this -> new_img_name = uniqid ( ) . '.' . $this -> ex ;
if ( isset ( $valid_extensions ) ) {
$allowed = 0 ;
foreach ( $valid_extensions as $ext )
{
if ( substr ( $this -> filename , ( 0
- ( strlen ( $ext ) + 1 ) ) ) == "." . $ext ) $allowed = 1 ;
}
if ( $allowed == 0)
{
$this -> err [ ] = display_msg( 'Ошибка' , 'alert-error' , 'Неверный формат изображения' ) ;
}
}
/**
* path for upload and write table
*/
$this -> link = UPLOAD_DIR . $this -> new_img_name ;
$this -> link_thumb = UPLOAD_DIR_THUMB . $this -> new_img_name ;
if ( $this -> Check_Image ( $this -> filetmp , $valid_extensions ) )
{
$this -> err [ ] = 'Это не картинка' ;
}
/**
* default value for text
*/
{
$this -> text = '<span class="label label-success"> Подписи нет </span>' ;
}
/**
* Echo error msg
*/
$this -> Error_Count1 ( ) ;
/**
* start upload and insert data
*/
$this -> Uploading ( ) ;
}
/**
* anti-upload for other files
*/
private function Check_Image( )
{
if ( ! $image_info = get_image_info
( $this -> filetmp ) or
! in_array ( $image_info [ 'extension' ] , $this -> valid_extensions ) ) {
return false ;
}
}
/**
* function uploading file and insert data to table
*/
private function Uploading( )
{
/**
* start upload
*/
{
/**
* get size images
*/
/**
* if width > thumbnail size
*/
if ( $width > MAX_FILE_SIZE)
{
$this -> load ( $this -> link ) ;
$this -> resizeToHeight ( MAX_FILE_SIZE) ;
$this -> save ( $this -> link_thumb ) ;
}
else
{
$this -> link_thumb = $this -> link ;
}
/**
* if image very small
*/
if ( $width < MIN_SIZE_FILE || $height < MIN_SIZE_FILE)
{
$this -> err [ ] = display_msg( 'Ошибка' , 'alert-error' , 'Пикча маловата' ) ;
}
/**
* check errors and msg
*/
$this -> Error_Count1 ( ) ;
/**
* connect db
*/
db:: connect ( HOST, USER, PASSWD, DB) ;
db:: setCharset ( CHARSET) ;
/**
* insert data to table
*/
db:: set ( "INSERT INTO post (
id_post,
text_post,
img_large,
img_mini,
date_post
) VALUES (
'%s ',
'%s ',
'%s ',
'%s ',
NOW()
)" ,
NULL , $this -> text , $this -> link , $this -> link_thumb
) ;
/**
* Good upload
*/
$this -> err [ ] = display_msg( 'Сообщение' , 'alert-info' , 'Сообщение добавлено на проверку' ) ;
}
else
{
/**
* truble upload
*/
$this -> err [ ] = display_msg( 'Ошибка' , 'alert-error' , 'При загрузке возникли какие-то неполадки' ) ;
}
/**
* echo msg or error
*/
$this -> Error_Count1 ( ) ;
}
/**
* function count and return errors and msg
*/
private function Error_Count1( )
{
if ( count ( $this -> err ) != 0
) {
foreach ( $this -> err as $display_error )
{
$this -> error_dis = $display_error ;
echo $this -> error_dis ;
}
}
}
}
foozzi
Отправлено: 31 Марта, 2013 - 16:31:04 • Тема: CHAR_LENGTH посчитать символы • Форум: Вопросы новичков
Ответов: 4 Просмотров: 162
Мелкий пишет: Всё нормально, никакой беды. Ресурс возвращать и должен.
эм... пример в дампа
CODE (
SQL ):
скопировать код в буфер обмена
--
-- Структура таблицы `post`
--
CREATE TABLE IF NOT EXISTS `post` (
`id` int( 11) NOT NULL AUTO_INCREMENT ,
`n_post` varchar( 100) CHARACTER SET utf8 NOT NULL ,
`t_post` text CHARACTER SET utf8 NOT NULL ,
`a_post` varchar( 50) CHARACTER SET utf8 NOT NULL ,
`d_post` datetime NOT NULL ,
`i_post` varchar( 200) CHARACTER SET utf8 NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE= InnoDB DEFAULT CHARSET= latin1 AUTO_INCREMENT = 2 ;
--
-- Дамп данных таблицы `post`
--
INSERT INTO `post` ( `id` , `n_post` , `t_post` , `a_post` , `d_post` , `i_post` ) VALUES
( 1 , 'Первый пост!\r \n ' , 'Если судить по многочисленным темам в различных форумах, посвящённых языку PHP, то можно с уверенностью констатировать, что львиная доля не только новичков, но разработчиков среднего уровня абсолютно не понимают что такое шаблоны в PHP, зачем они нужны и как правильно использовать шаблонизацию в PHP. Именно для тех, кто ещё не до конца осознал, что такое шаблоны и написана эта статья. В ней описаны все критические ошибки, которые совершают начинающие разработчики по части шаблонизации в языке PHP.\r \n \r \n Read 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
Отправлено: 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:
скопировать код в буфер обмена
<?PHP
$offset = is_numeric ( $_POST [ 'offset' ] ) ?
$_POST [ 'offset' ] : die ( ) ; $postnumbers = is_numeric ( $_POST [ 'number' ] ) ?
$_POST [ 'number' ] : die ( ) ;
$run = mysql_query ( "SELECT * FROM ex_posts ORDER BY id DESC LIMIT " . $postnumbers . " OFFSET " . $offset ) ;
echo '<h1><a href="#">' . $row [ 'title' ] . '</a></h1><hr />' ;
echo '<p>' . $content . '...</p><hr />' ;
}
?>
Слишкой убог и не удобен в использование т.к. выводить контент через echo, как мне кажется это быдлокод.
У меня же происходит все так: index.php подключает файл с html разметкой, к примеру:
То есть если я буду использовать данные js код:
CODE (
javascript ):
скопировать код в буфер обмена
// Функция AJAX запроса
function getData( ) {
// Формируется POST запрос к ajax.php
$.post ( 'index.php' , {
action : 'scrollpagination' ,
number : $settings.nop ,
offset : offset,
} , function ( data) {
// Информируем пользователя
$this.find ( '.loading-bar' ) .html ( $initmessage) ;
// Если возвращенные данные пусты то сообщаем об этом
if ( data == "" ) {
$this.find ( '.loading-bar' ) .html ( $settings.error ) ;
}
else {
// Смещение увеличивается
offset = offset+ $settings.nop ;
// Добавление полученных данных в DIV content
$this.find ( '.content' ) .append ( data) ;
// Процесс завершен
busy = false ;
}
} ) ;
}
Каждую новую запись из бд будет выводить с еще одним 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 не сможет попасть в "систему". Далее, зачем такой "сложный" код?
Сразу тянете нужного пользователя и работаете далее.
Параноик
спасибо, то что надо)
foozzi
Отправлено: 05 Марта, 2013 - 21:27:15 • Тема: проверка юзера в базе • Форум: Вопросы новичков
Ответов: 4 Просмотров: 139
avtor.fox пишет: foozzi , а сколько он должен проверить пользователей?
всех кто есть в таблице
foozzi
Отправлено: 05 Марта, 2013 - 21:17:54 • Тема: проверка юзера в базе • Форум: Вопросы новичков
Ответов: 4 Просмотров: 139
есть такая примитивная ф-я:
PHP:
скопировать код в буфер обмена
function login( $login , $passwd ) {
$_SESSION [ 'moder' ] = uniqid ( ) . $arr_usr [ 'user' ] ; $_SESSION [ 'login' ] = $arr_usr [ 'user' ] ;
//header('Location: adm/index.php');
echo '<script>setTimeout( \'location=\"adm/index.php\";\', 1 );</script>' ;
}
else {
$msg = 'Не верные данные!' ;
include_once ( THEME. '/error.php' ) ;
}
}
проблема в том, что проверяет только 1 пользователя в таблице, а других игнорирует, пробовал циклом, не вышло... как решить?
Страниц (19): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
Powered by ExBB FM 1.0 RC1. InvisionExBB