Reply to this topicStart new topicStart Poll

Страницы: (1) 1 
Kanzler
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 237
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Исходники на PHP выкладываем с кратким описанием...

Начну первым:

Для начала замечательный справочник по PHP. Описаны все основные функции. Рекомендую людям начинающим. Общий размер 416 кб.

Так как архивы *.rar загружать нельзя: скачайте все 4 файла. Переименуйте их расширение в .rar. И нажмите распоковать.


Первая часть.
Kanzler
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 237
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Вторая часть.
Kanzler
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 237
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Третья часть.
Kanzler
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 237
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Четвертая (последняя) часть.
Kanzler
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 237
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Функция для конвертирования ББ-кодов в 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
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 237
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Данная функция выводит информацию о посетителе:
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
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 237
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Привожу функцию вывода случайной картинки. Чаще всего такая функция используется для вывода случайного баннера.

Условия:
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" />

дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Очень интересные алгоритмы. Грех плюс в репу не поставить... buba.gif
дата: [ i ]
  • Репутация: нет
  • Статус:
  • Member OfflineМужчинаСвободен
а зачем писать так?
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
дата: [ i ]
  • *
  • Новичок
  • Репутация: 1
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Извините немножко не в тему но все же.
Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
blablabla
дата: [ i ]
  • *
  • Интересующийся
  • Репутация: 14
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (ShadowS @ 19.04.2006 - время: 01:00)
Извините немножко не в тему но все же.
Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр

В самом начале Kanzler выложил 4 части справочника по пхп. И начинай с них_ bye1.gif
OutSideR
дата: [ i ]
  • Group Icon
  • Князь
  • Репутация: 3253
  • Статус: 17 лет на СН
  • Member OfflineМужчинаСвободен
QUOTE (ShadowS @ 19.04.2006 - время: 00:00)
Извините немножко не в тему но все же.
Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр

В разделе "Компьютерная литература..., Раздел "Web" (web программирование и дизайн)" IT-Академии SexNarod.ru много хорошей литературы по PHP.
Загляни сюда
GrAnd
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 146
  • Статус: Нас призвали не руки, а желание (С) Пинхэд.
  • Member OfflineМужчинаЖенат
Пусть есть 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
дата: [ i ]
  • *
  • Любитель
  • Репутация: 25
  • Статус:
  • Member OfflineМужчинаСвободен
В продолжение темы о случайном выводе баннеров:
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
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 61
  • Статус:
  • Member OfflineМужчинаСвободен
Предотвращает проведение 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
дата: [ i ]
  • *
  • Любитель
  • Репутация: 25
  • Статус:
  • Member OfflineМужчинаСвободен
возвращает массив файлов в директории с определённым расширением, в данном случае с расширением, содержащим только алфавитные символы (определяемые символом \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
дата: [ i ]
  • *
  • Новичок
  • Репутация: нет
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
а ПХП вообще трудный язык?
Platinum PROFI
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 246
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Хех. Что есть в твоем понимании сложный? Всё, что нужно - логика и PHP-интерпретатор.wink.gif А просто и легко нигде вначале не бывает, профессионализм приходит со временем...

P.S. Ты более конкретные чтоль вопросы задавай... wink.gif
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Скрипт позволяющий создавать сервис загрузок картинок.

c0d3r
дата: [ i ]
  • *
  • Любитель
  • Репутация: 7
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Скрипт для проверки состояния апача и псибнц. На фёрствдс очень актуально в связи с постоянными падениями соединений на их дедиках
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
дата: [ i ]
  • *
  • Любитель
  • Репутация: 25
  • Статус:
  • Member OfflineМужчинаСвободен
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
дата: [ i ]
  • Group Icon
  • Спонсор форума
  • Репутация: 5
  • Статус: Давай пообщаемся!
  • Member OfflineПара М+ЖЖенат
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'));


использовать

CODE

$ex=file('m.txt');



отпадёт необходимость в выборе нужных символов 00064.gif

Это сообщение отредактировал AngelAlex - 30-06-2010 - 15:50
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)

Страницы: (1) 1

Reply to this topic Fast ReplyStart new topicStart Poll0


Рекомендуем почитать также топики:

Чат-бот - что за зверь

Подскажите шуструю сборку XP

Сотовый скоропостижно скончался

Compiz против Windows AERO

Скачивание видео




>