Ru-Board.club
← Вернуться в раздел «Web-программирование»

» PHP: Полезные (интересные и оригинальные) решения

Автор: IFKey
Дата сообщения: 28.04.2013 21:47
Функция добавляет водяной знак к изображению:
$input_uri - путь к исходному изображению
$output_uri - путь к изображению на выходе
$watermark_uri - путь к PNG файлу - водяному знаку

Цитата:
function waterMark($input_uri,$output_uri,$watermark_uri)
{
# Загрузка штампа и фото, для которого применяется водяной знак (называется штамп или печать)
$stamp = imagecreatefrompng($watermark_uri);
$im = imagecreatefromjpeg($input_uri);

# Установка полей для штампа и получение высоты/ширины штампа
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

# Копирование изображения штампа на фотографию с помощью смещения края
# и ширины фотографии для расчета позиционирования штампа.
imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

imagejpeg ($im, $output_uri, "100");
# Вывод и освобождение памяти
//header('Content-type: image/png');
//imagepng($im);
imagedestroy($im);
}
Автор: sherzet
Дата сообщения: 07.08.2013 01:53
[more] Вот кто нибудь реально помочь может
ну очень надо
я на сервере использую php proxy
вот http://file.uzdc.uz/files/get/0UTxRBt4xS/php-proxy.rar сам php proxy
так вот в чем проблема я использую его чтоб с интернета копировать перенаправленные
ссылки себе на сайт тогда получается что сначала качает сервер потом вы с сервера сайта
вот тут надо исправить один минус при скачке нельзя использовать докачку
что сильно напрягает а ещё файлы около 200 мб не могут скачатся и зависают на половине
основной файл в архиве это index.php посоветуй что можно сделать чтоб решить эту проблему
P.S. А зачем мне это надо
Я живу в Узбекистане где интернет навес золота а без лимит учесть избранных поэтому у нас есть сеть сайтов TAS-IX которые не начисляют трафик вам это в основном сайты с доменом uz как раз у меня такой сайт с нужным сервером поэтому при скачке с моего сайта
они качают бесплатно без учёта трафика
Всё это сильно нагружает сервер поэтому если есть предложения по оптимизации скрипта то пожалуйста не проигнорируйте этот вопрос [/more]
Автор: torenntov
Дата сообщения: 28.08.2013 22:34
Всем привет, подскажите на какой cms стоит этот сайт? http://***.ru/
Автор: Banshi
Дата сообщения: 17.09.2013 02:12
Здравствуйте!

Я в php совершенно не разбираюсь (только начал читать книжку по основам), но есть необходимость настроить ссылку на локальный ресурс:

1. сайт на движке joomla 1.5
2. используются браузеры IE, firefox, chrom.
3. есть шара \\192.168.1.50\post\2013

я пробовал настроить ссылку на странице вида: file://\\192.168.1.50\post\2013,
но она открывается только в IE.

Вопрос: есть ли какой-нибудь вид ссылки, чтобы открывался во всех браузерах.
Если нет, то есть ли какой-нибудь код для открытия во всех браузерах или МОД для joomla 1.5?
Автор: IFKey
Дата сообщения: 07.12.2013 08:04
Простенькая функция для генерации одноуровневого меню:

Цитата:
private function CreateElementMenu($elementTpl,$element = array())
{
$elementTpl = str_replace('#DOMAIN#',$this->domain,$elementTpl);
foreach($element as $key=>$value)
{
$elementTpl = str_replace('#'.$key.'#',$value,$elementTpl);
}
return $elementTpl;
}

public function CreateMenu($elementTpl,$items = array(),$delimiter = false)
{
$r = array();
foreach($items as $key=>$item)
{
$r[] = $this->CreateElementMenu($elementTpl,$item);
}
return implode($delimiter,$r);
}

Использовать так:

Цитата:

$TopMenu = array(
array(
'URL' => '/',
'TEXT' => 'Главная'
),
array(
'URL' => '/about.html',
'TEXT' => 'О компании'
),
array(
'URL' => '/details.html',
'TEXT' => 'Реквизиты'
),
array(
'URL' => '/our_work.html',
'TEXT' => 'Наши работы'
),
array(
'URL' => '/contacts.html',
'TEXT' => 'Контакты'
)
);
$elementTpl = '<a href="http://www.#DOMAIN#/#URL#">#TEXT#</a>';
print $this->CreateMenu($elementTpl,$TopMenu, ' |');
Автор: Cheery
Дата сообщения: 08.12.2013 02:08
IFKey
тогда уж проще более гибкое решение (опять же, пример без рекурсии)

Код: function CreateMenu($func, $items = array(), $delimiter = false)
{
$r = array();
foreach($items as $item)
$r[] = call_user_func($func, $item);
return implode($delimiter, $r);
}

echo CreateMenu(function($node) {
return '<a href="http://www.domain.ru/' . $node['URL'] . '">' . $node['TEXT'] . '</a>';
}, $TopMenu, ' |');
Автор: vof4ikWP
Дата сообщения: 23.12.2013 13:43
Как отсортировать ip ?
Преобразуем ip в число. Числа легко поддаются сортировке

Код:
function convertIpToInt($sIpAddress)
{
$aTemp = explode(".", $sIpAddress);
$nIpAddress = 0;
foreach ($aTemp as $k => $v) {
$nIpAddress += pow(256, 3 - $k) * $v;
}
return $nIpAddress;
}
Автор: Cheery
Дата сообщения: 23.12.2013 21:42
vof4ikWP
зачем изобретать велосипед?
http://www.php.net/ip2long
http://www.php.net/long2ip
Автор: vof4ikWP
Дата сообщения: 23.12.2013 22:02
Cheery
Действительно, . Но сегодня 6 разработчиков минимум мидл уровня, с разных компаний не знали о них. А вот оно как. Можно удалить мой велосипед, дабы не засорять такую хорошую тему. Спасибо
Автор: Cheery
Дата сообщения: 03.02.2014 08:36
Если кому нужно - набросал небольшой BBcode парсер (сразу говорю - не работает с вложенными однотипными тегами, то есть [no]123[b]345567[/b][/no]
не хотелось заниматься парсингом таких вещей.
Ну и не претендую на красоту кода - нужно было быстро и использовался код для генерации контента тега..


Код: namespace ShortCodes;

class ShortCodes {
private $tags = array();
private $namespace = '\\ShortCodes\\';
private $path = 'tags/';
private $regexp = '/\[(?<tag>\w+)(=(?P<value>[^\]]+))?\]((?P<content>(?:(?!\[\\1).)*?)(\[\/\\1\]))?/is';

public function convert_tags($text)
{
if (!is_string($text) || empty($text))
return $text; // works only with text
else
return $this->format_tags($text);
}

private function format_tags($input)
{
$string = '';

if (is_array($input)) // call from callback
{
$string = $input[0];
$tag = strtolower($input['tag']);
$value = isset($input['value']) ? $input['value'] : false;
$content = isset($input['content']) ? $input['content'] : false;

if (!file_exists(__DIR__ . '/' . $this->path . ucfirst($tag) . 'Tag.php')) // tag does not exist
{
if (!$content) // no enclosed text, return as is
return $string;
// or try to parse the content of the tag, leaving the original tag as is
return '[' . $tag . ($value ? '=' . $value : '') . ']' .
preg_replace_callback($this->regexp, array($this, 'format_tags'), $content) .
'[/' . $tag . ']';
         }
            
     if (!isset($this->tags[$tag])) // class not loaded
{
include(__DIR__ . '/' . $this->path . ucfirst($tag) . 'Tag.php'); // include tag class
$className = $this->namespace . ucfirst($tag) . 'Tag';
$this->tags[$tag] = new $className(); // initialize and store in array
}

$input = $this->tags[$tag]->convert_tag($value, $content); // format requested tag
if ($input === '') // clear tags
return '';
}

return $input === false ? $string : preg_replace_callback($this->regexp, array($this, 'format_tags'), $input);
}
}


abstract class AbstractTag {
protected $tagName = '';
protected $value = '';
protected $content = '';

public function __construct()
{
// set tag name from its class
$this->tagName = preg_replace('/Tag$/', '', basename(get_class($this)));
}

public function convert_tag($value = '', $content = '')
{
$this->value = $value;
$this->content = $content;
return $this->format_tag();
}

abstract protected function format_tag();
}
Автор: Andy_t
Дата сообщения: 23.02.2014 17:40
Cheery

Спасибо.
Автор: TrallBus
Дата сообщения: 11.03.2014 22:01
кто-нибудь может скинуть ссылку на хороший учебник по РНР, чтоб самому можно было поучиться
Автор: Cheery
Дата сообщения: 11.03.2014 23:19
TrallBus
внимательно, очень внимательно, прочитайте название темы.
Информация по PHP: учебники, ресурсы, документация
PHP ebooks
Автор: ShaDOWNIK
Дата сообщения: 30.04.2014 17:15
а какие книги есть по безопасности кода
Автор: Cheery
Дата сообщения: 30.04.2014 22:30
ShaDOWNIK
Безопасное программирование на PHP
если вы знаете язык хорошо, то и понимаете откуда может прийти проблема.
поэтому сложно сказать что то о книгах.
Автор: ShaDOWNIK
Дата сообщения: 01.05.2014 06:00
Cheery
Огромное спасибо
Автор: SashaShura
Дата сообщения: 04.05.2014 14:48
[more] Помогите пожалуйста решить проблему в браузере выводиться ошибка:

Warning: Cannot modify header information - headers already sent by (output started at W:\home\site.ru\www\admin.php:1) in W:\home\site.ru\www\admin.php on line 6

Сам код:

<?php
if($_COOKIE["pass"]!=="admin"){
sleep(1);
if(isset($_POST["pass"]))
{
setcookie("pass",$_POST["pass"], time()+3600*24*365);
die("Обновите страницу");
}
?>
<html><head><title>Админка</title></head><body>
<form method="post">
<input type="password" name="pass" value="">
<input type="submit" name="submit" value="Ok">
</form></body></html>
<?php
exit();
}
?>

В чем может быть проблема? [/more]
Автор: esche
Дата сообщения: 07.05.2014 13:59
На мой взгляд, изучение PHP лучше начинать не с PHP, а с базовых (?) понятий программирования - константы, переменные, циклы, алгоритмы, функции, процедуры, классы/объекты/методы, рекурсия и т.д.

По безопасности - есть смысл начинать с мануала


Потёрто (ответ на оффтоп)
[more]Проблема скорее всего в 1 строке файла admin.php
Первым символом (в самом начале файла) должны следовать
<?
Если файл в UTF-8 кодировке, следует сохранить его без BOM
[/more]
Автор: Mordavorot
Дата сообщения: 09.05.2014 15:03
А можно ли так сделать на форуме, чтобы в конце каждого поста добавлялся определённый смайлик?
Автор: antonpv
Дата сообщения: 05.09.2014 18:01

Цитата:
Но сегодня 6 разработчиков минимум мидл уровня, с разных компаний не знали о них.

Значит они явно не мидл уровня, поскольку таковые, как минимум, умеют пользоваться документацией и гуглом.
Автор: gorenski
Дата сообщения: 16.03.2015 05:27
Mordavorot

Цитата:
А можно ли так сделать на форуме, чтобы в конце каждого поста добавлялся определённый смайлик?

на ру-борде или вообще?
Автор: Dim Dimych 02
Дата сообщения: 18.03.2015 20:02
Скрываем email от ботов.
Да и вообще для вывода корректно в разных браузерах русских букв в javascript'е.


Код:
class HTML {

/**
* @var boolean Для XHTML
*/
public static $strict = TRUE;


/**
* echo HTML::chars($value);
*
* @param string $value
* @param boolean $double_encode
* @param string $charset
* @return string
*/
public static function chars($value, $double_encode = TRUE, $charset = 'utf-8')
{
         return $value !== '' && self::$strict ? htmlspecialchars( (string) $value, ENT_QUOTES, $charset, $double_encode) : $value;
}


/**
* echo HTML::to_unicode($value)
*
* @param string $value
* @param boolean $encode
* @return string
*/
public static function to_unicode($value = '', $encode = TRUE)
{
         $ansi = array(
'№', ' ',
'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И',
'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т',
'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь',
'Э', 'Ю', 'Я',
'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и',
'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т',
'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь',
'э', 'ю', 'я'
);

$unicod = array(
'\u2116', '\u0020',
'\u0410', '\u0411', '\u0412', '\u0413', '\u0414',
'\u0415', '\u0401', '\u0416', '\u0417', '\u0418',
'\u0419', '\u041A', '\u041B', '\u041C', '\u041D',
'\u041E', '\u041F', '\u0420', '\u0421', '\u0422',
'\u0423', '\u0424', '\u0425', '\u0426', '\u0427',
'\u0428', '\u0429', '\u042A', '\u042B', '\u042C',
'\u042D', '\u042E', '\u042F',
'\u0430', '\u0431', '\u0432', '\u0433', '\u0434',
'\u0435', '\u0451', '\u0436', '\u0437', '\u0438',
'\u0439', '\u043A', '\u043B', '\u043C', '\u043D',
'\u043E', '\u043F', '\u0440', '\u0441', '\u0442',
'\u0443', '\u0444', '\u0445', '\u0446', '\u0447',
'\u0448', '\u0449', '\u044A', '\u044B', '\u044C',
'\u044D', '\u044E', '\u044F'
);

return ($encode) ? str_replace($ansi, $unicod, $value) : str_replace($unicod, $ansi, $value);
}


/**
* echo HTML::mailto($email, 'text', 'id');
*
* @param string $email
* @param string $title
* @param string $id
* @return string
*/
public static function mailto($email, $title = NULL, $id = 'output_em_text')
{
$out = '';

if ($email !== '')
{
$email = self::chars( (string) $email);
$email = str_replace(array('@', '.'), array('&', '*'), $email);
    
$title = self::chars( (string) $title);
$title = (($title == '') ? 'x' : '"' .self::to_unicode($title) .'"');

$out = '<a href="&#109;&#097;&#105;&#108;&#116;&#111;&#058;:' .$email .'">' .$title .'</a>'
.'<script type="text/javascript">'
.'/*<![CDATA[*/'
.'var e=document.getElementById("' .$id .'");'
.'var x="' .$email .'";'
.'x=x.replace("&","@");'
.'x=x.replace(/\*/g,".");'
.'e.href=e.href+x;'
.'e.innerHTML=' .$title .';'
.'/*]]>*/'
.'</script>';
}

return $out;
}
}
Автор: MaxGalCom
Дата сообщения: 19.08.2015 08:16
И нахрена скрывать? Почту с домена цеплять на яндекс или маил или гугл маил, которые и так успешно со спамом борются, чем засорять лишним JS веб страницу
Автор: MaxXx1313
Дата сообщения: 01.10.2015 17:18
для красивой отладки


/**
* print_table()
*
* @param mixed $mixed
* @param integer $level
* @return
*/
function print_table($mixed, $level=9){
if($level<=0){ echo '**LIMIT**'; return; }

$is_obj = is_object($mixed);
if( $is_obj )
$mixed = get_object_vars($mixed);

if($level==9) echo '<br />';

if(is_array($mixed)){
if( empty($mixed) )
if($is_obj)
echo '<span style="color:blue">{empty object}</span>';
else
echo '<span style="color:blue">[empty array]</span>';
else{
echo '<table cellspacing="0" width="100%" border="1" '.($is_obj?'style="border-style: dashed;"':'').'>';
foreach($mixed as $key=>$val){
echo '<tr><td width="20%">';
print_table($key, 1);
echo'</td><td>';
print_table($val, $level-1);
echo '</td></tr>';
}
echo '</table>';
}
}elseif(is_null($mixed)){
echo '<span style="color:blue">null</span>';
}elseif($mixed===false){
echo '<span style="color:red">false</span>';
}elseif($mixed===true){
echo '<span style="color:green">true</span>';
}elseif(is_numeric($mixed) && $mixed>1000000000){
echo $mixed,' <span style="color:gray">[',date('d-m-Y H:i:s',$mixed),']</span>';
}elseif($mixed===''){
echo '<span style="color:blue">empty string</span>';
}else{
echo $mixed;
}

}
Автор: leshikbr
Дата сообщения: 17.10.2015 10:11
Всем привет у кого есть модуль доставки exline поделитесь плиз

Страницы: 12345678910

Предыдущая тема: Perl: Полезные решения


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.