Каждый веб-разработчик хранит полезные фрагменты кода в личной библиотеке, чтобы не "изобретать велосипед" каждый раз заново. В этой статье собраны интересные и полезные фрагменты PHP-кода, которые я добавил в свою библиотеку за последние 3 месяца.
Этот простой фрагмент PHP-кода конвертирует PDF-файл в изображение JPG. Это очень полезно, если вам нужно создать изображение для предварительного просмотра ваших файлов в формате PDF. Пожалуйста, обратите внимание, что у вас должно быть установлено расширение Image Magick на вашем сервере, чтобы использовать этот код.
$pdf_file = './pdf/demo.pdf';
$save_to = './jpg/demo.jpg'; //Убедитесь, что Apache имеет разрешения на запись в эту папку! (частая проблема)
//выполните ImageMagick коммандой 'convert' и конвертируйте PDF в JPG с указанными настройками
exec('convert "'.$pdf_file.'" -colorspace RGB -resize 800 "'.$save_to.'"', $output, $return_var);
if ($return_var == 0) {
//если конвертация прошла успешно
print "Conversion OK";
} else print "Ошибка конвертации.<br />" . $output;
Источник: https://snipplr.com/view/48513
Для того, чтобы обезопасить вашу базу данных от взлома, вы должны тщательно проверять все данные, которые вы собираетесь сохранить. Эта удобная функция проверит сохраняемую информацию и не позволит вставить вредоносный код в базу данных.
function cleanInput($input) {
$search = array(
'@<script[^>]*?>.*?</script>@si', // Удаляем javascript
'@<;[\/\!]*?[^<>]*?>@si', // Удаляем HTML теги
'@<style[^>]*?>.*?</style>@siU', // Удаляем теги style
'@<![\s\S]*?--[ \t\n\r]*>@' // Удаляем многострочные комментарии
);
$output = preg_replace($search, '', $input);
return $output;
}
function sanitize($input) {
if (is_array($input)) {
foreach($input as $var=>$val) {
$output[$var] = sanitize($val);
}
}
else {
if (get_magic_quotes_gpc()) {
$input = stripslashes($input);
}
$input = cleanInput($input);
$output = mysql_real_escape_string($input);
}
return $output;
}
// Использование:
$bad_string = "Привет! <script src='http://www.evilsite.com/bad_script.js'></script> Какой хороший сегодня день!";
$good_string = sanitize($bad_string);
// $good_string вернет "Привет! Какой хороший сегодня день!"
// Также используйте для проверки POST/GET данных
$_POST = sanitize($_POST);
$_GET = sanitize($_GET);
Источник: https://css-tricks.com/snippets/php/sanitize-database-inputs/
Вместо предоставления традиционного адреса изображения, вы можете использовать данные изображения в кодировке base64 и добавить их в атрибут src. Это экономит сетевые запросы для каждого изображения, и предотвращает попытки несанкционированного доступа к каталогам с изображениями. Обратите внимание, что в IE7 и ниже, это работать не будет.
// имя изображения
$image = 'cricci.jpg';
// кодируем изображение в base64
$imageData = base64_encode(file_get_contents($image));
// формат пути к изображению: data:{mime};base64,{data};
$src = 'data: '.mime_content_type($image).';base64,'.$imageData;
//Вывод изображения
echo '<img src="',$src,'">';
Источник: https://davidwalsh.name/data-uri-php
Это простая, но эффективная функция для генерации CSV-файла из массива PHP. Функция принимает 3 параметра: данные, разделители полей CSV (по умолчанию это запятая) и ограничители полей CSV (по умолчанию - двойные кавычки).
function generateCsv($data, $delimiter = ',', $enclosure = '"') {
$handle = fopen('php://temp', 'r+');
foreach ($data as $line) {
fputcsv($handle, $line, $delimiter, $enclosure);
}
rewind($handle);
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
return $contents;
}
Источник: https://snipplr.com/view/66856/generate-csv-file-from-array-using-php/
Эта функция принимает два параметра: zip-архив и папку, в которую нужно архив распаковать.
function unzip_file($file, $destination){
// создаем объект
$zip = new ZipArchive() ;
// открываем архив
if ($zip->open($file) !== TRUE) {
die ('Невозможно открыть архив');
}
// распаковываем содержимое в указанную директорию
$zip->extractTo($destination);
// закрываем архив
$zip->close();
echo 'Архив распакован';
}
Источник: https://www.catswhocode.com/blog/snippets/unzip-zip-files
Этот полезный фрагмент кода поможет вам определить местоположения конкретного IP. Функция принимает один IP в качестве параметра, и возвращает местоположение. Если местоположение не найдено, возвращается UNKNOWN.
function detect_city($ip) {
$default = 'UNKNOWN';
if (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost')
$ip = '8.8.8.8';
$curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';
$url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);
$ch = curl_init();
$curl_opt = array(
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT => $curlopt_useragent,
CURLOPT_URL => $url,
CURLOPT_TIMEOUT => 1,
CURLOPT_REFERER => '<a href="http:// ."" rel="nofollow" target="_blank" >http://' .</a> $_SERVER['HTTP_HOST'],
);
curl_setopt_array($ch, $curl_opt);
$content = curl_exec($ch);
if (!is_null($curl_info)) {
$curl_info = curl_getinfo($ch);
}
curl_close($ch);
if ( preg_match('{<li>City : ([^<]*)</li>}i', $content, $regs) ) {
$city = $regs[1];
}
if ( preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs) ) {
$state = $regs[1];
}
if ( $city!='' && $state!='' ) {
$location = $city . ', ' . $state;
return $location;
} else {
return $default;
}
}
Источник: https://www.catswhocode.com/blog/snippets/detect-location-by-ip
Логи ошибок являются чрезвычайно полезными, и их всегда просматривают, чтобы узнать что за проблема произошла. Но давайте будем честны: когда мы думаем, что все в порядке, мы не просматриваем логи очень часто и серьезная ошибка может долго просуществовать на вашем сайте.
Эта функция будет отсылать вам по электронной почте логи, как только ошибка произойдет на вашем сайте. Очень удобно, чтобы быть всегда в курсе проблем вашего сайта.
function nettuts_error_handler($number, $message, $file, $line, $vars){
$email = "
<p>Ошибка ($number) произошла в строке
<strong>$line</strong> в <strong>файле: $file.</strong>
<p> $message </p>";
$email .= "<pre>" . print_r($vars, 1) . "</pre>";
$headers = 'Content-type: text/html; charset=UTF-8' . "\r\n";
// Кому отсылаем email...
error_log($email, 1, <span id="cloak80e8eace320bb1b97f99c988d200306f">Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.</span><script type='text/javascript'>
document.getElementById('cloak80e8eace320bb1b97f99c988d200306f').innerHTML = '';
var prefix = 'ma' + 'il' + 'to';
var path = 'hr' + 'ef' + '=';
var addy80e8eace320bb1b97f99c988d200306f = ''you' + '@';
addy80e8eace320bb1b97f99c988d200306f = addy80e8eace320bb1b97f99c988d200306f + 'youremail' + '.' + 'com';
var addy_text80e8eace320bb1b97f99c988d200306f = ''you' + '@' + 'youremail' + '.' + 'com';document.getElementById('cloak80e8eace320bb1b97f99c988d200306f').innerHTML += '<a ' + path + '\'' + prefix + ':' + addy80e8eace320bb1b97f99c988d200306f + '\'>'+addy_text80e8eace320bb1b97f99c988d200306f+'<\/a>';
</script>', $headers);
// Определитесь как реагировать на ошибки (на стороне пользователя)
// Либо это сообщение об ошибке, или завершить работу скрипта ...
// Этот код прекращает работу скрипта, если ошибка была более чем просто уведомление.
if ( ($number !== E_NOTICE) && ($number < 2048) ) {
die("Произошла ошибка. Попробуйте зайти позже");
}
}
// Мы должны использовать нашу пользовательскую функцию для обработки ошибок.
set_error_handler('nettuts_error_handler');
// Trigger an error... (var doesn't exist)
echo $somevarthatdoesnotexist;
Источник: https://net.tutsplus.com/tutorials/php/quick-tip-email-error-logs-to-yourself-with-php/
Если вы работаете с визуальными редакторами, то, я думаю, вы уже имели множество проблем при вставке текста напрямую из Microsoft Word, это приводит к плохой разметки и различных проблем в коде.
Следующая функция очищает от различного "мусора" код и возвращает чистый HTML, который можно безопасно использовать на сайте.
function cleanHTML($html) {
$html = ereg_replace("<(/)?(font|span|del|ins)[^>]*>","",$html);
$html = ereg_replace("<([^>]*)(class|lang|style|size|face)=("[^"]*"|'[^']*'|[^>]+)([^>]*)>","<\1>",$html);
$html = ereg_replace("<([^>]*)(class|lang|style|size|face)=("[^"]*"|'[^']*'|[^>]+)([^>]*)>","<\1>",$html);
return $html
}
Источник: https://tim.mackey.ie/CommentView,guid,2ece42de-a334-4fd0-8f94-53c6602d5718.aspx
Если вы выкладываете ваши собственные изображения на веб-сайтах, то есть вероятность, что вы не захотите видеть их везде в интернете на следующий день. Для предотвращения кражи изображений необходимо заявить о себе как создателе изображений, и добавление водяных знаков на них, как правило, хорошая идея. Эта функция позволяет автоматически добавлять водяные знаки на ваши изображения.
function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile) {
list($width, $height) = getimagesize($SourceFile);
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($SourceFile);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);
$black = imagecolorallocate($image_p, 0, 0, 0);
$font = 'arial.ttf';
$font_size = 10;
imagettftext($image_p, $font_size, 0, 10, 20, $black, $font, $WaterMarkText);
if ($DestinationFile<>'') {
imagejpeg ($image_p, $DestinationFile, 100);
} else {
header('Content-Type: image/jpeg');
imagejpeg($image_p, null, 100);
}
imagedestroy($image);
imagedestroy($image_p);
}
/******** использование **********/
$SourceFile = '/home/user/www/images/image1.jpg';
$DestinationFile = '/home/user/www/images/image1-watermark.jpg';
$WaterMarkText = 'Ваш копирайт';
watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile);
Источник: https://www.phpjabbers.com/put-watermark-on-images-using-php-php20.html
Следующий код ищет адреса электронной почты в строке, и заменяет их на ссылку mailto. Довольно полезно на приватных приложений, но из-за спамеров я не рекомендую использовать это на сайте, в блоге или на форуме.
$stringa = "This should format my email address <span id="cloakdb1348ee3bd7f41b78f7c17140d8bf22">Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.</span><script type='text/javascript'>
document.getElementById('cloakdb1348ee3bd7f41b78f7c17140d8bf22').innerHTML = '';
var prefix = 'ma' + 'il' + 'to';
var path = 'hr' + 'ef' + '=';
var addydb1348ee3bd7f41b78f7c17140d8bf22 = 'example' + '@';
addydb1348ee3bd7f41b78f7c17140d8bf22 = addydb1348ee3bd7f41b78f7c17140d8bf22 + 'domain' + '.' + 'com';
var addy_textdb1348ee3bd7f41b78f7c17140d8bf22 = 'example' + '@' + 'domain' + '.' + 'com';document.getElementById('cloakdb1348ee3bd7f41b78f7c17140d8bf22').innerHTML += '<a ' + path + '\'' + prefix + ':' + addydb1348ee3bd7f41b78f7c17140d8bf22 + '\'>'+addy_textdb1348ee3bd7f41b78f7c17140d8bf22+'<\/a>';
</script>";
$pattern = "/([a-z0-9][_a-z0-9.-]+@([0-9a-z][_0-9a-z-]+\.)+[a-z]{2,6})/i";
$replace = "\\1";
$text = preg_replace($pattern, $replace, $stringa);
echo htmlspecialchars($text);
Источник: https://css-tricks.com/snippets/php/automatic-mailto-links/
© 2008 - 2025 Webmasters.BY Все права защищены
Новый комментарий