Полезные функции РНР (1 пост)

Печать RSS
1721
Кураторы темы:

C

Малиновые штаны
0
Функция считает размер базы данных
<?php
function formatfilesize( $data ) {
if( $data < 1024 ) {
return $data . " bytes";
}else if( $data < 1024000 ) {
return round( ( $data / 1024 ), 1 ) . " KB";
}
else {
return round( ( $data / 1024000 ), 1 ) . " MB";}    
}
$db = mysql_connect ("localhost","user","pass");
mysql_select_db("dbname",$db);
$result = mysql_query( "SHOW TABLE STATUS" );
$dbsize = 0;
while( $row = mysql_fetch_array( $result ) ) {  
$dbsize += $row[ "Data_length" ] + $row[ "Index_length" ];
}
echo "Размер базы данных составляет " . formatfilesize( $dbsize );
?>

Дух
0
Функция изменяет размер изображения,
<?php
%40return boolean */
     function img_resize($src, $out, $width, $height, $color = 0xFFFFFF, $quality = 100) 
     {
    // Если файл не существует
    if (!file_exists($src)) {
        return false;  
    }
    $size = getimagesize($src);
    $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
    $picfunc = 'imagecreatefrom'.$format;
    $gor = $width  / $size[0];
    // Вертикальное соотношение
    $ver = $height / $size[1];  
    // Если не задана высота, вычислить изходя из ширины, пропорционально
    if ($height == 0) {
        $ver = $gor;
        $height  = $ver * $size[1];
    }
	// Так же если не задана ширина
	elseif ($width == 0) {
        $gor = $ver;
        $width   = $gor * $size[0];}
    // Формируем размер изображения
    $ratio   = min($gor, $ver);
    // Нужно ли пропорциональное преобразование
    if ($gor == $ratio)
        $use_gor = true;
    else
        $use_gor = false
    $new_width   = $use_gor  ? $width  : floor($size[0] * $ratio);
    $new_height  = !$use_gor ? $height : floor($size[1] * $ratio);
    $new_left    = $use_gor  ? 0 : floor(($width - $new_width)   / 2);
    $new_top     = !$use_gor ? 0 : floor(($height - $new_height) / 2);
    $picsrc  = $picfunc($src);
    // Создание изображения в памяти
    $picout = imagecreatetruecolor($width, $height);
     // Заполнение цветом
    imagefill($picout, 0, 0, $color);
    // Нанесение старого на новое
    imagecopyresampled($picout, $picsrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);
    // Создание файла изображения
    imagejpeg($picout, $out, $quality); 
	// Очистка памяти
    imagedestroy($picsrc);
    imagedestroy($picout);
    return true;
}
?>
A

Оранжевые штаны
0
Тема существует давно, я вот сейчас все перечитал и заметил что посты некоторые перепутаны номерами, например писал функцию сжатия в четыре поста и эти посты раскиданы теперь друг от друга.
Вот еще несколько полезных функций.
Вставляем новые данные на 5 строку, а саму 5 строку передвигаем на 6:
<?php
$file='base.txt';//файл, в которой добавляем нужную нам строку
$line=5;//строка, на которую вставляем новые данные
$data='новая строка';//данные новой строки
$array=file($file);
$open=fopen($file,'w');
while(list($num,$string)=each($array))
{
if(($num+1)==$line) fwrite($open,$data."\r\n");
fwrite($open,$string);
}
fclose($open);
?>
A

Оранжевые штаны
0
Определяем в какой стране живёт посетитель:
<?php
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
$countrys=array(
ru => Россия,
ua => Украина,
kz => Казахстан
);
$array=array_reverse(explode('.',$host));
if(isset($countrys[$array[0]])){
echo 'Ваша страна: '.$countrys[$array[0]];
}else{
echo 'Откуда Вы пришли - я не знаю :( ';
?>

Транклюкаторщик
0
Быстрое меню для навигации по сайту
В современных браузерах редирект происходит автоматически после того, как выбран элемент.
В браузерах не поддерживающих JS будет показываться кнопка для выбора.
<?php
// Если переменная gotourl не пуста, перенаправляем
if(!empty($_REQUEST['gotourl'])){
	// Если заголовки уже отправлены, выводим ссылку
	if(headers_sent() == FALSE){
		// Выдаём заголовки, указывающие браузеру о перенаправлении на другую страницу
		header('HTTP/1.1 301 Moved Permanently');
		header('Location: '.$_REQUEST['gotourl']);
	}
	// Выходим
    exit('Переход на сайт <a href="'.urlencode($_REQUEST['gotourl']).'">'.$_REQUEST['gotourl'].'</a>');
}else{
// Ну а если пуста, выводим список ссылок
?>
<form action="redirect.php" method="GET">
    <select name="gotourl" size="1" onChange="this.form.submit();">
        <option value="" disabled="disabled" selected="selected">Куда прикажете отправиться?</option>
        <option value="http://visavi.net/">visavi.net</option>
        <option value="http://m.habrahabr.ru/">habrahabr.ru</option>
        <option value="http://bighack.net/">bighack.net</option>
        <option value="http://fakoymozg.ru/">fakoymozg.ru</option>
		<option value="http://ссылка/">название</option>
    </select>
    <noscript>
        <input type="submit" value="Выбрать" />
    </noscript>
</form>
<?php
}
?>
P.S. Скрипт сохраните как redirect.php и подключайте через include
Изменил: Tony V (30.04.2010 / 20:15)
S

Чатланин
0
<?php

// Преобразователь из цельсия в фарингейт и обратно, SmartMan.

class convert {

private $degree;

public function __construct($degree) {
$this->degree = $degree;
}

public function c2f(){
return ($this->degree * 1.8) + 32;
}

public function f2c(){
return ($this->degree - 32) / 1.8;
}
}

// Из цельсия в фарингейт
$c2f = new convert(100);
echo $c2f->c2f().'<br />'; // 212

// Из фарингейта в цельсий
$f2c = new convert(212);
echo $f2c->f2c(); // 100

?>
I

Пришелец
0
 
<?php 
//Вот функция для получения ip адреса даже если пользователь использует прокси сервер
function getip() { 
if(getenv("HTTP_CLIENT_IP")) { 
$ip = getenv("HTTP_CLIENT_IP"); 
} elseif(getenv("HTTP_X_FORWARDED_FOR")) { 
$ip = getenv("HTTP_X_FORWARDED_FOR"); 
} else { 
$ip = getenv("REMOTE_ADDR"); 
} 
$ip = htmlspecialchars(substr($ip,0,15), ENT_QUOTES); 
return $ip; 
} 
?>
I

Пришелец
0
<?php
//проверка есть ли сайт в яндексе
//by Signum
function in_ya($who) 
{ 
$text=file_get_contents('http://yandex.ru/yandsearch?text='.$who); $url=explode('.',$who); 
if(preg_match('/<b>'.$url[0].'<\/b>.<b>'.$url[1].'<\/b>/i', $text)) 
return 'Сайт '.$who.' есть в яндексе'; 
else 
return 'Сайтa '.$who.' нет в яндексе'; 
} 
//Юзать так: 
//echo in_ya('visavi.net'); 
?>
Изменил: iNeeXT (14.07.2010 / 14:55)
A

Оранжевые штаны
0
Функция определения ip-адреса:
<?php
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) and filter_var(strtok(@$_SERVER['HTTP_X_FORWARDED_FOR'],','),FILTER_VALIDATE_IP,FILTER_FLAG_IPV4)!==FALSE){
$ip=strtok($_SERVER['HTTP_X_FORWARDED_FOR'],',');
}
elseif(isset($_SERVER['GEOIP_ADDR']) and filter_var(@$_SERVER['GEOIP_ADDR'],FILTER_VALIDATE_IP,FILTER_FLAG_IPV4)!==FALSE){
$ip=$_SERVER['GEOIP_ADDR'];
}
elseif(isset($_SERVER['HTTP_X_REAL_IP']) and filter_var(@$_SERVER['HTTP_X_REAL_IP'],FILTER_VALIDATE_IP,FILTER_FLAG_IPV4)!==FALSE){
$ip=$_SERVER['HTTP_X_REAL_IP'];
}
elseif(isset($_SERVER['HTTP_CLIENT_IP']) and filter_var(@$_SERVER['HTTP_CLIENT_IP'],FILTER_VALIDATE_IP,FILTER_FLAG_IPV4)!==FALSE){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif(isset($_SERVER['REMOTE_ADDR']) and filter_var(@$_SERVER['REMOTE_ADDR'],FILTER_VALIDATE_IP,FILTER_FLAG_IPV4)!==FALSE){
$ip=$_SERVER['REMOTE_ADDR'];
}else{
$ip='0.0.0.0';
}
?>
Изменил: Azzido (18.08.2015 / 16:15)
N

Голубые штаны
0
<?php
// получаем продолжительность и размеры видео (используем ffmpeg)
 
$movie = new ffmpeg_movie("/www/1.avi");
echo "Продолжительность фильма:  ";
// так как  мы получаем секунды надо нам их перевести в человечный вид ЧЧ:ММ:CC
// для этого мы и используем функцию  gmdate  я думаю фильмов длиной по несколько дней у вас нет =)
echo "<b>".gmdate("H:i:s",$movie->getDuration())."</b><br />"; 
 
// теперь выведем размерв нашего фильма
echo "Размеры фильма:  ";
echo "<b>".$movie->getFrameWidth()." x ".$movie->getFrameHeight()."</b>"; 
 
?>
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск