X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

История благодарностей участнику yury_mw. Поблагодарили: 0 раз(а)
Дата поста: В теме: За сообщение: Поблагодарили:
16.3.2010, 18:00 Как правильно прописать ссылку
(sc2r2bey @ 15.3.2010, 22:30) *
он ругается на <hr id="readmore" />, вот так работает <hr /> :P

sc2r2bey,
экранировать надо вложенные кавычки:
<a href="java script:;" onmousedown="tinyMCE.execCommand('mceInsertContent',false,'<hr id=\'readmore\' />');">[Подробнее...]</a>


Спасибо сказали: (1)
14.3.2010, 1:40 Расчет сколько лет, зная дату рождения
ищу функцию
[quote name='sc2r2bey' post='2618595']выдает ошибку Deprecated: Function split() is deprecated in Z:homedemowwwdemo.php on line 7[/quote]
sc2r2bey, вы, наверное, свежий Денвер с PHP 5.3 поставили?
Короче, замените строку
[php]$birth = split ('[/.-]', $birth_date);[/php] на
[php]$birth = preg_split('/[.-/]/', $birth_date);[/php]и ошибки уйдут.

А проблема связана с тем, что при переходе к PHP 5.3.x многие функции переведены в разряд устаревших (подлежащих удалению в будущем). В новой версии php их еще можно заставить работать настройками в файле php.ini, но с версии PHP 6 разработчики обещают убрать такие функции совсем.
Подробности см, например, тут: http://php.su/php/?migration53
Следующие директивы php.ini будут отмечены как НЕИСПОЛЬЗУЕМЫЕ (DEPRECATED) в PHP 5.3 и удалены в PHP 6.0.0
  • define_syslog_variables - теперь всегда OFF.

  • register_globals - теперь всегда OFF. Наконец-то! =)

  • register_long_arrays - $HTTP_*_VARS навсегда уйдут в небытие.

  • safe_mode - безопасный режим. По умолчанию OFF.

  • magic_quotes_gpc
    magic_quotes_runtime
    magic_quotes_sybase - будут удалены при переходе версии.

  • Теперь в php.ini файле нельзя будет применять коментарии, начинающиеся с #

Так же следующие функции:
  • call_user_method() (используйте call_user_func())

  • call_user_method_array() (используйте call_user_func_array())

  • define_syslog_variables()

  • dl()

  • ereg() (используйте preg_match())

  • ereg_replace() (используйте preg_replace())

  • eregi() (используйте preg_match() с модификатором 'i')

  • eregi_replace() (используйте preg_replace() с модификатором 'i')

  • set_magic_quotes_runtime() и ее синоним(alias) magic_quotes_runtime()

  • session_register() (используйте $_SESSION)

  • session_unregister() (используйте $_SESSION)

  • session_is_registered() (используйте $_SESSION)

  • set_socket_blocking() (используйте stream_set_blocking())

  • split() (используйте preg_split())

  • spliti() (используйте preg_split() с модификатором 'i')

  • sql_regcase()

  • mysql_db_query() (используйте mysql_select_db() и mysql_query())

  • mysql_escape_string() (используйте mysql_real_escape_string())

И следующие возможности:
  • В new передача параметра по ссылке в переменную

  • Вызов call-time функций, методов и классов по ссылке

  • Использование {} для указания смещения внутри строки. Теперь это можно сделать с помощью [] (как в массиве)

Следует позаботиться о замене функций аналогами, описанными выше и переписать скрипты.[/quote]


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Спасибо сказали: (2)
11.3.2010, 15:42 Скрипт для определения браузера и ОС
А так же определить версии. Помогите найти.
(kuku @ 11.3.2010, 3:50) *
Прощу прощения, что влез, но мне очень нужна помощь помогите мне пожалуйста нужен скрипт для определения типов и версий браузеров и опрационок посетителей сайта, который мне полученную инфу запишет в базу подскажите скриптик оооооооочень нужно!!!!!!!!!!!!!!!!!!!!!!!!!1

kuku,
$_SERVER['HTTP_USER_AGENT'] вам в руки.
Ниже несколько примеров содержимого этой переменной для разных сочетаний осей и браузеров:
(Win XP + IE8)
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

(Win XP + Opera 10.50)
Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.22 Version/10.50

(Win XP + Firefox 3.6)
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)

(Win2k + IE 5.01)
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

(Win98 + Opera 6.04)
Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [ru]

(Linux под иксами с NS 7.1)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1


Немного кода на php (определяем тип и версию браузера и тип ОС, версию оси - вам на факультатив)
[php]<?php

//============== Тип и версия браузера ==============
function browser_info($agent) {

// Cигнатуру Opera ищем раньше ИЕ, т.к. опера иногда раньше обманывала,
// что она не опера, а ИЕ и добавляла себе ИЕшную сигнатуру "MSIE")

// Ищем сигнатуру Opera старый вариант: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [ru]
if (ereg( 'Opera ([0-9].[0-9]{1,2})', $agent, $version)) :
$browse_type = "Opera";
$browse_version = $version[1];

// Ищем сигнатуру Opera новый вариант (версия живет отдельно): Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.22 Version/10.50
elseif (ereg( 'Opera/', $agent)):
ereg( 'Version/([0-9]{1,2}.[0-9]{1,2})', $agent, $version);
$browse_type = "Opera";
$browse_version = $version[1];

// Ищем сигнатуру Internet Explorer
elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $agent, $version)):
$browse_type = "IE";
$browse_version = $version[1];

// Ищем сигнатуру Firefox
elseif (ereg('Firefox/([0-9].[0-9]{1,2})', $agent, $version)):
$browse_type = "Firefox";
$browse_version = $version[1];

// Ищем сигнатуру Chrome
elseif (ereg( 'Chrome/([0-9].[0-9]{1,2})', $agent, $version)) :
$browse_type = "Chrome";
$browse_version = $version[1];

// Ищем сигнатуру Netscape
elseif (ereg( 'Netscape/([0-9].[0-9]{1,2})', $agent, $version)) :
$browse_type = "Netscape";
$browse_version = $version[1];

// Если все мимо
// значит наша функция этот браузер не знает
else :
$browse_type = "Unknown";
$browse_version = "Unknown";
endif;

// Возвращаем тип и версию браузера в виде массива
return array ($browse_type, $browse_version);
}

//============== Тип операционной системы ==============
function opsys_info($agent) {

// Ищем сигнатуру Windows
if ( strstr ($agent, 'Win') ) :
$opsys = "Windows";

// Ищем сигнатуру Linux
elseif ( strstr($agent, 'Linux') ) :
$opsys = "Linux";

// Ищем сигнатуру UNIX
elseif ( strstr ($agent, 'Unix') ) :
$opsys = "Unix";

// Ищем сигнатуру Macintosh
elseif ( strstr ($agent, 'Mac') ) :
$opsys = "Macintosh";

// Ничего не нашли - хз какая ось
else :
$opsys = "Unknown";
endif;

// Возвращаем информацию об оси
return $opsys;
}

$agent = $_SERVER['HTTP_USER_AGENT'];
echo "<pre>";
print_r (browser_info($agent));
print_r (opsys_info($agent));
echo "</pre>";

?>[/php]


Спасибо сказали: (1)
1.3.2010, 17:58 Можно ли вернуться обратно на страницу по ссылке
Возможно ли вернуться назад?
LOla,
сравните строки попарно (подсказка: они таки разные):
http://skyeterrier.spb.ru/imags/images/baner-mini.jpg - такого рисунка у вас нет
http://skyeterrier.spb.ru/imegs/images/baner-mini.jpg - такой рисунок у вас есть

http://skyeterrier.spb.ru/imags/images/sk-baner-big.jpg - такого рисунка у вас нет
http://skyeterrier.spb.ru/imegs/images/sk-baner-big.jpg - такой рисунок у вас есть


Спасибо сказали: (1)
20.2.2010, 16:46 Расчет сколько лет, зная дату рождения
ищу функцию
Исправленный вариант (без ограничений на диапазон дат рождения):
[php]<html>
<body>
<?php

function age($birth_date)
{
$birth = split ('[/.-]', $birth_date);
$now = getdate();
$age = $now['year'] - $birth[2];
if($now['mon'] < $birth[1])
$age--;

if($now['mon'] == $birth[1])
if($now['mday'] < $birth[0])
$age--;

return $age;
}

//выводит строку "год"/"года"/"лет" в зависимости от числового значения возраста, например: "22 года" или "45 лет"
function s_years($age) {
$age = abs($age);
$t1 = $age % 10;
$t2 = $age % 100;
return ($t1 == 1 && $t2 != 11 ? "год" : ($t1 >= 2 && $t1 <= 4 && ($t2 < 10 || $t2 >= 20) ? "года" : "лет"));
}



$s_bdate = "25.08.1530";
$age = age($s_bdate);
echo "Если бы Иван Грозный, родившийся $s_bdate, не умер, то сейчас ему было бы $age " . s_years($age);
$s_bdate = "26-08-1828";
$age = age($s_bdate);
echo "<br>Лев Толстой родился $s_bdate. Это было $age " . s_years($age) . " назад.";
$s_bdate = "13/11/1729";
$age = age($s_bdate);
echo "<br>А. В. Суворов — великий русский полководец, не потерпевший ни одного поражения в своей военной карьере, родился $s_bdate. С тех пор прошло $age " . s_years($age);
?>
</body>
</html>[/php]


Спасибо сказали: (1)
16.2.2010, 14:08 Помогите доработать функцию, которая обрезает изображение
sc2r2bey,
примерно, так
[php]/**
/* @desc функция вырезает на картинке произвольную отцентрованную область
/* @param $filename путь к файлу с исходной картинкой
/* @param $w нужная ширина "обрезка"
/* @param $h нужная высота "обрезка"
/* @param $target_filename куда записывать результат. Если не указать, то перепишется исходный файл.
*/
function evokeAlignedArea($filename,$w,$h,$target_filename=null){
$thumb = imagecreatetruecolor($w, $h);
$bgc = imagecolorallocate($thumb, 255, 255, 255);
imagefilledrectangle($thumb, 0, 0, $w, $h, $bgc);
$source = imagecreatefromjpeg($filename);
$size = GetImageSize($filename);
$x = round(($size[0]-$w)/2);
$y = round(($size[1]-$h)/2);
imagecopyresampled($thumb, $source, 0, 0, $x, $y, $w, $h, $w, $h);
$target_filename = is_null($target_filename)?$filename:$target_filename;
imagejpeg($thumb,$target_filename);
imagedestroy($thumb);
imagedestroy($source);
return true;
}
?>[/php]
(работоспособность исходной функции не проверял, только убрал из параметров функции $x,$y и добавил вычисление центральной области картинки)
опять же, желательно добавить проверки на то,
что $filename - это картинка и что делать, если это не так,
[php] $size = @GetImageSize($filename); if ($size) {} else {}[/php]
что $w, $h - не превышают размеров исходного изображения и что делать, если это не так



Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Спасибо сказали: (2)
6.2.2010, 13:54 Как выравнить всплывающее окно?
(phpuser @ 5.2.2010, 20:52) *
Народ помогите выровнить poup окно, а то как то окошко тупо прижимается к левому верхнему углу.

phpuser,
вы не уточнили, как именно должно быть выровнено всплывающее окно.
Например, отцентровать окно можно примерно так:
<html>
<head>
<title>Новое окно</title>
<script type="text/javascript" language="javascript">
var newWindow;

function makeNewWindow() {

//задаем ширину и высоту окна
w = 500; h = 600;
//вычисляем положение окна в зависимости от разрешения экрана
lPos = (screen.width) ? (screen.width-w)/2 : 0;
tPos = (screen.height) ? (screen.height-h)/2 : 0;

if (!newWindow || newWindow.closed) {
//выводим окно
newWindow = window.open("","","height="+h+",width="+w+",top="+tPos+",left="+lPos);
// force small delay for IE to catch up
setTimeout("writeToWindow()", 50);
} else {
// window's already open; bring to front
newWindow.focus();
}
}

function writeToWindow() {
// assemble content for new window
var newContent = "<html><head><title>One Sub Window<\/title><\/head>";
newContent += "<body><h1>This window is brand new.<\/h1>";
newContent += "<\/body><\/html>";
// write HTML to new window document
newWindow.document.write(newContent);
newWindow.document.close(); // close layout stream
}

</script>
</head>
<body>
<a href="#" onClick="makeNewWindow()"><img style="border:none;" align="left" src="button.png" /></a>
</body>
</html>

Потестено в ИЕ4-8, ФФ 3, (в этих браузерах всплывающее окно располагается по центру экрана монитора)
Опера 10 (ведет себя альтернативно: позиционирование всплывающего окна ограничено рамками родительского окна, а если всплывающее не влезает в родительское - открывает новую вкладку).


Спасибо сказали: (1)
5.2.2010, 0:05 Ошибка с функциями
(phpuser @ 4.2.2010, 22:30) *
В теле страницы вызываю:
[php]$idc = $myrow3['id'];
function sumcat($idc);
/* И всё это в цикле */[/php]
А вот сама ошибка: Parse error: syntax error, unexpected ';', expecting '{' in Z:\home\localhost\www\php\menu.php on line 37
При чём ошибка возникает на строке вызова функции.

phpuser,
слово function лишнее.
А ругательство об ошибке "unexpected ';', expecting '{' " в переводе на человеческий язык гласит:
"ожидалась '{', а нарисована ';' "
т.е. строка, начинающаяся со слова function, подразумевает, что дальше будет описание функции.
А вы явно хотели вызвать функцию, а не описать.


Спасибо сказали: (1)
27.1.2010, 14:03 FTP или сервер
Тотал — вполне себе хороший.
Еще есть WinSCP — кое в чем даже удобнее Тотала.


Спасибо сказали: (1)
24.1.2010, 12:48 PHP-функция для вычисления разницы между датами
Приведу пример из своей практики, он вроде похож на то, что требуется.
Надо было выводить дату события одним цветом, если событие запланировано, но еще не случилось и другим, если событие уже произошло
[php]<?php
function color_date($key_date)
{
// количество секунд, на которое _текущая_дата_ отличается от 1 января 1970г.
$current_time = time();

// количество секунд, на которое _контрольная_дата_ отличается от 1 января 1970г. и добавляем 3 часа для времени по МСК
$key_time = strtotime($key_date)+10800;

// если контрольная дата больше текущей, то цвет "#993300", нет - "#330033"
echo "color=\"#" . ($key_time > $current_time ? "993300" : "330033") . "\"";
}
?>

...

<br><font <?php color_date("12.02.2010"); ?> >2 февраля 2010</font>, Описание события
<br><font <?php color_date("27.10.2009"); ?> >25 — 27 ноября 2009</font>, Описание другого события[/php]


Спасибо сказали: (1)
14.1.2010, 21:06 Мелкое окно!
Rashambik, примерно, такой:
<A href="page.htm" onclick="window.open('page.htm','pageName','width=500, height=500')">link</A>

Детали см тут: http://javascript.ru/window.open


Спасибо сказали: (1)
13.12.2009, 11:50 Можно ли вернуться обратно на страницу по ссылке
Возможно ли вернуться назад?
LOla, именно так и пишем, только пробел надо убрать между "java" и "script".
Как правильно заметил ZiTosS, команда history.back(); просто лезет в историю браузера и показывает предыдущую посещенную страницу (если она была) и место в этой странице, с которого был произведен переход на текущую страницу.

См. также в справочнике: http://javascript.ru/window.history


Спасибо сказали: (2)
11.12.2009, 11:33 Можно ли вернуться обратно на страницу по ссылке
Возможно ли вернуться назад?
(LOla @ 10.12.2009, 22:06) *
есть текст, в тексте ссылка которая уходит на другую страницу, на этой страницк статья прочитав которую человек жмёт "Назад" и его возвращают на первую страницу.
Как это сделать я знаю, а как сделать что бы возврат был именно к тому месту в тексте от которого ушёл по ссылке.

<a href="java script:history.back();">Назад</a>
Примечание: форум принудительно делит слово "javascript" в хтмл-конструкциях на два. В правильном коде следует писать его слитно.

Сработает:
* если включен javascript
* если таки была страница, с которой была вызвана страничка с нашей ссылкой "Назад"
* если посетитель больше не кликал по ссылкам, например, для навигации внутри странички с ссылкой "Назад"
Возврат будет именно к тому месту, если будет возможность прокрутить страницу к этому месту (будет достаточно материала после точки возврата)

ZiTosS, проблем с кроссбраузерностью данного способа не встречал, использовал его еще на ИЕ4, и щас потестил на современных ИЕ8, ФФ3.5 и О10 - работает одинаково.


Спасибо сказали: (1)
7.12.2009, 18:35 Защита от накруток.
Как организовать максимально надежно?
ZiTosS,
100% защиты естественно нет, особенно при анонимном голосовании и пока каждому человеку не вживлен в голову ид-чип.
Но. Можно придумать алгоритм минимизирующий накрутки:
1. Не показывать голосующему, что ты засек факт накрутки, для чего: либо выводить текущие результаты с запаздыванием, либо вообще результаты не показывать до окончания голосования
2. Использовать несколько фильтров одновременно (уже упоминавшиеся IP, сессия, cookie + использовать дополнительно браузер, разрешение экрана, ось) и анализировать скриптом эту инфу на предмет подозрительности поданных голосов.
3. Использовать скрипты по анализу действий голосовавшего (например, если голосованием требуется оценить статью, смотрим сколько времени прошло с момента открытия страницы со статьей и оцениваем: успеет ли посетитель за это время статью прочесть, или сравниваем количество загрузок страницы с оцениваемым материалом с количеством кликов по голосовалке)
4. Еще подумать и добавить пару пунктов по ситуации, в зависимости от соотношения (трудозатраты программирования и анализа)/(важность точности голосования)


Спасибо сказали: (1)
4.12.2009, 19:35 Как обрезать строку?
[php]<?php
$string = "index.php?module=news&page=2";

echo substr($string, 0, strpos($string, "&"))
?>[/php]


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Спасибо сказали: (1)
11.9.2009, 21:00 Ошибка синтакиса HEREDOC
Вячеслав,
закрывающий идентификатор при использовании heredoc-синтаксиса должен начинаться в первом столбце строки и вообще кроме него ничто не должно находится в этой строке, т.е. правильно так:
[php]HERE;[/php]
а так неправильно:
[php] HERE;[/php]
и так тоже неправильно:
[php]HERE; $var=1;[/php]
Подробнее см тут: HEREDOC


Спасибо сказали: (1)
2.9.2009, 21:30 Фотогалерея на JavaScript (javascript фотогалерея)
kolesgan,
Читаем инструкцию на страничке: http://devkick.com/lab/galleria/.
Скачиваем, складируем в правильные места и вписываем все что она велит на чистом английском языке.

Если использовать настройки скрипта по умолчанию, то получится так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Galleria Demo</title>
<link href="galleria.css" rel="stylesheet" type="text/css" media="screen">
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="jquery.galleria.js"></script>
<script type="text/javascript"> jQuery(function($) { $('ul.gallery').galleria(); }); </script>
</head>
<body>
<ul class="gallery">
<li><img src="img/flowing-rock.jpg" alt="Flowing Rock" title="Flowing Rock Caption"></li>
<li><img src="img/stones.jpg" alt="Stones" title="Stones - from Apple images"></li>
<li class="active"><img src="img/grass-blades.jpg" alt="Grass Blades" title="Apple nature desktop images"></li>
<li><img src="img/ladybug.jpg" alt="Ladybug" title="Ut rutrum, lectus eu pulvinar elementum, lacus urna vestibulum ipsum"></li>
<li><img src="img/lightning.jpg" alt="Lightning" title="Black & White"></li>
<li><img src="img/lotus.jpg" alt="Lotus" title="Fusce quam mi, sagittis nec, adipiscing at, sodales quis"></li>
<li><img src="img/mojave.jpg" alt="Mojave" title="Suspendisse volutpat posuere dui. Suspendisse sit amet lorem et risus faucibus pellentesque."></li>
<li><img src="img/pier.jpg" alt="Pier" title="Proin erat nisi"></li>
<li><img src="img/sea-mist.jpg" alt="Sea Mist" title="Caption text from title"></li>
</ul>

</body>
</html>

Если хочется, чтоб было так как в демо1, то так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Galleria Demo 1</title>
<link href="galleria.css" rel="stylesheet" type="text/css" media="screen">
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="jquery.galleria.js"></script>
<script type="text/javascript"> jQuery(function($) { $('ul.gallery').galleria(); }); </script>
<script type="text/javascript">

jQuery(function($) {

$('.gallery_demo_unstyled').addClass('gallery_demo'); // adds new class name to maintain degradability

$('ul.gallery_demo').galleria({
history : true, // activates the history object for bookmarking, back-button etc.
clickNext : true, // helper for making the image clickable
insert : '#main_image', // the containing selector for our main image
onImage : function(image,caption,thumb) { // let's add some image effects for demonstration purposes

// fade in the image & caption
if(! ($.browser.mozilla && navigator.appVersion.indexOf("Win")!=-1) ) { // FF/Win fades large images terribly slow
image.css('display','none').fadeIn(1000);
}
caption.css('display','none').fadeIn(1000);

// fetch the thumbnail container
var _li = thumb.parents('li');

// fade out inactive thumbnail
_li.siblings().children('img.selected').fadeTo(500,0.3);

// fade in active thumbnail
thumb.fadeTo('fast',1).addClass('selected');

// add a title for the clickable image
image.attr('title','Next image >>');
},
onThumb : function(thumb) { // thumbnail effects goes here

// fetch the thumbnail container
var _li = thumb.parents('li');

// if thumbnail is active, fade all the way.
var _fadeTo = _li.is('.active') ? '1' : '0.3';

// fade in the thumbnail when finnished loading
thumb.css({display:'none',opacity:_fadeTo}).fadeIn(1500);

// hover effects
thumb.hover(
function() { thumb.fadeTo('fast',1); },
function() { _li.not('.active').children('img').fadeTo('fast',0.3); } // don't fade out if the parent is active
)
}
});
});

</script>
<style media="screen,projection" type="text/css">

/* BEGIN DEMO STYLE */
*{margin:0;padding:0}
body{padding:20px;background:white;text-align:center;background:black;color:#bba;font:80%/140% georgia,serif;}
h1,h2{font:bold 80% 'helvetica neue',sans-serif;letter-spacing:3px;text-transform:uppercase;}
a{color:#348;text-decoration:none;outline:none;}
a:hover{color:#67a;}
.caption{font-style:italic;color:#887;}
.demo{position:relative;margin-top:2em;}
.gallery_demo{width:702px;margin:0 auto;}
.gallery_demo li{width:68px;height:50px;border:3px double #111;margin: 0 2px;background:#000;}
.gallery_demo li div{left:240px}
.gallery_demo li div .caption{font:italic 0.7em/1.4 georgia,serif;}

#main_image{margin:0 auto 60px auto;height:438px;width:700px;background:black;}
#main_image img{margin-bottom:10px;}

.nav{padding-top:15px;clear:both;font:80% 'helvetica neue',sans-serif;letter-spacing:3px;text-transform:uppercase;}

.info{text-align:left;width:700px;margin:30px auto;border-top:1px dotted #221;padding-top:30px;}
.info p{margin-top:1.6em;}

</style>
</head>
<body>
<h1>Galleria Demo 01</h1>
<div class="demo">
<div id="main_image"></div>
<ul class="gallery_demo_unstyled">
<li><img src="img/flowing-rock.jpg" alt="Flowing Rock" title="Flowing Rock Caption"></li>
<li><img src="img/stones.jpg" alt="Stones" title="Stones - from Apple images"></li>
<li class="active"><img src="img/grass-blades.jpg" alt="Grass Blades" title="Apple nature desktop images"></li>
<li><img src="img/ladybug.jpg" alt="Ladybug" title="Ut rutrum, lectus eu pulvinar elementum, lacus urna vestibulum ipsum"></li>
<li><img src="img/lightning.jpg" alt="Lightning" title="Black & White"></li>
<li><img src="img/lotus.jpg" alt="Lotus" title="Fusce quam mi, sagittis nec, adipiscing at, sodales quis"></li>
<li><img src="img/mojave.jpg" alt="Mojave" title="Suspendisse volutpat posuere dui. Suspendisse sit amet lorem et risus faucibus pellentesque."></li>
<li><img src="img/pier.jpg" alt="Pier" title="Proin erat nisi"></li>
<li><img src="img/sea-mist.jpg" alt="Sea Mist" title="Caption text from title"></li>
</ul>
<p class="nav"><a href="#" onclick="$.galleria.prev(); return false;">« previous</a> | <a href="#" onclick="$.galleria.next(); return false;">next »</a></p>
</div>

</body>
</html>



Спасибо сказали: (1)
21.8.2009, 10:58 Создание древовидного меню
как лучше сделать?
RussiaStudent,
я не большой спец по базам данных, но мне кажется, что наиболее простой и, соответственно, правильный ;) алгоритм, примерно, такой:
* делаем одну табличку с 2мя полями: [id узла] - [id родителя]
* если в id родителя - 0, то это корень дерева
* для построения потомков конкретного узла делаем выборку по заданному id родителя
* для построения всего дерева делаем цикл по всем id узлов

ну вот, пока писал, ZiTosS уже что-то похожее закодил ;)


Спасибо сказали: (0)
17.8.2009, 15:44 Защита изображения
(http://www.webdocs.ru/content-545.html)
Запрет выдачи картинок чужим сайтам.

Довольно нередким явлением является то, что недобросовестные модераторы и ведущие рубрик различных сайтов да и некоторые блоггеры, в целях экономии трафика, вместо того чтобы сослаться на понравившиеся картинки или хотя бы пересохранить их у себя на сервере, просто тянут их к себе прямо с вашего сайта, или как говорится ”личат”.

Как понимаете, ничего хорошего для вас, как владельца сайта с которого и тянуться напрямую картинки на чужой сайт - нет! И узнаете Вы об этом пожалуй только по резко возросшему трафику или по количеству обращений к файлу, которое не соответствует количеству посетителей. А так как, в наше время трафик стоит денег и немалых, то отдавать просто так его на сторону неприятно, да и злостных личеров стоит наказать. Поэтому нужно что-то делать, к счатью на большинстве нормальных хостингов есть возможность пользоваться файлом .htaccess, вот с его помощью и будем решать проблему.

Можно прописать правило в файле .htaccess. Причем это можно сделать как для конкретного сайта, так и для всех, оставив к примеру только несколько разрешенных, таких как Google Images или картинки Яндекса. Итак...

Способ первый, закрываем кран подачи кислорода для всех

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?вашсайт\.ru/ [nc]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?google\.com/ [nc] - доступ Гуглю открыт
RewriteRule .*\.(gif|jpg|png)$ http://вашсайт.ru/images/hotlinkers.jpg [nc]
RewriteRule \.(jpe?g|gif|png)$ - [F] - эту строчку можно подставить вместо последней, чтобы перенаправлять на 403 Forbidden вместо картинки.

Что собственно происходит? Когда к серверу идет запрос на файл с расширением (gif|jpg|png), и этот запрос не с вашего сайта, то запрашиватель отправляется прямиком к картинке httр://вашсайт.ru/images/hotlinkers.jpg, которая может быть расположена по вашему усмотрению и на ней может быть все что угодно. Такой способ быстро отбивает охоту личить ваши картинки.

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

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(www\.)?zloylicher\.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?esheodin\.com/ [NC]
RewriteRule \.(jpeg|gif|png)$ images/hotlinkers.jpg [R,L]


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

Вся разница в том, что в одном случае вы закрываете доступ всем, а во втором только личерам.

Способ третий. Защищаем любые файлы на сайте от сличивания

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www\.)?zloylicher\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?esheodin\.com/ [NC]
RewriteCond %{REQUEST_FILENAME} !hotlinkers.jpg$
RewriteRule .*\.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.mysite.com/images/hotlinkers.jpg [R]


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

Пожалуй на этом все, удачи!

По материалам http://www.webmakerslounge.com


Спасибо сказали: (2)
4.8.2009, 20:06 Метки на сайте
(phpuser @ 4.8.2009, 18:59) *
Чёт тут не понятно. Можно как то получше расписать таблицу??? Плиз.

Вот пример моей таблицы если можно то на ней показать как это сделать.

phpuser,
в эту никакие не надо добавлять
надо создать две новые таблицы в одну будут складироваться id меток и их названия name (назовем ее tags),
а во вторую - id новостей (id_news) и меток (id_tags), которые соответствуют друг другу (назовем ее news_tags_collations),

т.е. при добавлении новости с id=12 (например, "Про компьютерную графику"), у которой должны быть, например, две метки с id=3 (name="Компьютеры") и id=5 (name="Графика"), то в таблицу news_tags_collations должно добавиться 2 строки: id_news=12 - id_tags=3 и id_news=12 - id_tags=5:
INSERT INTO `db`.`news_tags_collations` (
`id_news` ,
`id_tags`
)
VALUES (
12, 3
), (
12, 5
);


ну вот, пока рисовал ответ, Евгений уже ответил :)


Спасибо сказали: (1)
2.8.2009, 12:14 Реализация добавления поля формы без перезагрузки
<html>
<head>
<title>Dynamic form</title>
<script type="text/javascript">
var nfields = 1;

function addfield() {
str = '';
nfields++;
for (i = 1; i <= nfields; i++) {
str += (i == 1 ? '' : '<br />');
tsrt = (i == nfields ? "" : document.getElementById('pole'+i).value);
str += '<input type="text" name="pole[]" id="pole'+i+'" value="'+tsrt+'" /> <input type="button" value="удалить" name="remove'+i+'" onClick="rmfield('+i+');"'+((nfields == 1) ? ' disabled' : '')+' />\n';
}
document.getElementById('poles').innerHTML = str;
}

function rmfield(pos) {
str = '';
delta = 0;
for (i = 1; i <= nfields; i++) {
if (i == pos) {
delta = 1;
}
else {
tpos = i-delta;
str += (tpos == 1 ? '' : '<br />');
tsrt = document.getElementById('pole'+i).value;
str += '<input type="text" name="pole[]" id="pole'+tpos+'" value="'+tsrt+'" /> <input type="button" value="удалить" name="remove'+tpos+'" onClick="rmfield('+tpos+');"'+((nfields == 2) ? ' disabled' : '')+' />\n';
}
}
document.getElementById('poles').innerHTML = str;
nfields--;
}


</script>
</head>
<body>
<form name="add" action="form.php" method="POST">
<input type="button" value="добавить" name="add" onClick="addfield();" />
<div id="poles"><input type="text" name="pole[]" id="pole1" value="" /> <input type="button" value="удалить" name="remove1" onClick="rmfield(1);" disabled /></div>
<input type="submit" value="сохранить" name="save" />
</form>
</body>
</html>



Спасибо сказали: (1)
1.8.2009, 22:25 Реализация добавления поля формы без перезагрузки
количество элементов в массиве $pole - это count($pole)
в $value попадают значения элементов массива
foreach ($pole as $value) { //для каждого элемента массива $pole помещать его значение в переменную $value
echo $value; //выводить эту переменную в браузер
}

по-русски эта конструкция читается так: "для каждого элемента массива $pole помещать его значение в переменную $value и выводить эту переменную в браузер"
(sc2r2bey) *
т.е. я могу теперь вместо в echo делать записи в БД

да


Спасибо сказали: (1)
1.8.2009, 21:34 Реализация добавления поля формы без перезагрузки
(sc2r2bey @ 1.8.2009, 21:05) *
супер я практически понял, ты меня подправил а как тогда вычислить количество элементов массива и с какого номера начинается массив?

количество элементов в массиве возвращает функция count($pole)

про то с какого номера начинается массив, встречный вопрос:
вот вам массив:
$forest = array('деревья' => array('липа', 'осина', 'елка'),
              'звери' => array('тигр', 'лев', 'обезьян'));

который элемент в нем первый? ;)

есть такое понятие, как внутренний указатель массива.
функция reset() устанавливает внутренний указатель массива на "первый элемент" и возвращает его (указатель).
вообще для работы с массивами есть много специальных функций, например, foreach, которая позволяет "перемещаться" по массивам, про нее можно почитать, например, тут: foreach


Спасибо сказали: (1)
1.8.2009, 20:58 Реализация добавления поля формы без перезагрузки
(sc2r2bey @ 1.8.2009, 20:40) *
кстати а почему name="pole[1]" ведь массивы начинаются с 0?

sc2r2bey,
[php]echo $_POST['pole'][1]; //$_POST['pole'] - это уже массив, но если сильно хочется, то для красоты можно создать новый, например, так:
$pole = $_POST['pole'];
print_r($pole);
echo $pole[1];[/php]
(sc2r2bey @ 1.8.2009, 20:40) *
кстати а почему name="pole[1]" ведь массивы начинаются с 0?

в php массивы начинаются с чего угодно и вообще могут индексироваться, чем удобно программисту, например, могут быть такие элементы массива:
pole[1] pole[2] pole['a'] pole['b'] pole['some'] pole['something else'] и т.п.
я проиндексировал массив по числу строчек, типа у первой строчки номер 1, у второй - 2, но можно было, например, и с нуля индексировать, для этого достаточно было в качестве имен полей указать не "pole[N]", а просто "pole[]".


Спасибо сказали: (1)
1.8.2009, 20:27 Реализация добавления поля формы без перезагрузки
sc2r2bey,
добавлять и убавлять можно и группу полей и все прочее, что только можно закодировать хтмл-ом.

Про "checkbox, галочку и поле для загрузки изображения" непонятно, почему нужна именно галочка и что вы, собственно, от них всех хотели.
Но, есть подозрение, что ничто не мешает и их "сделать" по такому же типу. ;)


Спасибо сказали: (1)

4 страниц V  < 1 2 3 4 >
RSS Текстовая версия Сейчас: 24.4.2024, 2:28
Дизайн