Полезные 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() { ?>
Выберите файл для загрузки
"; 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 объёмная круговая диаграмма ($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
результатов: 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] = ''.$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 --------------- 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
Random Number
result.php Try Again
'; }else{ echo'The numbers Match!
Try Again
'; } ?> --------------- InkMission 06.02.11, 22:43 Антивирус на PHP --------------- 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 '
'; код пишем на файл ---------------