// Тест функции $text = "[COLOR=blue]TEXT[/COLOR]"; $text = bb_to_html($text); echo $text;
?>
Kanzler
Данная функция выводит информацию о посетителе: 1. Обычный IP (Proxy) 2. Прямой IP (Реальный IP, если ипользовать специальный proxy - недоступен) 3. Откуда пришли 4. Куда пришли (Адрес странички, где запущен скрипт) 5. Браузер и ОС 6. Текущая дата 7. Статус gZip (Поддержка сжатия страниц браузером)
CODE
<?php
function user_info() {
// IP (Через Proxy) $info['proxy_ip'] = $_SERVER['REMOTE_ADDR'];
// IP (Прямой) $info['line_ip'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
// Откуда пришли (Предыдущая страница) $info['referer'] = $_SERVER['HTTP_REFERER'];
// Куда пришли (Адрес страницы, на которой выполняется этот скрипт) $info['uri'] = $_SERVER['REQUEST_URI'];
// Браузер и ОС $info['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
// Текущая дата в формате "01.01.2006 | 00:00" $info['date'] = date("d.m.Y | H:i");
// Статус gZip (Поддерживает ли браузер сжатие) if ($_SERVER['SERVER_PROTOCOL'] == "HTTP/1.1") { $info['gzip'] = 1; } else { $info['gzip'] = 0; }
echo "<pre>"; print_r($info); echo "</pre>";
}
user_info();
?>
Kanzler
Привожу функцию вывода случайной картинки. Чаще всего такая функция используется для вывода случайного баннера.
Условия: 1. Все картинки должны лежать в папке "banners" (Можно изменить) 2. Все картинки должны иметь одинаковый формат (В данном случае .gif, можно изменить) 3. Все картинки должны иметь названия типа 1.gif, 2.gif, 3.gif и т.д.
CODE
<?php
// Функция function rand_img($count) {
$random = rand(1, $count); $img = "banners/".$random.".gif"; // Здесь указываем папку и формат
echo "<img src=\"".$img."\" border=\"0\" />";
}
// Тест
rand_img(5); // 5 - количество баннеров в папке "banners"
?>
--------
Результат будет примерно такой:
CODE
<img src="banners/2.gif" border="0" />
Gold Man
Очень интересные алгоритмы. Грех плюс в репу не поставить...
а зачем писать так? echo "<img src=\"".$img."\" border=\"0\" />"; ??? ведь при использование двойных ковычек PHP исчет в нутри переменные и заменяет их на значения т.е. строки в двойных ковычках обрабатываються дольше... можно было сделать так echo '<img src="'.$img.'" border="0" />"; работает быстрее читабельность выше (т.к. нет слэшей перед кавычками)
а еще можно так показывать случайный банер
CODE
<? //Массив с именами фаилов $banners=array( 'banner_1.gif', 'banner_2.gif', 'banner_3.gif', 'banner_4.gif', 'banner_5.gif', 'banner_6.gif' ); //Выводим заголовок (банеры только в GIFe) header("Content-type: image/gif"); //Читаем и выводим содержимое фаила, элемент массива выбераеться случайно readfile ($_SERVER['DOCUMENT_ROOT'].'/banners/'.$banners[rand(0,count($banners)-1)]); ?>
результат работы скрипта - картинка т.е. скрипт нужно иуказывать в качестве src для img
CODE
<img src="banner.php" border="0">
ShadowS
Извините немножко не в тему но все же. Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
blablabla
QUOTE (ShadowS @ 19.04.2006 - время: 01:00)
Извините немножко не в тему но все же. Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
В самом начале Kanzler выложил 4 части справочника по пхп. И начинай с них_
OutSideR
QUOTE (ShadowS @ 19.04.2006 - время: 00:00)
Извините немножко не в тему но все же. Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
В разделе "Компьютерная литература..., Раздел "Web" (web программирование и дизайн)" IT-Академии SexNarod.ru много хорошей литературы по PHP. Загляни сюда
GrAnd
Пусть есть MySQL-выборка $result, отсортированная по какому либо ключу с именем $key. В этой выборке необходимо находить элементы с конкретным значением $value этого ключа и обрабатывать их. Либо начинать обработку начиная с найденного элемента. Либо обрабатывть ближайшее окружение найденного элемента. Конкретно я использовал это в таком случае: При формировании странички с информацией необходимо сформировать также ссылку на следующую и предыдущую информацию. Если бы информационные записи в БД имели порядковые номера, то проблем не было бы. Но они могут быть прорежены - начинаться нумерация может с 16, а потом идти 20, 36, 111 и т.д. Т.е. это даже не нумерация, а некий приоритет, определяющий порядок следования. Или вообще нумерация может быть не числовой, а буквенной. Забивать в каждую запись ключ следующей и предыдущей записи не следует, т.к. структура страниц динамическая и при добавлении/удалении страниц, а так же при изменении приоритетов следования, накладные расходы по поддержанию целостности и непротиворечивости этой избыточной информации могут быть значительными. В этом случае, конечно, можно было бы получить сначала информацию по искомой записи, определить ее приоритет, а потом сделать 2 выборки - по записям с меньшим приоритетом и с большим. Но это не универсальный подход. И так же вместо одной выборки MySQL делает 3. Поэтому при доступе к записи с ключом-приоритетом N необходимо в единственной выборке найти (если есть) информацию относящуюся к ней, а также найти значения ключей записей, которые ее окружают. Вторая часть задачи решается легко, если уже найдена запись с искомым ключом. А найти ее удобнее всего в данном случае при помощи двоичного поиска. Двоичный поиск используется очень часто, но мало кто может реализовать его правильно и компактно. Вот привожу маленький скрипт, который: 1. Находит в выборке номер (начиная с 0) самой первой записи с заданным значением ключа и возвращает этот номер. 2. Если заданный ключ не найден, то возвращается номер первой записи с значением ключа больше заданного. 3. Если все записи в выборке имеют значение ключа меньше заданного, то возвращается число записей в выборке (как бы номер записи, следующей за последней.
Ну а вот сама функция:
CODE
<?php
function message_die($errno, $error, $file, $line) { if ($errno) { echo '<p><b>Error $errno $file($line):</b> $error'; die(); } }
<?php function bs($dr){ $dir=opendir($dr); $banners=array(); while(false!==($fl=readdir($dir))){ //добавляем в массив только файлы с "баннерными" расширениями (JPG, GIF) //каталоги пропускаются //т. е. совместно с баннерами в той же папке могут //быть любые другие файлы if($fl!="." && $fl!=".." && !is_dir($dr.'/'.$fl) && preg_match("/^\d*\.jpg|\w*\.jpg|\d*\.gif|\w*\.gif/i", $fl)){ $banners[]=$fl; } } closedir($dir); return $banners;//массив подходящих файлов в директории $dr }
$banners=bs('./ip'); $random=rand(0, sizeof($banners)-1); echo '<img src="http://docs.loc/scripts/view_banners/ip/'.$banners[$random].'">';//примерно такой результат ?>
Аrtur
Предотвращает проведение XSS атак, осуществляемых манипуляциями строкой браузера.
Это сообщение отредактировал Аrtur - 01-12-2006 - 00:38
Kom_JIeonoJIbg
возвращает массив файлов в директории с определённым расширением, в данном случае с расширением, содержащим только алфавитные символы (определяемые символом \w): $dr - путь и название директории.
и, чтобы несколько сообщений не оставлять, ещё одна функция: Скрипт для перевода текста из транслита и обратно. Синтаксис: translate($string, $type, $yes_no, $ary); $string - текст, который нужно перетранслировать. $type - тип транслита, возможные значения: 'ru' - из транслита сделать русский текст и 'tr' - наоборот. $yes_no - подключать или нет внешние массивы. $ary - подключаемый массив (такой же структуры, как и встроенный).
ЗЫ: эм.. первую функцию я уже приводил.. ну ладно, тогда это описание к ней )
Это сообщение отредактировал Kom_JIeonoJIbg - 02-12-2006 - 03:00
Volonter-dic
а ПХП вообще трудный язык?
Platinum PROFI
Хех. Что есть в твоем понимании сложный? Всё, что нужно - логика и PHP-интерпретатор. А просто и легко нигде вначале не бывает, профессионализм приходит со временем...
P.S. Ты более конкретные чтоль вопросы задавай...
GOTOFF
Скрипт позволяющий создавать сервис загрузок картинок.
Это сообщение отредактировал c0d3r - 19-03-2007 - 19:39
Kom_JIeonoJIbg
CODE
<?php $ex=explode("\n",file_get_contents('m.txt')); $ary=array(); foreach($ex as $v){ $ary[$v]=strlen($v); } natcasesort($ary); $fp=fopen('ms.txt','w'); foreach($ary as $k=>$v){ fputs($fp,$k."\n"); } fclose($fp); ?>
сортирует строки из файла (m.txt) по их длине и пишет результат в 'ms.txt'; да, тут нужно изменить символы переноса строки на нужные:) для винды, например, - "\r\n" (если мне память не отшибло..)