Полезные функции РНР (1 пост)
1484
Кураторы темы:
Azzido
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 ); ?>
Удаленный
06.02.2010 / 06:58
Дух
Дух
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; } ?>
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); ?>
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 будет показываться кнопка для выбора.
В современных браузерах редирект происходит автоматически после того, как выбран элемент.
В браузерах не поддерживающих 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)
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 ?>
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; } ?>
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)
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)
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>"; ?>
Для выполнения действия необходимо авторизоваться!