Пишу блок для управления сайтом.

Скрипты, разработка, настройка, администрирование

Модераторы: dobs, ArniXXX, hostess, bj

Сообщение
Автор
baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

Пишу блок для управления сайтом.

#1 Сообщение baytuch » Ср мар 16, 2011 21:56

Пишу по немного движочек на пыхчеке :) . Простенький...

Решил сделать базу на файлах. Причина тому -- невозможность сохранять файлы в MySQL. Воспринимайте это как эксперемент ( база на файлах ).
Вот библиотека, которая базу обслуживает( написан только фрагмент, который обслуживает аккаунты ):

Код: Выделить всё

<?php
$cat = "data";

function db($type, $operation, $data){
  if ( $type == "users" )
  {

    if ( $operation == 0){
    $login = $data[0];   //login
    $pass = $data[1];    //pass
    $status = $data[2];  //status
    $encpass = md5($pass);
    $fh = fopen ("data/users/$login.dat", "w");
    $fd = $status." ".$encpass;
    fwrite($fh, $fd);
    fclose($fh);
    };

    if ($operation == 1){
    $fh = fopen ("data/users/$data.dat", "r");
    $fd = fgets($fh, 1024);
    fclose($fh);
    $nsp = strpos($fd, " ");
    $lenuser = $data;
    $lenfd = strlen($fd);
    $fduser = substr($fd, 0, $nsp);
    $fdencpass = substr($fd, $nsp+1, $lenfd);
    $ret[0] = $fduser;
    $ret[1] = $fdencpass;
    return $ret;
    };

    if ( $operation == 2){
      return file_exists("data/users/$data.dat");
    };
  };
};
?>
Последний раз редактировалось baytuch Чт мар 17, 2011 00:11, всего редактировалось 1 раз.
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

dobs
HO Moderators
Сообщения: 2504
Зарегистрирован: Вс апр 09, 2006 14:42
Откуда: /home/Ukraine/Kiev
Контактная информация:

#2 Сообщение dobs » Ср мар 16, 2011 23:34

Причина тому -- невозможность сохранять файлы в MySQL.
:shock: :shock: :shock:

BLOB - "Binary Large OBject" - двоичный большой объект.

Как отмечено выше, MySQL поддерживает четыре типа BLOB:
tinyblob (0-255 байт)
blob (0-65535 байт)
mediumblob (0-16777216 байт)
longblob (0-2147483648 байт)

Обратите внимание, что могут иметься некоторые ограничения из-за размера буфера сообщения. Буфер сообщений выделяется динамически. Вы должны знать, что 'max_allowed_packet' устанавливается на сервере и клиенте. По умолчанию, это - 64КБ для сервера и 512КБ для клиента.

Вы можете сменить размер буфера, запустив mysqld с опцией -O. Но помните, что это количество памяти будет выделяться каждому потоку!
http://habrahabr.ru/blogs/mysql/45966/


С файлами будет много гемора если сделать тучу запросов с разных компов, например кто то будет читать а кто то писать и в итоге может выйти fali...

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#3 Сообщение baytuch » Ср мар 16, 2011 23:44

Чесно, не видел ни одного подобного решения... :?

Над в мануалах по искать... :)
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#4 Сообщение baytuch » Ср мар 16, 2011 23:46

Будем что-то решать...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#5 Сообщение baytuch » Чт мар 17, 2011 00:17

А можно спросить на счет cookie: дело в том, что я там сохраняю индекс пользователя, то есть, посте авторизации там сохраняется сам факт авторизации, а так же его логин... Много сейчас пользователей отключают эту функцию в браузере?
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

dobs
HO Moderators
Сообщения: 2504
Зарегистрирован: Вс апр 09, 2006 14:42
Откуда: /home/Ukraine/Kiev
Контактная информация:

#6 Сообщение dobs » Чт мар 17, 2011 00:39

Ну насчет отключают не вкурсах, но такое лучше на сессиях сделать
http://www.softtime.ru/bookphp/gl8_1.php

ArniXXX
HO Moderators
Сообщения: 420
Зарегистрирован: Сб янв 19, 2008 16:02
Контактная информация:

#7 Сообщение ArniXXX » Чт мар 17, 2011 10:05

Тот путь который ты выбрал никуда тебя не приведет.

1. В базе можно хранить файлы.
2. Это немного накладно потому в базе хранят только айди файла, сам файл в папке.

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#8 Сообщение baytuch » Чт мар 17, 2011 11:30

Я просто подумал: а ведь сами сессии используют механизм cookie ( когда она доступна ). Просто, так не надо писать дополнительных модулей, а просто добавил в начале кода "session_start()" и радуешься.
Пока ток изучаю эт язык, так шо хочется попробовать "ручками" сделать. Хотя так проще, конечно.

Вот, триггер заделал на ней:

Код: Выделить всё

//Создание учетной записи пользователя
if ( $_SERVER['QUERY_STRING'] == "reg" and $t_adm == false ){
  $content = "&nbsp;&nbsp;&nbsp;Пожалуйста, введите желаемый логин и пароль.";
  $a = true;
  $_SESSION['t_usr'] = true;
};

if ( $_SERVER['QUERY_STRING'] == "login" and $_SESSION['t_usr'] == true ){
  $a = true;
  if ( $_POST['login'] == "" or $_POST['pass'] == "" ){
    $content = "&nbsp;&nbsp;&nbsp;Получены пустые формы.";
    } elseif ( db("users", 2, $_POST['login']) == true ){
    $content = "&nbsp;&nbsp;&nbsp;Пользователь с таким логином уже существует.";
    } else {
    $dbdata[] = $_POST['login'];   //login
    $dbdata[] = $_POST['pass'];    //pass
    $dbdata[] = "user";            //status
    db("users", 0, $dbdata);
    $content = "&nbsp;&nbsp;&nbsp;Учетная запись успешно создана. Теперь вы можите авторизироваться.";
    $_SESSION['t_usr'] = false;
  };
};
MySQL -- штука полезная. Поскольку этот проект, по моему, поддерживается сообществом програисто. то, думаю. возможно все... Но, пока на файлах... ( еще над в мануалах пориться )
Последний раз редактировалось baytuch Пт мар 18, 2011 14:42, всего редактировалось 1 раз.
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

dobs
HO Moderators
Сообщения: 2504
Зарегистрирован: Вс апр 09, 2006 14:42
Откуда: /home/Ukraine/Kiev
Контактная информация:

#9 Сообщение dobs » Чт мар 17, 2011 14:30

Мда как то все "сложно" сделано, не проще ли хранить логин авторизованного юзерав сессии, чем писать аля $_SESSION['t_usr'] = false;
и зачем потом еще в массиве $dbdata хранить это все...

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#10 Сообщение baytuch » Чт мар 17, 2011 14:47

Библиотека db("users", 0, $dbdata); работает с базой на файлах...
Массив создается для отправки в функцию, создания файла с учетной записью пользователя.
dobs писал(а): Мда как то все "сложно" сделано, не проще ли хранить логин авторизованного юзерав сессии, чем писать аля $_SESSION['t_usr']
Это триггер для работы сценария...

Я так вижу :)
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#11 Сообщение baytuch » Чт мар 17, 2011 18:49

Уже даже мона кое че публиковать с админки... Пока колупаюсь с мордой для фото галереи...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#12 Сообщение baytuch » Чт мар 17, 2011 21:21

Ребята, у меня тут небольшой конфликт. Конфликт устранил, но не могу понять причину конфликта. Пожалуйста, подскажите в чем он. Привожу фрагменты кода:

фрагмент морды админки:

Код: Выделить всё

function admin_panel($content, $mode){
echo "        <td valign='top'>\n";
echo "          <table border='0' cellpadding='0' cellspacing='0' class='content' id='content'>\n";
echo "            <tr>\n";
echo "              <td class='admin' id='admin'>\n";
echo "                <center>\n";
echo "                  <a href='index.php'>Текстовый контент</a>&nbsp;\n";
echo "                  <a href='index.php'>Блог</a>&nbsp;\n";
Тоже фрагмент с того же документа ( чуть ниже ) ( источник конфликта:

Код: Выделить всё

echo "                <select name='content'>\n";  <----------

echo "                  <option value=''>выберите контент</option>\n";
echo "                  <option value='1'>Мои службы</option>\n";
echo "                  <option value='2'>Проекты</option>\n";
echo "                  <option value='3'>О сайте</option>\n";
echo "                  <option value='4'>Контакты</option>\n";
echo "                  <option value='5'>Главная</option>\n";
echo "                  <option value='6'>text</option>\n";
echo "                  <option value='7'>text</option>\n";
echo "                </select>\n";
и компонент, где проявилась проблема

Код: Выделить всё

//Модуль работы с оформлением
[code]

var x_client=document.body.clientWidth;
var y_client=document.body.clientHeight;

var work_Width=x_client-x_client/15;
var content_width=work_Width-400;

var x_line=work_Width;
var y_line=y_client;

function height(){
                  return document.body.scrollHeight;
                 }

function display(){
                   document.all.line.style.height=height();
                   document.all.line.style.top=0;
                   document.all.line.style.left=x_line;
                   document.all.panel.style.width=work_Width;
                   document.all.main_menu.style.width=work_Width;
                   document.all.podval.style.width=work_Width;
                   document.all.content.style.width=content_width;
                  }

display();
display();

Траблы в опере и мозиле. Только переименовую выделенный фрагмент скажим в text всю прекрасно работает...

JavaScript - http://www.my-server.km.ua/works/my_pho ... .php?admin
Uncaught exception: TypeError: Cannot convert 'document.all.content.style' to object
Error thrown at line 23, column 19 in display() in http://www.my-server.km.ua/works/my_pho ... program.js:
document.all.content.style.width=content_width;
called from line 26, column 0 in http://www.my-server.km.ua/works/my_pho ... program.js:
display();


Вот...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

dobs
HO Moderators
Сообщения: 2504
Зарегистрирован: Вс апр 09, 2006 14:42
Откуда: /home/Ukraine/Kiev
Контактная информация:

#13 Сообщение dobs » Чт мар 17, 2011 21:43

никогда не юзал document.all возможно чет не так делаете, попробуйте jquery в нем все по проще...

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#14 Сообщение baytuch » Чт мар 17, 2011 21:59

Переименовал... Работает... :)

<select name='n_pos'>\n";

По повуду jquery, еще не изучал, но неоднократно слышал... Почитаем... Спасибо...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

baytuch
Сообщения: 925
Зарегистрирован: Сб мар 14, 2009 00:23
Откуда: пгт. Войтовцы
Контактная информация:

#15 Сообщение baytuch » Пт мар 18, 2011 11:59

Опять траблы: выгрузил на хостиг, скрипт не стартует. Подозрение на конфликт с скриптом банера. Буду разбираться... :roll:

JavaScript - http://www.my-services.km.ua/index.php
Inline script compilation
Syntax error at line 1 while loading:
<html>
^
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)

Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!

«ХО» – мое все.
А ты перевел свой домен на DNSSEC?

Slackware userИзображение

Ответить