Полезные PHP коды
Veshok
22.05.10, 8:56
Определение утра, дня, вечера и ночи Ну кому нибудь может пригодится
function hi(){
$h=date('H');
$i=date('i');
if ($h>=0 && $h<=4){$hi='Доброй ночи!'; }
elseif ($h>4 && $h<=12){$hi='Доброе утро!';}
elseif ($h>=12 && $h<=17){$hi='Добрый день!';}
elseif ($h>=17 && $h<=22){$hi='Добрый вечер!';}
elseif ($h>=22 && $h<=23){$hi='Доброй ночи!';}
return $hi;}
---------------
Veshok
22.05.10, 8:56
вывод случайной ссылки, для этого надо создать файл url.txt в него вводите ссылки как в html странице например Название
и так далее потом вставляем этот код в нужное место и выводит он вам,
$l=file("url.txt");
$lc=count($l);
$n=rand(0 , $lc-1);
echo $l[$n]; также можно и с картинками создаем файл например image.txt в нем пишем код картинки как в html, потом скопируйте этот код и вместо url.txt пишите image.txt и готово
---------------
Veshok
22.05.10, 8:57
---------------
Veshok
22.05.10, 8:58
function upload_form()
{
?>
}
function upload_file() {
$archive_dir="Папка куда файл загрузузится";
$userfile_name=$_FILES['userfile'] ['name'];
$userfile_tmp_name=$_FILES['userfile'] ['tmp_name'];
$userfile_size=$_FILES['userfile'] ['size'];
$userfile_type=$_FILES['userfile'] ['type'];
if(isset($_ENV['WINDIR'])) {
$userfile=str_replace("\\\\","\\", $_FILES['userfile'] ['name'] ) ;
}
$filename=basename($userfile_name);
if($userfile_size <= 0) die ("Файл $filename пуст.");
if(!@move_uploaded_file($userfile_tmp_name, "archive_dir/$filename"))
die("Невозможно скопировать файл $userfile_name в $filename.");
if(isset($_ENV['WINDIR'])&&!@unlink($userfile))
die ("Невозможно удалить файл $userfile_name.");
echo "Файл $filenam$filename был успешно загружен.
";
echo "Размер файла: ".number_format($userfile_size)."
";
echo "Тип файла: $userfile_type
";
}
?>
---------------
Veshok
22.05.10, 8:58
нарезчик картинок
$w_new='100';
$image='foto.jpg';
$old=imageCreateFromJpeg("$image");
$w=imageSX($old);
$h=imageSY($old);
$new=$h/$w;
$h_new=$w_new * $new;
$new=imageCreate($w_new, $h_new);
$new=imagecreatetruecolor($w_new, $h_new);
imageCopyResized($new, $old, 0, 0, 0, 0, $w_new, $ h_new, $w, $h);
imageJpeg($new,"","8 0");
---------------
Veshok
22.05.10, 8:58
Засекаем время генерации страницы.
start.php:
stop.php
---------------
Veshok
22.05.10, 8:59
---------------
Veshok
22.05.10, 8:59
Счетчик скачивания файлов...
---------------
Veshok
22.05.10, 8:59
Перекодировка текста из ероглифов типа: РС?РСп??РТп??РС?РВп??СР
' ;
$kod = iconv ( 'UTF-8' , 'CP1251' , $unkod );
echo $kod . '
' ;
} echo '' ;
?>
с русского на эти каракули
поменяй местами UTF-8 и CP1251 в строке:
$kod = iconv('UTF-8 ','CP1251',$unkod); $action ))
---------------
Veshok
22.05.10, 9:00
Дергаем скрины с видео удобная вещь
getDuration ();
//если он длится больше минуты
if ( $duration > 60 ){
//получаем путем округления "вниз" результата от деления длятельности на 60 секунд длительность ролика в минутах
$minutes = floor ( $movie -> getDuration ()/60);
//чтобы получить секунды просто смотрим остаток от деления на 60
$seconds = $movie -> getDuration ()% 60 ;
} //ну просто вывели сколько он длится
echo 'File: ' . $_SERVER [ 'DOCUMENT_ROOT' ]. '/experiments/video /nagitare.wmv длится ' . $duration .'секунд!
';
---------------
V@dimYch
22.06.10, 18:45
MD5 Decrypter
(.+?)\n\
.+$#s', '$1', curl_exec($ch), 1, $count);
curl_close($ch);
return $count ? $result : FALSE;
}
echo md5_decode('adc41cdc9f1515c560ccc70d899c4e42');
?>
Функция "раскодирования" (поиск в базе гг) хеша md5. Возвращает строку. Если результат в базе данных не существует, то FALSE. Используется сервис, который предоставляет сайт md5decrypter.com
---------------
V@dimYch
22.06.10, 18:46
Генерируем облако тегов на PHP
$count )
{
$size = $minFontSize + ( $count - $minimumCount )
* ( $maxFontSize - $minFontSize ) / $spread;
$cloudTags[] = ''
. htmlspecialchars( stripslashes( $tag ) ) . '';
}
return join( "\n", $cloudTags ) . "\n";
}
?>
Tag Cloud Demo
Sample Tag Cloud
---------------
V@dimYch
22.06.10, 18:46
Описание:
Очень красивая каптча))
Автор: Up
1);
imageline($thiz,$i2,$niz1,$i1,$niz1,$color1);
imageline($thiz,$i1,$niz2,$i1,$niz1,$color1);
imageline($thiz,$i2,$niz1,$i2,$niz2,$color3);
imageline($thiz,$i2,$niz2,$i1,$niz2,$color3);
if($chr!==NULL) { imagechar($thiz,$size,$i1+5,($niz1+ ($size<1?4:($size<2?3:2))),$chr,$color3);
imagechar($thiz,$size,$i1+4,($niz1+ ($size<1?3:($size<2?2:1))),$chr,$color4); } return; }
for($i=0;
$i<20; ++$i) imagekub($thiz,rand(0,2),rand(0,56),rand (0,14),'?');
$o=-1;
for($i=1;
$i<=57;
$i+=18) imagekub($thiz,rand(2,4),$i,rand(0,14),substr ($_SESSION['code'],(++$o)));
ob_start();
ImageGif($thiz);
ImageDestroy($thiz);
header("Content-Type: image/gif");
header('Content-Disposition: inline; filename=code.gif');
header('Content-Length: '.ob_get_length());
ob_end_flush();
?>
---------------
V@dimYch
22.06.10, 18:47
Постраничный вывод из MySQL
0 && $page <= $all_page)
{ echo '«Назад'; }
if($page < $all_page)
{ echo 'Далее»'; }
}
?>
Каждый из кодеров рано или поздно сталкивается с такой проблемой, как постраничный вывод контента. Сегодня я попытаюсь рассказать, как вышел из этой проблемы я. Вывод конечно реализован при использовании БД, так как файлы по моему личному мнению несерьезное дело и не превели еще ни одного кодера к чему-нибудь хорошему.
Приведенный код (см. выше) выносим в отдельный файл, например, navigation.php. В странице, где нужна "постраничка", коннектинся к БД, инклудим мой файл и в нужном месте вызываем функцию navigation($page, $all_page); Для выборки записей используем запрос $q = mysql_query("SELECT * FROM `table` LIMIT $start, $length"). Все!
Данный листинг выражает лишь мою реализацию постраничного вывода (урезанного и облегченного для понимания новичком) и не претендует на звание "единственно правильного решения". Писал с телефона, т. ч. описывать много не стал, если есть вопросы - задавайте их в комментариях.
---------------
InkMission
06.02.11, 22:24
";
//посмотрим что получится если его инвертировать
echo "";
---------------
InkMission
06.02.11, 22:25
объёмная круговая диаграмма
// $im - идентификатор изображения
// $VALUES - массив со значениями
// $LEGEND - массив с подписями
function Diagramm($im,$VALUES,$LEGEND) {
GLOBAL $COLORS,$SHADOWS;
$black=ImageColorAllocate($im,0,0,0);
// Получим размеры изображения
$W=ImageSX($im);
$H=ImageSY($im);
// Вывод легенды #####################################
// Посчитаем количество пунктов, от этого зависит высота легенды
$legend_count=count($LEGEND);
// Посчитаем максимальную длину пункта, от этого зависит ширина легенды
$max_length=0;
// foreach($LEGEND as $v) if ($max_length($H*2)-10-10) $diametr=($H*2)-20-20-40;
// Вывод тени
for ($j=20;$j>0;$j--)
for ($i=0;$i
---------------
InkMission
06.02.11, 22:25
Перевод цвета изображения в Чёрно-белое
> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if ( $r < 128 && $r < 128 && $b < 128 ) {
imagesetpixel($new, $i, $j, $black);
} elseif ( $r >= 128 && $r >= 128 && $b >= 128 ) {
imagesetpixel($new, $i, $j, $white);
}
}
}
header("Content-type: image/jpeg");
imagejpeg($new, null, 100);
imagedestroy($im);
imagedestroy($new);
?>
---------------
InkMission
06.02.11, 22:26
Получаем все картинки со страницы
]+/i', $data, $media);
unset($data);
$data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3" ,$media[0]);
foreach($data as $url)
{
$info = pathinfo($url);
if (isset($info['extension']))
{
if (($info['extension'] == 'jpg') ||
($info['extension'] == 'jpeg') ||
($info['extension'] == 'gif') ||
($info['extension'] == 'png))
array_push($images, $url);
}
}
?>
---------------
InkMission
06.02.11, 22:27
Применение Google Image Api
результатов: =$data->responseData->cursor->estimatedResultCount;?>
responseData->results as $v) : ?>
;
}
closedir($dh);
}
}
?>
---------------
InkMission
06.02.11, 22:28
Анимационный текст (GIF)
setFormat('gif');
$color = new ImagickPixel('white');
$color->setColor('white');
$string = 'PHPcodes.RU';
$draw = new ImagickDraw();
//$draw->setFont('Arial');
for ($i = 0; $i <= strlen($string); $i++)
{
$part = substr($string, 0, $i);
$animation->newImage(100, 40, $color);
$animation->annotateImage($draw, 10, 20, 0, $part);
$animation->setImageDelay(30);
}
//$draw->setFont('Arial-Bold');
$draw->setTextDecoration(imagick::DECORATION_UNDERLINE);
$animation->newImage(100, 40, $color);
$animation->annotateImage($draw, 10, 20, 0, $string);
$animation->setImageDelay(70);
header('Content-Type: image/gif');
echo $animation->getImagesBlob();
?>
---------------
InkMission
06.02.11, 22:28
Детальная информация об изображении
identifyImage();
echo'Базовые свойства картинки:
';
echo'Разрешение: '.$info['geometry'] ['width'].'x'.$info['geometry']['height'].'
';
echo'Формат: '.$info['format'].'
';
echo'Тип: '.$info['type'].'
';
echo'Сжатие: '.$info['compression'].'
';
echo'Размер: '.$info['fileSize'].'
';
echo'
';
echo'Все свойства картинки:
';
foreach ($im->getImageProperties() as $key => $val)
{
echo $key.' => '.$val.'
';
}
echo'Все профили картинки:
';
foreach ($im->getImageProfiles() as $key => $val)
{
echo'Название: '.$key.' (Размер: '.strlen($val).')
';
}
?>
---------------
InkMission
06.02.11, 22:29
Класс смайлов
$val)
$this->$key = $val;
$file = file($_SERVER['DOCUMENT_ROOT'].$this->dir.$this->pack.'/'.$this->smiles_list);
$rows = sizeof($file);
list($delimiter, $ext) = explode('###', $file[0]);
for($i = 1; $i < $rows; $i++)
{
$arr = explode($delimiter, $file[$i]);
foreach($arr as $val)
{
$val = trim($val);
$this->data[$val] = '';
}
}
}
public function replace($text)
{
return strtr($text, $this->data);
}
}
?>
---------------
InkMission
06.02.11, 22:29
Скругление углов
* Version: 1.1
*/
$filename ='image.jpg';
$radius = 15;
/**
* Чем выше rate, тем лучше качество сглаживания и больше время обработки и
* потребление памяти.
* * Оптимальный rate подбирается в зависимости от радиуса.
*/
$rate = 3;
$img = imagecreatefromstring(file_get_contents($filename));
imagealphablending($img, false);
imagesavealpha($img,true);
$width = imagesx($img);
$height = imagesy($img);
$rs_radius = $radius *$rate;
$rs_size = $rs_radius *2;
$corner =imagecreatetruecolor($rs_size, $rs_size);
imagealphablending($corner, false);
$trans = imagecolorallocatealpha($corner, 255, 255, 255, 127);
imagefill($corner, 0, 0,$trans);
$positions = array(
array(0, 0, 0, 0),
array($rs_radius, 0,$width-$radius, 0),
array($rs_radius,$rs_radius, $width-$radius, $height-$radius),
array(0, $rs_radius, 0,$height-$radius),
);
foreach ($positions as $pos) {
imagecopyresampled($corner, $img, $pos[0],$pos[1], $pos[2], $pos[3], $rs_radius,$rs_radius, $radius, $radius);
}
$lx = $ly = 0;
$i =-$rs_radius;
$y2 =-$i;
$r_2 = $rs_radius *$rs_radius;
for (; $i <= $y2; $i++) {
$y = $i;
$x = sqrt($r_2-$y * $y);
$y += $rs_radius;
$x += $rs_radius;
imageline($corner, $x,$y, $rs_size, $y, $trans);
imageline($corner, 0,$y, $rs_size-$x, $y,$trans);
$lx = $x;
$ly = $y;
}
foreach ($positions as $i => $pos) {
imagecopyresampled($img, $corner, $pos[2],$pos[3], $pos[0], $pos[1], $radius, $radius,$rs_radius, $rs_radius);
}
header('Content-Type: image/png');
imagepng($img);
imagedestroy($img);
?>
---------------
InkMission
06.02.11, 22:30
Конвертор форматов изображений
---------------
InkMission
06.02.11, 22:30
Мини-диаграмма в виде полоски
=0 && $_GET['p']<=100) ? (int)$_GET['p'] : 50;
//Создаем картинку
$image = imagecreate(123, 8);
//Цвет фона
$bg = imagecolorallocate ($image, 0, 0, 0);
//Цвет активной части и надписи к-ва %
$act = imagecolorallocate($image, 210, 210, 210);
//Цвет пассивной части
$emp = imagecolorallocate($image, 250, 250, 250);
imagefill($image, 0, 0, $bg);
imagefilledrectangle($image, 1, 1, 100, 6, $emp);
if($p > 0)
imagefilledrectangle($image, 1, 1, $p, 6, $act);
//Пишем к-во %
imagestring($image, 1, 102, 0, $p.'%', $act);
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
---------------
InkMission
06.02.11, 22:31
Генератор градиентов
---------------
InkMission
06.02.11, 22:31
Увеличение картинки со сглаживанием
---------------
InkMission
06.02.11, 22:32
Функция смены тональности песен
'C',
2 => 'D',
4 => 'E',
5 => 'F',
7 => 'G',
9 => 'A',
10 => 'B',
11 => 'H',
);
$wrong_alts = array(
'A#' => 'B',
'B#' => 'H',
'H#' => 'C',
'E#' => 'F',
);
$data_chords = array_flip($data_half_tones);
$strlen = strlen($chords_string);
$return = '';
for($i = 0; $i < $strlen; $i++)
{
if(in_array($chords_string[$i], $data_half_tones))
{
$new_tone = $data_chords[$chords_string[$i]] + $half_tones_alt;
$new_tone = ($new_tone > 11 ? $new_tone % 12 : $new_tone);
$return .= (array_key_exists($new_tone, $data_half_tones)
? $data_half_tones[$new_tone]
: (array_key_exists($data_half_tones[$new_tone - 1].'#', $wrong_alts)
? $wrong_alts[$data_half_tones[$new_tone - 1].'#']
: $data_half_tones[$new_tone - 1].'#'
)
);
}
else
{
$return .= $chords_string[$i];
}
}
return $return;
}
echo alterate('Em H7 Em H7', +2);
//F#m C#7 F#m C#7
?>
---------------
InkMission
06.02.11, 22:32
Пишим теги id2v1 и id2v2 в MP3 файл
"Album 2",
_TrackNo=>"1",
_Title=>"Name Song",
_Artist=>"Name Artist",
_Group=>"Name Group",
_Year=>"2010",
_Genre=>"Other");
#..........................................
# WRITE ID3 TAGS (Write MP3 [v1, v2]
#..........................................
function writeTags($mp3) {
$fl = file_get_contents($mp3);
$Header = substr($fl,0,10);
$tagLen = calcDecTagLen(substr($Header,6,4),$tagLen);
$music = substr($fl,$tagLen+10,-128);
# Can use input Header for output but you may
# wish to change the output filename for testing
$tagLen = 1024; # or whatever you like >your actual
$Header = substr($Header,0,6).setHexTagLen($tagLen);
file_put_contents($mp3,mkV2Tag($Header,$tagLen).$music.mkV1Tag());
}
# Create the V2 tag
function mkV2Tag($Hdr,$tagLen) {
Global $frames;
$null = chr(0);
$nl3 = $null.$null.$null; # 0 bytes for flags and encoding
$out = "";
foreach($frames as $ky=>$val) {
$n=strlen($val)+1;
$out.= $ky.mkFrmLen($n).$nl3.$val;
}
return $Hdr.str_pad($out,$tagLen,$null);
}
# Calculate Tag Length from bytes 6-10 of existing header
function calcDecTagLen($word) {
$m = 1;
$int = 0;
for ($i=strlen($word)-1;$i>-1;$i--) {
$int +=$m*ord($word[$i]);
$m=$m*128;
}
return $int;
}
# Make the 4 byte frame length value for the V2tag
function mkFrmLen($int) {
$hx = "";
while ($int>0) {
$n = $int % 256;
$hx = chr($n).$hx;
$int=floor($int/256);
}
return str_pad($hx,4,chr(0),STR_PAD_LEFT);
}
# Create the 128 byte V1 tag
function mkV1Tag() {
Global $frames;
$tagOut = "TAG".
adj($frames[_Title]).
adj($frames[_Artist]).
adj($frames[_Album]).
str_pad($frames[_Year],4).
str_pad(" ",29," ").
chr($frames[_TrackNo]).
chr($n);
return $tagOut;
}
# Pad the header to 30 characters
function adj($str) {
return substr(str_pad($str,30,chr(0)),0,30);
}
function setHexTagLen($int) {
$n = pow(128,3);
$intVar = $int;
$m = "";
for ($i=0;$i<4;$i++) {
$m .= chr(floor($intVar/$n));
$intVar = $intVar % $n;
$n=$n/128;
}
return $m;
}
////// EXAMPLE
writeTags('song_files.mp3');
?>
---------------
InkMission
06.02.11, 22:33
извлечение скринов из тем .nth
extract(PCLZIP_OPT_BY_NAME,'theme_descriptor.xml',PCLZIP_OPT_EXTRACT_AS_STRING);
$content = $content[0]['content'];
$teg = simplexml_load_string($content)->wallpaper['src'] or
$teg = simplexml_load_string($content)->wallpaper['main_display_graphics'];
$image_resourse = $nth->extract(PCLZIP_OPT_BY_NAME,"$teg",PCLZIP_OPT_EXTRACT_AS_STRING);
$image_resourse = $image_resourse[0]['content'];
header( "Content-type:image/jpeg" );
print $image_resourse;
?>
---------------
InkMission
06.02.11, 22:33
Снятие скриншота с 3gp видеоролика
GetFrameWidth();
//вы
---------------
InkMission
06.02.11, 22:34
изменение битрейта mp3
---------------
InkMission
06.02.11, 22:34
Jad генератор на основе ZipArchive
open($file)) {
$fp = $z->getStream('META-INF/MANIFEST.MF');
if(!$fp) exit("не удалось открыть манифест");
//читаем данные
while (!feof($fp)) {
$jad .= fread($fp, 200);
}
fclose($fp);
//дописываем что надо
$jad .= "\nMIDlet-Jar-Size: ".filesize($file)."\nMIDlet-Jar-URL: $file";
//сохраняем
file_put_contents('test.jad', $jad);
}
//А вообще, можно извлечь манифест еще проще
echo file_get_contents("zip://$file#META-INF/MANIFEST.MF");
//http://ru.php.net/manual/en/function.ziparchive-getstream.php
?>
---------------
InkMission
06.02.11, 22:34
Определение параметров mp3 файла
getDuration();
//аудио битрейт
echo $ff->getAudioBitRate();
//Возвратит поле "авторское право" из аудио или видео файла
echo $ff->getCopyright();
//Возвратит ID3 поле "Артист" из mp3 файла
echo $ff->getArtist();
//Возвратит ID3 поле "Жанр" из mp3 файла
echo $ff->getGenre();
//Возвратит ID3 поле "номер дорожки" из mp3 файла
echo $ff->getTrackNumber();
//Возвратит ID3 поле "Год" из mp3 файла
echo $ff->getYear();
//Возвратит название аудио кодека который использован видео файл как строку
echo $ff->getAudioCodec();
//Возвратит количество аудио каналов (1 моно 2 стерео и т д) как целое число
echo $ff->getAudioChannels();
/*моя функция форматирования времени трека*/
function dur($d) {
if ($d<60) {
return '00:'.sprintf('%02d',$d);
}
$s=$d%60;
return sprintf('%02d',($d-$s)/60).':'.sprintf('%02d',$s);
}
//пример
echo dur('105'); //01:45
---------------
InkMission
06.02.11, 22:35
Обрезка видео ffmpeg
Color
";
if (isset($_GET['kod'])){
echo "";
echo "This #".$_GET['kod']."
";
}
else
echo "";
?>
?>
---------------
InkMission
06.02.11, 22:35
записываем id3 теги на мп3 фаилы
"Re:Start",
"artist" => "Re:Legion",
"comment" => "A nice track"
);
$result = id3_set_tag( "path/to/example.mp3", $data, ID3_V1_0 );
if ($result === true) {
echo "Tag succesfully updatedn";
}
?>
---------------
InkMission
06.02.11, 22:36
Извлечение картинки из темы SE
extractInString('Theme.xml');
$image_puth = simplexml_load_string($deskside_file)-> Standby_image['Source'] or
simplexml_load_string($deskside_file)-> Desktop_image['Source'];
$image_string = $archive -> extractInString($image_puth);
header( "Content-type:image/jpeg" );
print $image_string;
?>
---------------
InkMission
06.02.11, 22:37
Отправка сообщений на email
n'
.'From: "' . $smail .'" <' . $smail .'>n'
.'Return-Path: <' . $smail .'>n'
.'X-Priority: ' . $pr .'n'
.'X-Mailer: CMS Mailern';
return mail( $email, $subject, $message, $mheader );
?>
---------------
InkMission
06.02.11, 22:37
Достаём инфу из Java
open($jar) === TRUE) {
$cont = $zip->getFromName('META-INF/MANIFEST.MF');
$midp=explode('MicroEdition-Profile: ',$cont);
$midp=strtok($midp[1],'
');
$config=explode('MicroEdition-Configuration: ',$cont);
$config=strtok($config[1],'
');
$version=explode('MIDlet-Version: ',$cont);
$version=strtok($version[1],'
');
$name=explode('MIDlet-Name: ',$cont);
$name=strtok($name[1],'
');
$vendor=explode('MIDlet-Vendor: ',$cont);
$vendor=strtok($vendor[1],'
');
$zip->close();
echo 'Название: '.$name.'
Версия: '.$version.'
Производитель: '.$vendor.'
Профиль: '.$midp.'
Конфигурация: '.$config;
}
?>
---------------
InkMission
06.02.11, 22:37
Анимация из видео
getFrame($frame);
$gif->addFrame($image);}
?>
---------------
InkMission
06.02.11, 22:38
Винимаем иконку из Java-приложения
open(base64_decode($_GET['jar'])) === TRUE) {
if($manifest = $zip->getFromName('META-INF/MANIFEST.MF')){
if (strpos($manifest, 'MIDlet-Icon: ') !== FALSE){
$jad = explode('MIDlet-Icon: ',$manifest);
$icon = str_replace("\n",' ', $jad[1]);
$icon = str_replace("\r",' ', $icon);
$icon = strtok($icon,' ');
$icon = preg_replace('#/#', NULL, $icon);
}
else $icon='icon.png';
}else exit;
if($image = $zip->getFromName($icon)){
$image = imagecreatefromstring($image);
$width=imagesx($image);
$height=imagesy($image);
$x_ratio=16/$width;
$y_ratio=16/$height;
if(($width<=16)&&($height<=16)){
$tn_width=$width;
$tn_height=$height;
}elseif(($x_ratio*$height)<16){
$tn_height=ceil($x_ratio*$height);
$tn_width=16;
}else{
$tn_width=ceil($y_ratio*$width);
$tn_height=16;
}
$dst=ImageCreate($tn_width,$tn_height);
imagecopyresampled($dst, $image, 0, 0, 0, 0, $tn_width,$tn_height,$width,$height);
$image = $dst;
}else{
//эта иконка будеет, если в архиве нет иконки
$image = imagecreatefrompng('my_icon.png');
}
header('Content-type: image/png');
ImagePng($image);
ImageDestroy($image);
$zip->close();
}
?>
---------------
InkMission
06.02.11, 22:39
Защита от sql инъекций при помощи pdo_mysql
"SET NAMES utf8"));
//делаем sql запрос на создание таблицы (id|user|time)
$q = $db->prepare("CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) unsigned NOT NULL auto_increment,
`user` varchar(20) NOT NULL,
`time` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ");
//выполняем запрос
$q->execute();
//теперь давайте добавим запись
$q = $db->prepare("INSERT INTO test SET user=? ");
$q->execute(array('имя1'));
/*
в таблице добавилась запись
обратите внимание, что я не использовал никакие функции для фильтрации
(mysql_real_escape_string и подобные), просто обозначит placeholder куда вставить
значение через ?, а потом при execute задал значение массивом
*/
//давайте теперь изменим добавленную запись
//получаем последний добавленный ид
$id = $db->lastInsertId();
//запрос на update
$db->prepare("UPDATE test SET user=? WHERE id=? ")->execute(array("новое ' имя", $id));
/*
Обратите внимание, сейчас я воспользовался цепочкой вызовов ->()->
чтобы не заводить переменную $q как в примерах выше.
Параметры в массиве должны идти в строгом порядке, как в запросе,
действительно, будет нелепо перепутать id и name местами ;)
Даже не смотря на то, что в параметре присутствует кавычка запрос выполянется нормально,
pdo все экранирует самостоятельно.
*/
//если не нравятся ? или хотите изменить порядок, можно заюзать именнованные параметры
$db->prepare("INSERT INTO test SET user=:user ")->execute(array(':user'=>'новый юзер'));
/*
Теперь массив с параметрами не такой безликий как раньше, какой способ задания параметров
выбрать решайте сами
*/
//Ну и напоследок: как извлекать записи
$q = $db->prepare("SELECT * FROM test");
$q->execute();
$data = $q->fetchAll();
print_r($data);
//подробную информацию о pdo_mysql вы всегда можете найти в гугле
---------------
InkMission
06.02.11, 22:40
Защита от XSS
function antihack(&$var){
if(is_array($var)) array_walk($var, 'antihack');
else $var = htmlspecialchars(stripslashes(mysql_real_escape_string($var)), ENT_QUOTES, 'UTF-8');
}
foreach(array('_SERVER', '_GET', '_POST', '_COOKIE', '_REQUEST') as $v){
if(!empty(${$v})) array_walk(${$v}, 'antihack');
}
?>
---------------
InkMission
06.02.11, 22:40
3D Captcha
render();
class Capthca3d{
const CHARS = 'WEafRTYIPAGHJKXBNM3479j';
protected $hypot = 8;
protected $image = null;
protected $text = '';
public function __construct()
{
$this->time = microtime(true);
$this->generateCode();
}
protected function generateCode()
{
$chars = self::CHARS;
for($i =0; $i<3; $i++){
$this->text .= $chars{ mt_rand(0,22)};
}
}
public function getText()
{
return $this->text;
}
protected function getProection($x1,$y1,$z1)
{
$x = $x1 * $this->hypot;
$y = $z1 * $this->hypot;
$z = -$y1 * $this->hypot;
$xx = 0.707106781187;
$xy = 0;
$xz = -0.707106781187;
$yx = 0.408248290464;
$yy = 0.816496580928;
$yz = 0.408248290464;
$cx = $xx*$x + $xy*$y + $xz*$z;
$cy = $yx*$x + $yy*$y + $yz*$z+ 20 * $this->hypot;
return array(
'x' => $cx,
'y' => $cy
);
}
function zFunction($x,$y){
$z = imagecolorat($this->image,$y/2,$x/2)>0?2.6:0;
if( $z != 0 ){
$z += mt_rand(0,60)/100;
}
$z += 1.4 * sin(($x+$this->startX)*3.141592654/15)*sin(($y+$this->startY)*3.141592654/15);
return $z;
}
public function render()
{
$xx =30;
$yy =60;
$this->image = imageCreateTrueColor($yy * $this->hypot , $xx * $this->hypot);
$whiteColor = imageColorAllocate($this->image,255,255,255);
imageFilledRectangle($this->image,0,0,$yy * $this->hypot , $xx * $this->hypot,$whiteColor);
$textColor = imageColorAllocate($this->image,0,0,0);
imageString($this->image, 5, 3, 0, $this->text, $textColor);
$this->startX = mt_rand(0,$xx);
$this->startY = mt_rand(0,$yy);
$coordinates = array();
for($x = 0; $x < $xx + 1; $x++){
for($y = 0; $y < $yy + 1; $y++){
$coordinates[$x][$y] = $this->getProection($x,$y,$this->zFunction($x,$y));
}
}
for($x = 0; $x < $xx; $x++){
for($y = 0; $y < $yy; $y++){
$coord = array();
$coord[] = $coordinates[$x][$y]['x'];
$coord[] = $coordinates[$x][$y]['y'];
$coord[] = $coordinates[$x+1][$y]['x'];
$coord[] = $coordinates[$x+1][$y]['y'];
$coord[] = $coordinates[$x+1][$y+1]['x'];
$coord[] = $coordinates[$x+1][$y+1]['y'];
$coord[] = $coordinates[$x][$y+1]['x'];
$coord[] = $coordinates[$x][$y+1]['y'];
$c = (int) ($this->zFunction($x,$y)*32);
$linesColor = imageColorAllocate($this->image, $c, $c, $c);
imageFilledPolygon($this->image, $coord, 4, $whiteColor);
imagePolygon($this->image, $coord, 4, $linesColor);
}
}
$textColor = imageColorAllocate($this->image,0,0,0);
imageString($this->image, 5, 3, 0, $this->text, $whiteColor);
imageString($this->image, 1, 3, 0, (microtime(true)-$this->time), $textColor);
header('Content-Type: image/png');
imagepng($this->image);
imagedestroy($this->image);
}
}
?>
---------------
InkMission
06.02.11, 22:40
Проверка хоста
---------------
InkMission
06.02.11, 22:41
Защита от граббера
---------------
InkMission
06.02.11, 22:42
Антиспам
'.$text[0].'';
else
return '[реклама]';
}
function antispam($text)
{
return preg_replace_callback("#(https?|ftp)://\S+[^\s.,>)\];'\"!?]#", 'antispam_help', $text);
}
?>
---------------
InkMission
06.02.11, 22:42
MD5 Decrypter
(.+?)\n\
.+$#s', '$1', curl_exec($ch), 1, $count);
curl_close($ch);
return $count ? $result : FALSE;
}
echo md5_decode('adc41cdc9f1515c560ccc70d899c4e42');
?>
---------------
InkMission
06.02.11, 22:42
Простая каптча
form.php
result.php
Try Again
';
}else{
echo'The numbers Match!
Try Again
';
}
?>
---------------
InkMission
06.02.11, 22:43
Антивирус на PHP
// Заваливаем массив списком нужных нам директорий
$dir = array("./dir/");
// Расширение для сортировки
$extentions = array(".php");
// масссив из безопасных php-файлов файлов
$safe_files = array("index.php","shell.php");
// Каждый элемент массива - как отдельную директорию
foreach ($dir as $get_dir) {
// Открываем хэндл директории
$dir_handle = opendir($get_dir);
// Получаем данные из директории
while ( false !== ($file = readdir($dir_handle)) ) {
// Находим файлы с расширением пэхопэ
$ext = strtolower(strrchr($file, "."));
// Отсортируем все .php файлы
if ( in_array($ext, $extentions) ) {
// Собираем новый массив из php-файлов
$php_files[] = $file;
}
}
}
?>
---------------
InkMission
06.02.11, 22:44
Win to Utf8
"А","\xC1"=>"Б","\xC2"=>"В","\xC3"=>"Г","\xC4"=>"Д","\xC5"=>"Е","\xA8"=>"Ё","\xC6"=>"Ж","\xC7"=>"З","\xC8"=>"И","\xC9"=>"Й","\xCA"=>"К","\xCB"=>"Л","\xCC"=>"М",
"\xCD"=>"Н","\xCE"=>"О","\xCF"=>"П","\xD0"=>"Р","\xD1"=>"С","\xD2"=>"Т","\xD3"=>"У","\xD4"=>"Ф","\xD5"=>"Х","\xD6"=>"Ц","\xD7"=>"Ч","\xD8"=>"Ш","\xD9"=>"Щ","\xDA"=>"Ъ",
"\xDB"=>"Ы","\xDC"=>"Ь","\xDD"=>"Э","\xDE"=>"Ю","\xDF"=>"Я","\xE0"=>"а","\xE1"=>"б","\xE2"=>"в","\xE3"=>"г","\xE4"=>"д","\xE5"=>"е","\xB8"=>"ё","\xE6"=>"ж","\xE7"=>"з",
"\xE8"=>"и","\xE9"=>"й","\xEA"=>"к","\xEB"=>"л","\xEC"=>"м","\xED"=>"н","\xEE"=>"о","\xEF"=>"п","\xF0"=>"р","\xF1"=>"с","\xF2"=>"т","\xF3"=>"у","\xF4"=>"ф","\xF5"=>"х",
"\xF6"=>"ц","\xF7"=>"ч","\xF8"=>"ш","\xF9"=>"щ","\xFA"=>"ъ","\xFB"=>"ы","\xFC"=>"ь","\xFD"=>"э","\xFE"=>"ю","\xFF"=>"я");
return strtr($str, $win1251utf8);
}
?>
---------------
InkMission
06.02.11, 22:45
PHP перекодируем текст из HTML-последовательностей и наоборот
"А", "а" => "а",
"Б" => "Б", "б" => "б",
"В" => "В", "в" => "в",
"Г" => "Г", "г" => "г",
"Д" => "Д", "д" => "д",
"Е" => "Е", "е" => "е",
"Ё" => "Ё", "ё" => "ё",
"Ж" => "Ж", "ж" => "ж",
"З" => "З", "з" => "з",
"И" => "И", "и" => "и",
"Й" => "Й", "й" => "й",
"К" => "К", "к" => "к",
"Л" => "Л", "л" => "л",
"М" => "М", "м" => "м",
"Н" => "Н", "н" => "н",
"О" => "О", "о" => "о",
"П" => "П", "п" => "п",
"Р" => "Р", "р" => "р",
"С" => "С", "с" => "с",
"Т" => "Т", "т" => "т",
"У" => "У", "у" => "у",
"Ф" => "Ф", "ф" => "ф",
"Х" => "Х", "х" => "х",
"Ц" => "Ц", "ц" => "ц",
"Ч" => "Ч", "ч" => "ч",
"Ш" => "Ш", "ш" => "ш",
"Щ" => "Щ", "щ" => "щ",
"Ъ" => "Ъ", "ъ" => "ъ",
"Ы" => "Ы", "ы" => "ы",
"Ь" => "Ь", "ь" => "ь",
"Э" => "Э", "э" => "э",
"Ю" => "Ю", "ю" => "ю",
"Я" => "Я", "я" => "я"
);
if ($to_uni) {
$str = strtr($str, $cp);
} else {
foreach ($cp as $c) {
$cpp[$c] = array_search($c, $cp);
}
$str = strtr($str, $cpp);
}
return $str;
}
echo unicon('Москва Тверская 7'); //выводим расшифрованую запись в браузер
?>
А вот ещё нашёл онлайн тулзу для такого рода преобразований http://wwwguru.net/sandbox/index.php
?>
---------------
InkMission
06.02.11, 22:45
Декодирует строку в указанную кодировку
223 and $code<256) or ($code==179) or ($code==180) or ($code==186) or ($code==191)) $cp1251++; // а-я, і, ґ, є, Ї
if (($code>191 and $code<224) or ($code==164) or ($code==166) or ($code==167) or ($code==173)) $koi8u++; // а-я, є, і, ї, ґ
}
if ($cp1251>$koi8u) $detect='windows-1251';
else $detect='koi8-u';
}
if ($encoding==$detect) return $string;
else return iconv($detect, $encoding."//TRANSLIT", $string);
}
?>
---------------
InkMission
06.02.11, 22:46
Перекодировка из двухбайтового юникода в utf-8
';
}elseif(is_dir($dir.'/'.$f)){
echo ' changing dir
';
doit($dir.'/'.$f);
}else{
echo ' Skipping
';
}
}
}
}
doit('.');
?>
---------------
DAG-YASTREB-05
26.05.11, 13:37
а как их установить на сайт
---------------
Superman1
17.07.12, 8:07
А для чeго эти коды?
---------------
T1N
17.07.12, 8:15
В смысле для чего? Человек, понимающий в программировании знает для чего они и куда их впихнуть.)
---------------
Veshok
17.07.12, 9:39
А для чeго эти коды?Для использование в программном коде сайта
---------------
ApxuTeKToP
25.04.13, 20:20
Есть много полезного:)
---------------
LdR
08.09.13, 9:51
Спасибо тебе veshok !!!!
---------------
ADILET
15.10.13, 22:17
Прозрачный картинка
только изменяем для себе путь к картинку и размер, можете убрат размер картинку
---------------
ADILET
15.10.13, 22:38
Думаю всем понадобиться:
код перенаправить на другую страницу
echo '';
header('Refresh: 3; URL=http://адрес куда хотите направить');
echo 'Через несколько сек. вы будете перенаправлены на другую страницу';
echo '
';
код пишем на файл
---------------