Страница 2 из 2

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Вт ноя 05, 2013 13:21:17
dbanet
Да потому, что это фигня всякая.

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Вт ноя 05, 2013 13:59:24
blackx
Калыч, смотри тут

http://stackoverflow.com/questions/1576 ... sql-server
http://stackoverflow.com/questions/1631 ... a-database

Рекомендуют некий Red Gate SQL Data Generator. На две недели триалку можно получить.

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Вт ноя 05, 2013 17:47:34
dbanet
I've rolled my own data generator that generates random data conforming to regular expressions.
И это принятый ответ в первом вопросе. И это правильный ответ.

А вот платить за бредогенератор в БД -- это как раз " :facepalm: "

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Сб фев 01, 2014 20:39:37
kalobyte
внезапно я быдлокодю на пхп
задача такая
есть 3 линка вида <a href="/design/lang/de">de</a>
design это папка, в ней идех.пхп, который при помощи хтакцесс убирается
по идее линк выглядит так index.php?lang=de

при нажатии на линки, должно в куки записаться значение de и оно таки записывается, что видно в консоли браузера
однако на сцайте не меняется значение
но стоит перезагрузить страницу и значение меняется

где тут я туплю?
хотел сделать перезагрузку при помощи header, но сомневаюсь в правильности такого подхода
еще что-то есть про ob_start, но я так и не понял его смысла

короче что надо сделать, чтобы при нажатии на линк язык записался в куки и вывелся на экран без перезагрузки страницы?

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

<?
// обработчик при нажатии на линки
if(isset($_GET['lang'])) {
   $url = htmlspecialchars($_GET['lang']);
         switch($url){
           case "ru": language("ru"); break;
           case "de": language("de"); break;
           case "en": language("en"); break;
           default:   language("de");
         }
}

// обработчик установленных куков или вывод стандартный, если куки пустые
    if(isset($_COOKIE['lang']))
    {
        $cookie = $_COOKIE['lang'];

    }else{
        $cookie = "de";
    }

function language($language){

    setcookie('lang', $language, time()+604800, '/design', 'mysrv.sytes.net');
}

?>

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Документ без названия</title>
</head>

<body>

<h1>cookie <?= $cookie;?></h1>
<br>
<a href="/design/lang/de">de</a> | <a href="/design/lang/ru">ru</a> | <a href="/design/lang/en">en</a>


</body>
</html>

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Сб фев 01, 2014 20:57:03
kalobyte
сделал все же с перенаправлением, прозреваю быдлокод :facepalm: :oops:

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

<?
// обработчик при нажатии на линки
if(isset($_GET['lang'])) {
   $url = htmlspecialchars($_GET['lang']);
         switch($url){
           case "ru": language("ru"); break;
           case "de": language("de"); break;
           case "en": language("en"); break;
           default:   language("de");
         }
}

// обработчик установленных куков или вывод стандартный, если куки пустые
 function readcookie()
 {
    if(isset($_COOKIE['lang']))
    {
       return $cookie = $_COOKIE['lang'];

    }else{
       return $cookie = "de";
    }
 }

function language($language){

    setcookie('lang', $language, time()+604800, '/design', $_SERVER['HTTP_HOST']);
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
}

?>

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Документ без названия</title>
</head>

<body>

<h1>cookie <? echo readcookie();?></h1>
<br>
<a href="/design/lang/de">de</a> | <a href="/design/lang/ru">ru</a> | <a href="/design/lang/en">en</a>


</body>
</html>

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Вс фев 02, 2014 03:46:16
dbanet
Разберём ошибки в твоём коде. Не ошибка, но <? считается deprecated. Рекомендуется использовать <?php.

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

// обработчик при нажатии на линки
if(isset($_GET['lang'])) {
   $url = htmlspecialchars($_GET['lang']);
Нет смысла фильтрова $_GET['lang'] функцией htmlspecialchars(). Обычно её используют, когда хотят вывести пользовательский ввод и недопустить исполнения пользовательского HTML.

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

         switch($url){
           case "ru": language("ru"); break;
Функция language() ещё не объявлена. Рекомендуется объявлять функции до использования.

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

           case "de": language("de"); break;
           case "en": language("en"); break;
           default:   language("de");
         }
Всю свитч-конструкцию можно написать лучше, определив массив поддерживаемых языков, а при проверке $url использовать функцию in_array(). Тогда добавление поддержки нового языка ограничится добавлением нового элемента в массив, и не придётся писать целую строчку case такой-то: language(язык такой-то); break;. Достаточно будет дописать в определение массива ,'язык такой-то'.

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

}

// обработчик установленных куков или вывод стандартный, если куки пустые
 function readcookie()
 {
    if(isset($_COOKIE['lang']))
    {
       return $cookie = $_COOKIE['lang'];
А вот тут какая-никакая, но XSS. Значение cookie не обрабатывается и просто так выводится на печать.

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

    }else{
       return $cookie = "de";
    }
 }

function language($language){

    setcookie('lang', $language, time()+604800, '/design', $_SERVER['HTTP_HOST']);
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
Редирект не нужен. Что нужно: поставить переменную, в которой будет значение языка. При этом нужно значение этой переменной запомнить и восстанавливать каждый раз (из кук). Значит так: нужно обрабатывать два входных параметра -- куку и гет-параметр. Гет-параметр будет рулить кукой. Если гет неверен, то считаем, что он равен дефолтовому языку (имхо, самое нормальное поведение, но можно легко поменять на...), если гет пуст, то тогда считаем, что значение надо брать из куки: если кука пуста, или установлена неверно, то ставим куку в дефолтовый язык. При этом значние $lang сначала ставим в значение куки, но если значение гет-параметра и куки неравны друг другу, то во-первых ставим правильную куку, а во вторых -- устанавливаем в это значение $get. Как-то так. Должно работать:

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

<?php
define('DEFAULT_LANGUAGE','de'); // what language to set if can't decide
$supported_languages=array('ru','de','en');
/**/
function remember_language($l){
   setcookie('lang',$l,time()+604800,'/libs','192.168.0.3');
   return $l;
}
/**/
$urllang=isset($_GET['lang'])?(in_array($_GET['lang'],$supported_languages)?$_GET['lang']:DEFAULT_LANGUAGE):"";
$lang=$cookielang=isset($_COOKIE['lang'])?(in_array($_COOKIE['lang'],$supported_languages)?$_COOKIE['lang']:""):"";
if(($urllang===$cookielang)&&($urllang==="")) $lang=remember_language(DEFAULT_LANGUAGE);
elseif(($urllang!==$cookielang)&&($urllang!=="")) $lang=remember_language($urllang);
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Документ без названия</title>
</head>

<body>

<h1>cookie <?=$lang?></h1>
<br />
<a href="/design/lang/de">de</a> | <a href="/design/lang/ru">ru</a> | <a href="/design/lang/en">en</a>


</body>
</html>

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Вс фев 02, 2014 07:52:17
kalobyte
а куда делись расово верные фигурные скобки? это теперь тоже не модно?
а то я нихера не могу понять
и зачем аж 3 знака равно? чтоб уж точно не было сомнений в равенстве?

твой код работает, только я нихера не могу его прочесть и понять
перепиши эту строку нормально
$urllang=isset($_GET['lang'])?(in_array($_GET['lang'],$supported_languages)?$_GET['lang']:DEFAULT_LANGUAGE):"";

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Вс фев 02, 2014 19:23:57
dbanet
kalobyte писал(а):а куда делись расово верные фигурные скобки? это теперь тоже не модно?
а то я нихера не могу понять
и зачем аж 3 знака равно? чтоб уж точно не было сомнений в равенстве?

твой код работает, только я нихера не могу его прочесть и понять
перепиши эту строку нормально
$urllang=isset($_GET['lang'])?(in_array($_GET['lang'],$supported_languages)?$_GET['lang']:DEFAULT_LANGUAGE):"";
Три знака равно -- точное равенство. Ибо PHP уж очень иногда перегибает с неявными преобразованиями, и я не хочу думать о том, что может произойти, когда я проверяю именно на точное равенство ;)

По поводу фигурных скобок -- если у тебя одна комада под условием, то фигурные скобки только загромождают код.

По поводу последней строчки -- почитай про тернарный оператор. Вот "нормально" -- ифами:

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

if(isset($_GET['lang']))
   if(in_array($_GET['lang'],$supported_languages))
      $urllang=$_GET['lang'];
   else
      $urllang=DEFAULT_LANGUAGE;
else
   $urllang="";
Или, если уж тебе так хочется ;), то с фигурными скобки, хотя тут тернарный к месту:

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

if(isset($_GET['lang'])){
   if(in_array($_GET['lang'],$supported_languages)){
      $urllang=$_GET['lang'];
   }
   else{
      $urllang=DEFAULT_LANGUAGE;
   }
}
else{
   $urllang="";
}

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Вс фев 02, 2014 19:56:47
kalobyte
про пропуск скобок для одной строки я в курсе, но остальное выглядит вырвиглазно
синтаксис сишный он довольно читабельный в отличии от других языков типа бейсика или паскаля

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Вс фев 02, 2014 21:57:40
dbanet
kalobyte писал(а):про пропуск скобок для одной строки я в курсе, но остальное выглядит вырвиглазно
синтаксис сишный он довольно читабельный в отличии от других языков типа бейсика или паскаля
А это и есть сишный синтаксис. Если разве что не принимать во внимания операторы === и !==, то всё остальное -- верный си.

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Чт фев 20, 2014 21:55:50
kalobyte
я тут внезапно ощутил озарение, попав под влияние эгрегора статичных сцайтов
мой бложик еле ворочается на дешевых хостингах и я подумал, а нет ли генераторов статичных файлов
и таки есть на разных костылях
нашел я docpad, который написан на яваскрипте и использует движок node.js

стал я ставить его под виндовс и нихера не понял
вот есть там пакет .мси, который содержит стандартные модули и нпм

стал я читать мануалы по докпаду и там пишут про установку докпада
sudo npm install -fg docpad@6.21

когда пишеш -г, то он ставится глобально
у меня он поставился в папку пользователя appdata :facepalm:

вот еще чего пишут в другой статье

После того как мы определили какие библиотеки нам нужны, в файле package.json, нам надо их установить. Установка библиотек делается командой

$ npm install

Пишем для запуска генерирования:

docpad run

И ждём успешного окончания сборки) Если все ОК, то идём по адресу http://localhost:9778 и наблюдаем наш сайт / блог. И да. Если при генерировании вылазят какие то ошибки, то обычно интуитивно понятно, что он не может сделать и как решить проблему.

Итак, сайт должен работать, теперь у нас есть папки:

node_modules - где лежат установленные библиотеки
out - тут собственно сам сгенерированный сайт.

я так нихера не понял
node_modules это модули ноды или приложения? должны ли все подпапки в node_modules быть в одной главной папке node_modules?
или же создается отдельно папка приложения в любом месте и потом вызывается npm install, который читает в этой же папке файл package.json и создает в ней node_modules с нужными модулями для этого приложения?

а что делать, если я хочу делать много сцайтов и мне не надо каждый раз ставить одни и те же модули
ведь они не используются на веб сервере хостинга для генерации хтмл, весь хлам будет лежать у меня

как эту сраную ноду поставить один раз в одно место и чтобы все модули любых проектов лежали глобально и все это лежало там, где скажу я, а не где оно захотит?

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Ср окт 01, 2014 21:42:19
kalobyte
внезапно опять я
вы только не смейтесь, но творится какая-то херня

недавно работало, потом я поменля конфиг апача малось и все поломалось
потом я вернул, но не работает

короче не работает .htaccess
в файле хостс прописано autoconfig.bk.local 192.168.178.100

вхост самый первый
<VirtualHost *:80>

DocumentRoot f:/autoconfig
ServerName autoconfig.bk.local

<Directory "f:/autoconfig">
Options indexes followsymlinks
Order allow,deny
allow from all
</Directory>
</VirtualHost>
по такому же шаблону сделаны другие виртуальные хосты

сам файл

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

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /

RewriteRule ^user\/(.*)$               index.php?user=$1    [L,QSA, NC]
RewriteRule ^mail/config-v1.1.xml$    index.php?xml        [L]
ErrorDocument 404 /
при запросе http://autoconfig.bk.local/user/sdf
должен отдаваться файл all.js на скачку

вот скрипт

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

<?php

if (isset($_GET['user'])){
header ('Content-type: application/javascript');
header('Content-Disposition: attachment; filename="all.js"');
echo "user ".$_GET['user'];

} else { echo 'lockPref("mail.rights.version", 1);';}


if ($_SERVER['QUERY_STRING']=="xml") echo "xml";
?>
скрипт рабочий

если я делаю http://autoconfig.bk.local/?xml
то выходит lockPref("mail.rights.version", 1);xml

а вот переменаая гет не обрабатывается :shock:

просмотрел доку http://www.cyberforum.ru/apache/thread652774.html
все перепробовал, но не работает
где я туплю?

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Ср окт 01, 2014 22:03:37
kalobyte
ну вот, сам отвечаю
правильный конфиг

<VirtualHost *:80>
DocumentRoot f:/autoconfig
<Directory "f:/autoconfig">
Options indexes followsymlinks
AllowOverride all
Order allow,deny
allow from all
</Directory>
ServerName autoconfig.bk.local
</VirtualHost>

ServerName autoconfig.bk.local должен быть в самом низу, а не в верху, иначе не работает :shock:

теперь еще вопрос, но наверное его не решить как я хочу
а хочу я вот чего
у меня есть почтовые клиент thunderbird и там когда вводиш свою почту типа aaa@host.tld, товеб сервер может высрать хмл с настройками почты
у меня есть почта типа aaa.bb, но она вообще на левом сервере и домен aaa.bb имеет свой ип, который у меня прописан в днс и там работает сцайт, который тоже не у меня
т.е. я не могу прописать этот домен, чтобы он указывал на мой веб сервер с конфигом

и есть еще второй домен zzz.yy, где будет другая почта и тоже нельзя прописать у себя в днс

а вот как бы сделать в thunderbird так, чтобы он запрашивал конфиг у меня?
он запрашивает такой урл autoconfig.домен почты/mail/autoconfig-v1.1.xml

вопрос такой: можно ли каким макаром на днс или в апаче сделать так, чтобы подобные запросы на любой домен почты шли бы на мой сервер? но чтобы домены почт не были прописаны в днс
т.е. могу ли я сделать днс запись типа а на полный адрес autoconfig.aaa.bb и autoconfig.zzz.yy на свой ип 192.168.178.100?

и потом мне надо выцеплять домены после autoconfig и передавать их в скрип, чтобы скрипт выдал нужных хмл
как написать этот .htaccess? можно было бы конечно распарсить и в пхп, но хочу через веб сервер
сейчас нет нормального днс, юзаю только хостс в виндовсе
вот и спрашиваю насчет записей в днс

Re: html5 + javascript + css + jquery мои вопросы

Добавлено: Пн июн 01, 2015 23:23:18
kalobyte
blackx писал(а):
kalobyte писал(а):так если в вордпрессе эти связи нигде не хранятся, то и реверс не поможет, я пробовал уже
Так я тебе и говорю, они не нигде не хранятся, их там тупо нет.
ну вот, спустя кучу времени я решил таки досмотреть курс "специалиста" по бд
разрешился вопрос с этими связями
почему-то у меня в голове сложилось, что связи из модели так же переносятся в реальную бд и когда ты что-то выбираеш с условием where, то бд сама строит условия join on на основании связей

какой же наивный лох я был :facepalm: :)))
---

надо сказать, что курс довольно хороший, портит только все мерзкий звук и лектор, который страдает херней в чорной консоли
еще бы зеленый шрифт сделал, чтобыкакухакиров

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

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

например я хочу сделать вебприложение - телефонную книгу для воип телефонов
естественно, что телефоны все разные и у них разные интерфейсы
точнее обычно они дергают хттп, но кто-то хочет хмл, кто-то джейсон, кто-то вообще свой изврат

как сделать так, чтобы можно было добавить новый телефон и при этом поиметь 0 гимора
т.е. не добавлять новое поле в базу или таблицу отдельную под каждый тип телефона

или вот хочу написать учет деталей в коробках
есть у меня 4 коробки одинаковый с матрицей 5х12 что ли и 1 большой ящик внизу
а вдруг я потом куплю другие ящики или например есть у меня для смд коробочки разного конфига
как мне сппроектировать бд, чтобы я мог указать столбцы, колонки и еще отдельные ящики
или вообще один ящик только, без матрицы ящичков