Kanzler Свободен |
17-02-2006 - 23:31 Исходники на PHP выкладываем с кратким описанием...
Начну первым:
Для начала замечательный справочник по PHP. Описаны все основные функции. Рекомендую людям начинающим. Общий размер 416 кб.
Так как архивы *.rar загружать нельзя: скачайте все 4 файла. Переименуйте их расширение в .rar. И нажмите распоковать.
Первая часть. |
Kanzler Свободен |
17-02-2006 - 23:33 Вторая часть. |
Kanzler Свободен |
17-02-2006 - 23:34 Третья часть. |
Kanzler Свободен |
17-02-2006 - 23:35 Четвертая (последняя) часть. |
Kanzler Свободен |
18-02-2006 - 14:26 Функция для конвертирования ББ-кодов в HTML-код:
CODE |
<?php
function bb_to_html($content) {
// Переносы строк $content = str_replace("\n", "<br />", $content); // Жирный, Курсив (Наклонный), Подчеркнутый, Перечеркнутый $content = preg_replace("/\[B\](.+?)\[\/B\]/", "<b>\\1</b>", $content); $content = preg_replace("/\[I\](.+?)\[\/I\]/", "<i>\\1</i>", $content); $content = preg_replace("/\[U\](.+?)\[\/U\]/", "<u>\\1</u>", $content); $content = preg_replace("/\[S\](.+?)\[\/S\]/", "<s>\\1</s>", $content); // Размер шрифта $content = preg_replace("/\[SIZE=(.+?)\](.+?)\[\/SIZE\]/", "<font size=\"\\1\">\\2</font>", $content); // Цвет шрифта $content = preg_replace("/\[COLOR=(.+?)\](.+?)\[\/COLOR\]/", "<font color=\"\\1\">\\2</font>", $content); // Выравнивание (По левому краю, По центру, По правому краю) $content = preg_replace("/\[LEFT\](.+?)\[\/LEFT\]/", "<div align=\"left\">\\1</div>", $content); $content = preg_replace("/\[CENTER\](.+?)\[\/CENTER\]/", "<div align=\"center\">\\1</div>", $content); $content = preg_replace("/\[RIGHT\](.+?)\[\/RIGHT\]/", "<div align=\"right\">\\1</div>", $content); // Вставить изображение $content = preg_replace("/\[IMG\](.+?)\[\/IMG\]/", "<img src=\"\\1\" border=\"0\">", $content); // Цитата $content = preg_replace("/\[Q\](.+?)\[\/Q\]/", "<b>Цитата:</b><br /><div class=\"quote\">\\1</div>", $content); // Смайлики $content = preg_replace("/\*(.+?)\*/", "<img src=\"/images/smiles/\\1.gif\" border=\"0\">", $content);
return $content;
}
// Тест функции $text = "[COLOR=blue]TEXT[/COLOR]"; $text = bb_to_html($text); echo $text;
?>
|
|
Kanzler Свободен |
18-02-2006 - 14:27 Данная функция выводит информацию о посетителе: 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 Свободен |
18-02-2006 - 14:30 Привожу функцию вывода случайной картинки. Чаще всего такая функция используется для вывода случайного баннера.
Условия: 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" />
|
|
Свободен |
21-02-2006 - 00:40 Очень интересные алгоритмы. Грех плюс в репу не поставить... |
Свободен |
26-02-2006 - 15:53 а зачем писать так? 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 Свободен |
19-04-2006 - 01:00 Извините немножко не в тему но все же. Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр |
blablabla Свободен |
19-04-2006 - 02:54
QUOTE (ShadowS @ 19.04.2006 - время: 01:00) | Извините немножко не в тему но все же. Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр |
В самом начале Kanzler выложил 4 части справочника по пхп. И начинай с них_ |
OutSideR Свободен |
19-04-2006 - 13:51 QUOTE (ShadowS @ 19.04.2006 - время: 00:00) | Извините немножко не в тему но все же. Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр |
В разделе "Компьютерная литература..., Раздел "Web" (web программирование и дизайн)" IT-Академии SexNarod.ru много хорошей литературы по PHP. Загляни сюда |
GrAnd Женат |
28-04-2006 - 14:26 Пусть есть 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(); } }
function bin_search($result, $key, $value) { $l = 0; $r = @mysql_num_rows($result);
message_die(@mysql_errno(), @mysql_error(), __FILE__, __LINE__);
while ($l != $r) { $m = ($l + $r) >> 1;
@mysql_data_seek($result, $m);
message_die(@mysql_errno(), @mysql_error(), __FILE__, __LINE__);
$row = @mysql_fetch_assoc($result);
message_die(@mysql_errno(), @mysql_error(), __FILE__, __LINE__);
if ($row[$key] < $value) { $l = $m + 1; } else { $r = $m; } }
return $r; }
?> |
|
Kom_JIeonoJIbg Свободен |
13-07-2006 - 02:01 В продолжение темы о случайном выводе баннеров:
QUOTE | <?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 Свободен |
01-12-2006 - 00:36 Предотвращает проведение XSS атак, осуществляемых манипуляциями строкой браузера.
CODE | function xss () { $url = html_entity_decode(urldecode($_SERVER['QUERY_STRING'])); if ($url) { if ((strpos($url, '<') !== false) || (strpos($url, '>') !== false) || (strpos($url, '"') !== false) || (strpos($url, './') !== false) || (strpos($url, '../') !== false) || (strpos($url, '\'') !== false) || (strpos($url, '.php') !== false) ) { die("Hack!"); } } }
|
Вызывать до начала работы основной части скрипта.
Это сообщение отредактировал Аrtur - 01-12-2006 - 00:38
|
Kom_JIeonoJIbg Свободен |
02-12-2006 - 01:23 возвращает массив файлов в директории с определённым расширением, в данном случае с расширением, содержащим только алфавитные символы (определяемые символом \w): $dr - путь и название директории.
QUOTE | <?php function filesindir($dr){ $dir=opendir($dr); $ary=array(); while(false!==($fl=readdir($dir))){ if($fl!="." && $fl!=".." && !preg_match("/^.*\.\w*//*i", $fl) && !is_dir($dr.'/'.$fl)){ $ary[]=$fl; } } closedir($dir); return $ary; }?> |
и, чтобы несколько сообщений не оставлять, ещё одна функция: Скрипт для перевода текста из транслита и обратно. Синтаксис: translate($string, $type, $yes_no, $ary); $string - текст, который нужно перетранслировать. $type - тип транслита, возможные значения: 'ru' - из транслита сделать русский текст и 'tr' - наоборот. $yes_no - подключать или нет внешние массивы. $ary - подключаемый массив (такой же структуры, как и встроенный).
QUOTE | <?php function translate($string, $type, $yes_no, $ary){ if(!$yes_no){ $trans_s=array('\'','yo','zh','sh','ch','sch','ye','yu','ya','a','b','v','g','d','e','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','c','`','y'); $kir_s=array('ь','ё','ж','ш','ч','щ','э','ю','я','а','б','в','г','д','е','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ъ','ы'); $trans_p=array('\'','Yo','Zh','Sh','Ch','Sch','Ye','Yu','Ya','A','B','V','G','D','E','Z','I','J','K','L','M','N','O','P','R','S','T','U','F','H','C','Y'); $kir_p=array('Ь','Ё','Ж','Ш','Ч','Щ','Э','Ю','Я','А','Б','В','Г','Д','Е','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ы'); }elseif($yes_no){ $trans_s=$ary['trans_s']; $kir_s=$ary['kir_s']; $trans_p=$ary['trans_p']; $kir_p=$ary['kir_p']; } if($type=='ru'){ $string=str_replace($trans_s, $kir_s, $string); $string=str_replace($trans_p, $kir_p, $string); }elseif($type=='tr'){ $string=str_replace($kir_s, $trans_s, $string); $string=str_replace($kir_p, $trans_p, $string); } return $string; } ?> |
ЗЫ: эм.. первую функцию я уже приводил.. ну ладно, тогда это описание к ней )
Это сообщение отредактировал Kom_JIeonoJIbg - 02-12-2006 - 03:00
|
Volonter-dic Свободен |
08-03-2007 - 03:43 а ПХП вообще трудный язык? |
Platinum PROFI Свободен |
08-03-2007 - 13:32 Хех. Что есть в твоем понимании сложный? Всё, что нужно - логика и PHP-интерпретатор. А просто и легко нигде вначале не бывает, профессионализм приходит со временем...
P.S. Ты более конкретные чтоль вопросы задавай... |
Свободен |
16-03-2007 - 15:53 Скрипт позволяющий создавать сервис загрузок картинок. |
c0d3r Свободен |
19-03-2007 - 19:37 Скрипт для проверки состояния апача и псибнц. На фёрствдс очень актуально в связи с постоянными падениями соединений на их дедиках
CODE | <?php $host='mysite.ru'; $psyuser='psy'; $ch=curl_init('http://'.$host); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $a=curl_exec($ch); if($a===false){ exec('httpd -k restart'); } if(!@fsockopen('127.0.0.1',31337)) exec('su '.$psyuser.' -c \'cd /home/'.$psyuser.'/psybnc/; ./psybnc\'');
?>
|
парсер дубликатов строк из текстовых файлов,с сортировкой
CODE | <? $foutname = 'out.txt'; $filename = "in.txt"; $strings = file($filename); $strings = array_map('trim', $strings); $strings2 = array_unique($strings); asort($strings2); $file_out = fopen($foutname, "w"); foreach($strings2 as $value) { fputs($file_out, $value."\n"); } fclose($file_out); ?>
|
Это сообщение отредактировал c0d3r - 19-03-2007 - 19:39 |
Kom_JIeonoJIbg Свободен |
17-02-2009 - 14:03 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" (если мне память не отшибло..)
|
AngelAlex Женат |
30-06-2010 - 15:49 QUOTE (Kom_JIeonoJIbg @ 17.02.2009 - время: 14:03) | <?php $ex=explode("\n",file_get_contents('m.txt')); $ary=array(); ....... для винды, например, - "\r\n" (если мне память не отшибло..) |
я бы предложил вместо
CODE | $ex=explode("\n",file_get_contents('m.txt'));
|
использовать
отпадёт необходимость в выборе нужных символов
Это сообщение отредактировал AngelAlex - 30-06-2010 - 15:50 |