Ru-Board.club
← Вернуться в раздел «Web-программирование»

» PHP: Полезные (интересные и оригинальные) решения

Автор: dartvaider
Дата сообщения: 01.12.2005 10:08
НАРОД подскажите плиз есть ли где нибуть скрипт новостей на php который черпает новости с RSS 2.0
ОЧЕНЬ НАДО
Автор: hacsoft
Дата сообщения: 03.12.2005 15:11
Функция обработки BB-кодов однопроходная:

Код: function protection ($text)
// Замена опасных символов:
{
    return str_replace (array("&", "'", "\"", "<", ">"), array("&amp;", "&#39;", "&quot;", "&lt;", "&gt;"), $text);
}

function check_url ($url)
// Корректироваа URL-адреса:
{
    return preg_match ("#^(http://|https://|ftp://|mailto#", $url)
        ? $url
        : $url = "http://" . str_replace (":", "%3A", $url);
}

$colors = array(
        "darkred" => 1,
        "red" => 1,
        "orange" => 1,
        "brown" => 1,
        "yellow" => 1,
        "green" => 1,
        "olive" => 1,
        "cyan" => 1,
        "cyan" => 1,
        "blue" => 1,
        "darkblue" => 1,
        "indigo" => 1,
        "violet" => 1,
        "white" => 1,
        "silver" => 1,
        "gray" => 1,
        "black" => 1);

function bb_codes ($text, $smiles)
// Обработка BB-кодов:
{
    global $colors;
    $text = str_replace ("`", "'", $text);
    $codes = array();
    $cnum = 0;
    $res = "";
    $p = 0;
    while ( true )
    {
        if ( ($l = strpos ($text, "[", $p)) === false )
        {
            $res .= substr ($text, $p);
            break;
        }
        if ( ($r = strpos ($text, "]", $l)) === false )
        {
            $res .= substr ($text, $p);
            break;
        }
        $res .= substr ($text, $p, $l - $p);
        $tag = substr ($text, $l + 1, $r - $l - 1);
        if ( ($e = strpos ($tag, "=")) !== false )
        {
            $val = substr ($tag, $e + 1);
            $tag = substr ($tag, 0, $e);
        } else $val = "";
        $c = $p = $r;
        while ( ($c = strpos ($text, "[/$tag]", $c + 1)) !== false &&
            ($p = strpos ($text, "[$tag]", $p + 1)) !== false && $p < $c );
        if ( $c === false )
        {
            $res .= "[";
            $p = $l + 1;
            continue;
        }
        $con = substr ($text, $r + 1, $c - $r - 1);
        $err = true;
                
        if ( $tag === "b" )
        { // Жирный:
            $con = "<b class=\"bb\">" . bb_codes ($con, $smiles) . "</b>";
            $err = false;
        } elseif ( $tag === "i" )
        { // Курсив:
            $con = "<i class=\"bb\">" . bb_codes ($con, $smiles) . "</i>";
            $err = false;
        } elseif ( $tag === "u" )
        { // Подчеркнутый:
            $con = "<u class=\"bb\">" . bb_codes ($con, $smiles) . "</u>";
            $err = false;
        } elseif ( $tag === "center" )
        { // По центру:
            $con = "<div align=\"center\" class=\"bb\">" . bb_codes ($con, $smiles) . "</div>";
            $err = false;
        } elseif ( $tag === "right" )
        { // По правому краю:
            $con = "<div align=\"right\" class=\"bb\">" . bb_codes ($con, $smiles) . "</div>";
            $err = false;
        } elseif ( $tag === "color" )
        { // Цвет шрифта:
            $val = strtolower ($val);
            if ( isset ($colors[$val]) || preg_match ("/^#[0-9a-f]{6}$/", $val) )
            {
                $con = "<font color=\"$val\" class=\"bb\">" . bb_codes ($con, $smiles) . "</font>";
                $err = false;
            }
        } elseif ( $tag === "size" )
        { // Размер шрифта:
            if ( preg_match ("#^[1-7]$#", $val) )
            {
                $con = "<font size=\"$val\" class=\"bb\">" . bb_codes ($con, $smiles) . "</font>";
                $err = false;
            }
        } elseif ( $tag === "no" )
        { // Не обрабатывать BB-коды:
            $con = nl2br (protection ($con));
            $err = false;
        } elseif ( $tag === "code" )
        { // Исходный код:
            if ( ! empty ($con) )
            {
                $comment = protection (( empty ($val) ) ? "Code:" : "Code ($val):");
                $con = protection ($con);
                $con = "<table width=\"90%\" class=\"code\"><tr><th>$comment</th></tr><tr><td><pre class=\"bb\">$con</pre></td></tr></table>";
            }
            $err = false;
        } elseif ( $tag === "quote" )
        { // Цитата:
            if (! empty ($con) )
            {
                $comment = protection (( empty ($val) ) ? "Quote:" : "$val wrote:");
                $con = "<table width=\"90%\" class=\"quote\"><tr><th>$comment</th></tr><tr><td>" .
                    bb_codes ($con, $smiles) . "</td></tr></table>";
            }
            $err = false;
        } elseif ( $tag === "img" )
        { // Вставка картинки:
            if ( strpos ("?", $con) === false && preg_match ("#.(gif|png|jpg|jpeg|tiff)$#", $con) )
            {
                $title = empty ($val) ? "" : " title=\"" . protection ($val) . "\"";
                $con = protection (check_url ($con));
                $con = "<img src=\"$con\" alt=\"$con\"$title class=\"bb\" />";
                $err = false;
            }
        } elseif ( $tag === "url" )
        { // Вставка гиперссылки:
            $href = protection (check_url (empty ($val) ? $con : $val));
            if ( ! empty ($val) ) $con = bb_codes ($con, $smiles);
            $con = "<a href=\"$href\" target=\"_blank\" class=\"bb\">$con</a>";
            $err = false;
        }
        if ( $err === true )
        {
            $res .= "[";
            $p = $l + 1;
            continue;
        }
        
        $cd = "`" . (++$cnum) . "`";
        $codes[$cd] = $con;
        $res .= $cd;
        $p = $c + strlen ($tag) + 3;
    }
    
    // Подсветка ссылок:
    $prot = array ("http://", "https://", "ftp://", "www.");
    $ahref = array();
    for ($i = 0; $i < count ($prot); $i++)
    {
        $p = 0;
        while ( true )
        {
            $p = strpos ($res, $prot[$i], $p);
            if ( $p === false ) break;
            $url = $prot[$i];
            $p += strlen ($url);
            while ( $p < strlen ($res) && preg_match ("([0-9a-zA-Z_\\-+%&?:@.\\=/#])", $res[$p]) ) $url .= $res[$p++];
            $cd = "`" . (++$cnum) . "`";
            $ahref[$url] = $cd;
            $url = protection ($url);
            $href = ( $prot[$i] === "www." ) ? "http://$url" : $url;
            $codes[$cd] = "<a href=\"$href\" target=\"_blank\" class=\"bb\">$url</a>";
        }
    }
    $res = str_replace (array_keys ($ahref), array_values ($ahref), $res);
    
    // Замена смайликов:
    foreach ($smiles as $smile => $img)
    {
        $cd = "`" . (++$cnum) . "`";
        $sm = protection ($smile);
        $codes[$cd] = "<img src=\"$img\" alt=\"$sm\" title=\"$sm\" class=\"smile\" />";
        $smiles[$smile] = $cd;
    }
    $res = str_replace (array_keys ($smiles), array_values ($smiles), $res);
        
    return str_replace (array_keys ($codes), array_values ($codes), nl2br (protection ($res)));
}
Автор: Buffi1
Дата сообщения: 22.12.2005 16:15
***.narod.ru
Автор: Ternik
Дата сообщения: 28.12.2005 22:15

Цитата:
лечиться нужно, пока не поздно /Cheery/

а вы посты не удаляете что-ли?
Автор: DenDruiD
Дата сообщения: 09.01.2006 19:51
Функция для вывода списка файлов в данной дериктоии и ниже. Форматировать по вкусу.

Код:
function browse_tree($npath, $ipath, $showhtfiles=false){
$op="";
$notadir=array(".", "..");
$dir=opendir($npath);
while ($file=readdir($dir)){
// если стоит опция не показывать файлы вроде ".htaccess" - проверяем
$stripped_as_ht=($showhtfiles) ? false : (substr($file,0,1)==".") ;

// если это не "." и не ".."
if ((filetype($npath.$file)=="dir")&&(!in_array($file, $notadir)){
$nipath="$ipath/$file";
browse($npath.$file."/", $nipath);
} else if ((!in_array($file,$notadir)) && (!$stripped_as_ht)) {
$op.="$ipath/$file\n";
}
}
// При необходимости - раскомментировать следующую строку
// $op=nl2br($op);
return $op;
}
Автор: StirolXXX
Дата сообщения: 10.01.2006 01:56

Цитата:
Функция обработки BB-кодов однопроходная:


Большое спасибо!

Называйте меня извращенйом но я пишу свои сайты так:

index.php:

Код:
<?php
    require ".htfun/global.php";
    $title = "";
    require ".htempl/start.php";
    if (isset($_GET['module']) && !empty($_GET['module'])) {
        error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
        if (!include(untag($_GET['module']) . '.content')) {
        echo "Извините но такого модуля нет!";
        };
        error_reporting(E_ALL ^ E_NOTICE);
    } else {
        include('index.content');
    };
    require ".htempl/end.php";
?>
Автор: CyClon
Дата сообщения: 11.01.2006 12:38
Интеграция самописного движка с форумом IPB 2.1.3

Кусок кода из mainfile.php

Код: /* Если у пользователя в COOKIE прописан параметр `id`, то запускаем проверку на совпадение пароля и идентификатора */

if(!empty($_COOKIE['member_id'])) {
require_once("includes/check.php");
if($check_ok != 1) {
echo "<b>Доступ запрещен!<b>\n";
include("includes/redir_index.php");
exit;
}
} else {

$user_name = "Гость";
$user_align = 0;

}
Автор: StirolXXX
Дата сообщения: 12.01.2006 00:50
CyClon
<offtopic>
А ниче подобного для vBulletin 3.5 нету?
</offtopic>
Автор: CyClon
Дата сообщения: 12.01.2006 15:01
StirolXXX
<offtopic>
Я поклонник IPB и делал сам, поэтому ничего сказать не могу.
</offtopic>
Автор: Dbimzon
Дата сообщения: 25.01.2006 11:49
Пожалуйста подскажите, где можно взять готовое решение для вывода погоды в текстовом виде на сайт? Спасибо.
Автор: Cheery
Дата сообщения: 25.01.2006 22:33
от WEBerFAK
Узнаём размер директории со всеми файлами и поддиректориями в ней
Для меня это когда-то была проблемма....

Код: function gts ($dir)
{
global $size;
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (($file!='.') && ($file!='..')) {
$f=$_SERVER['DOCUMENT_ROOT']."/$dir/$file";
if (filetype($f)=='dir') { gts ("$dir/$file/"); }
if (filetype($f)!='dir') { $size=$size+filesize($f); }
}
}
closedir($dh);
}
}
}
Автор: Cheery
Дата сообщения: 31.01.2006 18:38
от Ternik:

Код: function myquery ($query)
{
$backtrace = debug_backtrace();

$backtrace = "</b> in : <b>" . $backtrace[0]["file"] . "</b>, on line: <b>" . $backtrace[0]["line"] . "</b>";

$result = mysql_query($query)
or trigger_error(mysql_errno() . ": <b>" . mysql_error() . $backtrace . format_query($query) , E_USER_ERROR);

return($result);
}

function format_query ($query)
{
return("<p><b>Query was:</b><br/><textarea cols='50' rows='10'>$query</textarea></p>");
}
Автор: Cheery
Дата сообщения: 14.05.2006 22:29
от Solovjev

Цитата:
Написал свой первый класс для построения временной диаграммы/кривой (например для отображения статистики скачивания файла за последние дни).

<?php
class lz_graf {
public $im;//Идентификатор изображения
private $heigh;//Высота изображения
private $width;//Ширина изображения
private $punkt_x;//Выводить ли пунктирную горизонтальную линию?
private $punkt_y;//Выводить ли пунктирную вертикальную линию?
private $punkt_x_color;//Цвет пунктирной горизонтальной линии
private $punkt_y_color;//Цвет пунктирной вертикальной линии
private $razd_x_color;//Цвет оси х
private $razd_y_color;//Цвет оси у
private $razd_size;//Размер разделительной линии
private $otstup_x;//Отступ от края изобр до графика по оси х
private $otstup_y;//Отступ от края изобр до графика по оси у
private $razd_x_text_size;//Размер текста разметки по оси х
private $razd_y_text_size;//Размер текста разметки по оси у
private $razd_x_text_color;//Цвет текста разметки по оси x
private $razd_y_text_color;//Цвет текста разметки по оси у
private $razd_x_text_otstup;//Отступ надписи от края графика по оси х
private $razd_y_text_otstup;//Отступ надписи от края графика по оси у
private $diagram_or_gr;//0 - вывод в виде диаграммы, 1-графика
private $gr_color;//Цвет графика (ломаной кривой)
private $y_name;//Массив элементов по ординате
private $x_name;//Массив элементов по абциссе
private $pryamoug_color;//Цвет прямоугольников (в виде диаграммы)
private $pryamoug_gr;//Цвет границы прямоугольников (в виде диаграммы)
private $bgc;//Цвет фона
//Конструктор
public function __construct($heigh=300, $width=502, $punkt_x=1, $punkt_y=1, $razd_size=3, $otstup_x=0.04,
$otstup_y=0.09, $razd_x_text_size=3, $razd_y_text_size=3, $razd_x_text_otstup=0.2,
$razd_y_text_otstup=1.015, $diagram_or_gr=0,
$dannie=array('5','4','1','6','1','3','5','2','6','4','1','7', '5','6','4','2','3','6', '5','4','5','4','6','5','2', '3','6','4','1','5','7')) {
$this->heigh=$heigh;
$this->width=$width;
$this->punkt_x=$punkt_x;
$this->punkt_y=$punkt_y;
$this->razd_size=$razd_size;
$this->otstup_x=$otstup_x;
$this->otstup_y=$otstup_y;
$this->razd_x_text_size=$razd_x_text_size;
$this->razd_y_text_size=$razd_y_text_size;
$this->razd_x_text_otstup=$razd_x_text_otstup;
$this->razd_y_text_otstup=$razd_y_text_otstup;
$this->diagram_or_gr=$diagram_or_gr;
$this->y_name=array('0', '1', '2','3', '4', '5', '6', '7', '8', '9', '10');
$this->x_name=0;
$this->dannie=$dannie;
$this->im= ImageCreateTrueColor($this->width, $this->heigh);
$this->razd_x_text_otstup=$razd_x_text_otstup;
$this->razd_y_text_otstup=$razd_y_text_otstup;
$this->diagram_or_gr=$diagram_or_gr;
$this->dannie=$this->mashtab(); //Масштабирование данных
}
//Деструктор
public function __destruct() {
ImageDestroy($this->im);
}

//Масштабирование данных (для наглядности)
/*Если есть элемент превышающий 10
--уменьшаем все элементы на 10
--увеличиваем разметку на 10*/
private function mashtab (){
$flag=0;
while ($flag == 0){
$flag=1;
for ($i=0; $i<count($this->dannie); $i++){
if ($this->dannie[$i] > 10) {
$flag=0;
}
}
if ($flag == 0) {
for ($k=0; $k<count($this->dannie); $k++){
settype($this->dannie[$k],'double');
$this->dannie[$k]=$this->dannie[$k]/10;
settype($this->dannie[$k],'string');
}
for ($k=0; $k<count($this->y_name); $k++){
settype($this->y_name[$k],'integer');
$this->y_name[$k]=$this->y_name[$k]*10;
settype($this->y_name[$k],'string');
}
//Увеличиваем отступ, чтобы разметка не наезжала на ось
$this->otstup_x=$this->otstup_x*1.25;
}
}
unset($this->x_name);
for ($k=0; $k<count($this->dannie); $k++){
$this->x_name[$k]=$k+1;
}
return $this->dannie;
}



//Разметка оси у со штрихами
private function sep_y_ () {
$n=count($this->y_name);
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh*$this->otstup_y;
$x1=$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$w=$this->width-($this->width*$this->otstup_x);
$length=($y1-$y0)/($n-1);
for ($i=0; $i<$n; $i++){
ImageLine($this->im, $x0, $y0, $x0+$this->razd_size, $y0, $this->razd_x_color);
ImageLine($this->im, $x0, $y0, $x0-$this->razd_size, $y0, $this->razd_x_color);
$style=array($this->punkt_x_color,IMG_COLOR_TRANSPARENT,IMG_COLOR_TRANSPARENT,IMG_COLOR_TRANSPARENT);
imagesetstyle($this->im, $style);
ImageLine($this->im, $x0, $y0, $w, $y0, IMG_COLOR_STYLED);
$y0+=$length;
}
}

//Разметка оси х без штрихов
private function sep_y_lite_ () {
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh*$this->otstup_y;
$x1=$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$n=count($this->y_name);
$length=($y1-$y0)/($n-1);
for ($i=0; $i<$n; $i++){
ImageLine($this->im, $x0, $y0, $x0+$this->razd_size, $y0, $this->razd_x_color);
ImageLine($this->im, $x0, $y0, $x0-$this->razd_size, $y0, $this->razd_x_color);
$y0+=$length;
}
}

//Разметка оси х со штрихами
private function sep_x_ () {
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$m=count($this->x_name);
$h=$this->heigh*$this->otstup_y;
$length=($x1-$x0)/$m;
for ($i=0; $i<$m-1; $i++){
$x0+=$length;
ImageLine($this->im, $x0, $y0, $x0, $y0+$this->razd_size, $this->razd_y_color);
ImageLine($this->im, $x0, $y0, $x0, $y0-$this->razd_size, $this->razd_y_color);
$style=array($this->punkt_y_color,IMG_COLOR_TRANSPARENT,IMG_COLOR_TRANSPARENT,IMG_COLOR_TRANSPARENT);
imagesetstyle($this->im,$style);
ImageLine($this->im, $x0, $h, $x0, $y0, IMG_COLOR_STYLED);
}
}


//Разметка оси х без штрихов
private function sep_x_lite_ () {
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$m=count($this->x_name);
$length=($x1-$x0)/$m;
for ($i=0; $i<$m-1; $i++){
$x0+=$length;
ImageLine($this->im, $x0, $y0, $x0, $y0+$this->razd_size, $this->razd_y_color);
ImageLine($this->im, $x0, $y0, $x0, $y0-$this->razd_size, $this->razd_y_color);
}
}

//Вывод надписей разметки оси ординат
private function sep_y_text_ (){
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh*$this->otstup_y;
$x1=$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$n=$this->y_name;
$length=($y1-$y0)/(count($n)-1);
$n=array_reverse($n);
$y0-=$length;
for ($i=0; $i<count($n); $i++){
$y0+=$length;
ImageString($this->im, $this->razd_x_text_size, $x0*$this->razd_x_text_otstup, $y0-5, $n[$i], $this->razd_x_text_color);
}
}

//Вывод надписей разметки оси х
private function sep_x_text_ (){
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$m=$this->x_name;
$length=(($x1-$x0)/count($m));
$flag=1;
for ($i=0; $i<count($m); $i++){
$x0+=$length;
if ($flag==1){
$flag=-1;
ImageString($this->im, $this->razd_y_text_size, $x0-13, $y0*$this->razd_y_text_otstup, $m[$i], $this->razd_y_text_color);
} else $flag=1;
}
}

//Вычисление положения точки
private function dlina ($m, $length,$y0){
$p=(round($m)*$length)+(($m-round($m))*$length);
$p=$y0-$p;

return $p;
}

//Построение прямоугольников (для диаграммы)
private function pryamoug () {
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh*$this->otstup_y;
$m=$this->dannie;
$n=$this->x_name;
$length=(($x1-$x0)/(count($n)));
$length_y=(($y0-$y1)/(count($this->y_name)-1));
$x0+=$length;
imagesetthickness($this->im,1);
for ($i=0; $i<count($m); $i++){
imagefilledrectangle($this->im,$x0,$y0,$x0-$length,$this->dlina($m[$i], $length_y, $y0),$this->pryamoug_color);
imagerectangle($this->im,$x0,$y0,$x0-$length,$this->dlina($m[$i], $length_y, $y0),$this->pryamoug_gr);
$x0+=$length;
}
}

//Построение графика
private function line (){
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh*$this->otstup_y;
$m=$this->dannie;
$length=(($x1-$x0)/(count($this->x_name)));
$yy0=$y0;
$style=array($this->gr_color);
imagesetstyle($this->im,$style);
$length_y=(($y0-$y1)/(count($this->y_name)-1));
$flag=1;
for ($i=0; $i<count($m); $i++){
if ($flag==0){
imageline($this->im,$x0,$yy0,$x0+$length,$this->dlina($m[$i], $length_y, $y0),IMG_COLOR_STYLED); }
else {$flag=0;}
$yy0=$this->dlina($m[$i], $length_y, $y0);
$x0+=$length;
}
}

//Устанавливаем цвета
public function set_color ($punkt_x_color, $punkt_y_color, $razd_x_color, $razd_y_color, $razd_x_text_color, $razd_y_text_color, $gr_color, $pryamoug_color, $pryamoug_gr, $bgc){
$this->punkt_x_color=$punkt_x_color;
$this->punkt_y_color=$punkt_y_color;
$this->razd_x_color=$razd_x_color;
$this->razd_y_color=$razd_y_color;
$this->razd_x_text_color=$razd_x_text_color;
$this->razd_y_text_color=$razd_y_text_color;
$this->gr_color=$gr_color;
$this->pryamoug_color=$pryamoug_color;
$this->pryamoug_gr=$pryamoug_gr;
$this->bgc=$bgc;
}

//Отображение графика
public function show (){
ImageFill($this->im, 0, 0, $this->bgc);
imagesetthickness($this->im,2) ;
ImageLine($this->im, $this->width*$this->otstup_x, $this->heigh-$this->heigh*$this->otstup_y, $this->width-$this->width*$this->otstup_x, $this->heigh-$this->heigh*$this->otstup_y, $this->razd_x_color);
$otstup_xx=$this->otstup_x;
if ($this->diagram_or_gr==0){
$this->pryamoug ();
} else {
$this->line();
}
ImageLine($this->im, $this->width*$this->otstup_x, $this->heigh*$this->otstup_y, $this->width*$this->otstup_x, $this->heigh-$this->heigh*$this->otstup_y, $this->razd_y_color);
if ($this->punkt_x==1) {
$this->sep_y_();
} else {
$this->sep_y_lite_();
}
if ($this->punkt_y==1){
$this->sep_x_();
} else {
$this->sep_x_lite_();
}
$this->sep_y_text_();
$this->sep_x_text_();
Header ('Content-type: image/png');
ImagePng ($this->im);
}
}
?>


<?php
//Пример использования класса lz_graf
require_once('lz_graf.php');
$dannie=array('50','34','89','77','27','20','60','43','53','88','11','12','25','45');
$a=new lz_graf(300, 502, 1, 1, 3, 0.04, 0.09, 3, 3, 0.2,1.015, 0,$dannie);
/*
Параметры:
300 - высота изображения
502 - ширина изображения
1 - выводить ли пунктирные линии по оси x (1-да, 0-нет)
1 - выводить ли пунктирные линии по оси x (1-да, 0-нет)
3 - Размер разделительной линии
0.04 - Отступ от края изобр до графика по оси х
0.09 - Отступ от края изобр до графика по оси y
3 - Размер текста разметки по оси х
3 - Размер текста разметки по оси y
0.2 - Отступ надписи от края графика по оси х
1.015 - Отступ надписи от края графика по оси y
0 - вывод в виде диаграммы или графика (ломанной кривой) (0-диаграмма, 1-кривая)
$dannie - массив данных для построения
*/
$white=ImageColorAllocate ($a->im, 255, 255, 255);
$blue=ImageColorAllocate ($a->im, 0, 0, 64);
$red=ImageColorAllocate ($a->im, 250, 43, 5);
$blue1=ImageColorAllocate ($a->im, 0, 64, 128);
$a->set_color($white,$white,$white,$white,$white,$white,$white,$blue1,$white, $blue);
$a->show();
?>
Автор: vworld
Дата сообщения: 20.10.2006 06:32
Склонение существительных с числительными

В русском языке существительные с числительными могут быть в единственном, двойственном и множественном числе: один арбуз, два арбуза, пять арбузов (двойственное число — это почти исчезнувшая в русском языке грамматическая конструкция, встречающаяся только в этом случае).
<?
function pluralForm($n, $form1, $form2, $form5)
{
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}

// пример использования
echo "В Вашем почтовом ящике $n ".pluralForm($n, "письмо", "письма", "писем");
?>
Автор: LusAvedus
Дата сообщения: 30.10.2006 05:07
Фильтр чисел. Думаю может в качестве дебюта пойдет.


Код:
function input_check_numeric($input,$default_value=0) {
ereg("([0-9]+[0-9]|[0-9]|(\-)[0-9]|(\-)[0-9]+[0-9])",$input,$match);
return ((!$match) ? $default_value : $match[0]);
}
Автор: zerkms
Дата сообщения: 30.10.2006 11:53
LusAvedus
дебют не удался - php.net/is_numeric

ps: 2.5 это уже не число?
pps: [0-9]+[0-9] эквивалентно [0-9]{2,}
ppps: (-)? чтобы не дублировать по 10 раз
Автор: sTa1kEr
Дата сообщения: 20.11.2006 17:43
Подсветка PHP синтаксиса на основе шаблонов. Т.е. можно не только html тегами подсветить, но и IB кодами, спец символами для mirc итд. Только для PHP >5 !!! Если что - просьба сильно не пинать. Если кому будет интересно, то могу доробатать его(к примеру можно что-нибудь вроде не сложного анализатора кода сделать или добавить ссылки на пхпшные функции)
[more]
Код: <?php
/**
* Подсветка синтаксиса PHP на основе простых шаблонов
* Можно использовать предопределенные шаблоны через
* статические методы, либо создать обьект со своими
* шаблонами и/или цветами.
*
* @author sTalkEr <stalk at zelnet dot ru>
* @package Highlight
* @version 0.1
*/

// Если true, то считать что теги пхп всегда открыты
if (!defined("HI_IGNORE_PHP_TAG"))
define("HI_IGNORE_PHP_TAG", true);


// Шаблоны для IB кодов.
// Из-за того, что я не знаю как(да и можно ли вообще)
// экранировать IB коды, добавил пробелы в начало тегов,
// что бы исходник нормально отобразился. Их нужно удалить!
if (!defined("HI_IB_MAINPREFIX"))
define("HI_IB_MAINPREFIX", "[ code][ font=Courier][ color=%s]");

if (!
defined("HI_IB_MAINPOSTFIX"))
define("HI_IB_MAINPOSTFIX", "[ /color][ /font][ /code]");

if (!
defined("HI_IB_COLORPREFIX"))
define("HI_IB_COLORPREFIX", "[ color=%s]");

if (!
defined("HI_IB_COLORPOSTFIX"))
define("HI_IB_COLORPOSTFIX", "[ /color]");

// Шаблоны для HTML
if (!defined("HI_HTML_MAINPREFIX"))
define("HI_HTML_MAINPREFIX", "<pre style=\"color: %s;\">");

if (!
defined("HI_HTML_MAINPOSTFIX"))
define("HI_HTML_MAINPOSTFIX", "</pre>");

if (!
defined("HI_HTML_COLORPREFIX"))
define("HI_HTML_COLORPREFIX", "<span style=\"color: %s;\">");

if (!
defined("HI_HTML_COLORPOSTFIX"))
define("HI_HTML_COLORPOSTFIX", "</span>");

// Дополнительные типы token-ов
if (!defined("T_UNKNOWN"))
define("T_UNKNOWN", -1);

if (!
defined("T_OLD_FUNCTION"))
define("T_OLD_FUNCTION", -1);

if (!
defined("T_QUOTE"))
define("T_QUOTE", 1001);

if (!
defined("T_SINGS"))
define("T_SINGS", 1002);

if (!
defined("T_CURLY_CLOSE"))
define("T_CURLY_CLOSE", 1003);

// Состояния текущего место положения элемента
if (!defined("HI_STATE_NONE"))
define("HI_STATE_NONE", 0); // HTML Inline

if (!defined("HI_STATE_PHPTAG"))
define("HI_STATE_PHPTAG", 1); // PHP код

if (!defined("HI_STATE_QUOTEDSTRING"))
define("HI_STATE_QUOTEDSTRING", 2); // Внутри двойных ковычек

if (!defined("HI_STATE_HEREDOC"))
define("HI_STATE_HEREDOC", 3); // HEREDOC ( <<< EOF )

if (!defined("HI_STATE_HEREDOCCURLY"))
define("HI_STATE_HEREDOCCURLY", 4); // HEREDOC и фигурные скобки

if (!defined("HI_STATE_QUOTEDCURLY"))
define("HI_STATE_QUOTEDCURLY", 5); // Двойные кавычки и фигурные скобки

/**
* Один элемент
*
* @package Highlight
*/
class TokenElement
{
/**
* Тип токена
*
* @var integer
*/
public $TokenType = T_UNKNOWN;

/**
* Текст элемента
*
* @var string
*/
public $Text = "";

/**
* Конструктор.
*
* @param mixed $elem
* @return TokenElement
*/
public function TokenElement($elem)
{
if (
is_array($elem))
{
$this->TokenType = trim($elem[1]) == "" ? T_WHITESPACE : $elem[0];
$this->Text = $elem[1];
}
else
{
switch (
trim($elem))
{
case
"":
$this->TokenType = T_WHITESPACE;
break;
case
"\"":
$this->TokenType = T_QUOTE;
break;
case
"}":
$this->TokenType = T_CURLY_CLOSE;
break;
default:
if (
preg_match('/^[\{\}=\(\)\[\],.?:;]$/', $elem))
{
$this->TokenType = T_SINGS;
}
break;
}
$this->Text = $elem;
}
}

/**
* Магический метод, возращает текст элемента
*
* @return unknown
*/
public function __toString()
{
return
$this->Text;
}
}

/**
* Класс элементов сгруппированых по цвету
*
* @package Highlight
*/
class GroupElements
{
/**
* Цвет для группы элементов
*
* @var string
*/
public $Color = null;

/**
* Массив элементов TokenElement
*
* @var array
*/
public $Elements = array();

/**
* Конструктор
*
* @param string $color
* @param TokenElement $elem
* @return GroupElements
*/
public function GroupElements($color = null, $elem = null)
{
$this->Color = $color;
if (
$elem !== null)
{
$this->Elements[] = $elem;
}
}

/**
* Магический метод, возращает строку с обьединенными элементами
*
* @return string
*/
public function __toString()
{
$out = "";
foreach (
$this->Elements as $elem)
{
$out .= $elem;
}
return
$out;
}
}

/**
* @package Highlight
*/
class Highlight
{
/**
* Cсылка на обьект класса
*
* @var Highlight
* @see Highlight
*/
private static $_thisInstance = null;

/**
* Массив с группами элементов
*
* @var array
*/
private $ElementsCollection = array();

/**
* Группировка элементов по цветам
*
* @var GroupElements
*/
private $ColorGroup = null;

/**
* Последний обработанный элемент (за исключением пробелов)
*
* @var TokenElement
*/
private $LastElement = null;

/**
* Расположение элемента (внутри php тегов, строк итп)
*
* @var int
*/
private $State = HI_STATE_NONE;

/**
* Исходная строка
*
* @var string
*/
private $Source = "";

/**
* Нужно ли экранировать спецсимволы?
*
* @var boolean
*/
public $IsHTML = true;

/**
* Основной цвет, помещается в префикс основного шаблона
*
* @var string
*/
public $ColorBase = "green";

/**
* Цвет ключевыех слов
*
* @var string
*/
public $ColorKeywords = "green";

/**
* Цвет строковых констант
*
* @var string
*/
public $ColorStrings = "red";

/**
* Цвет комментариев
*
* @var string
*/
public $ColorComments = "orange";

/**
* Цвет скобок и операторов
*
* @var string
*/
public $ColorSings = "green";

/**
* Цвет переменных
*
* @var string
*/
public $ColorVariables = "darkblue";

/**
* Цвет чисел
*
* @var string
*/
public $ColorNumbers = "darkblue";

/**
* Цвет спецсимволов (\n, \t, etc...)
*
* @var string
*/
public $ColorCharacters = "red";

/**
* Цвет плохих символов
*
* @var string
*/
public $ColorBadCharacters = "violet";

/**
* Цвет элементов, не попавших ни в одну категорию
*
* @var string
*/
public $ColorOther = "green";

/**
* Цвет HTML (то что вне тегов <?php ?>)
*
* @var string
*/
public $ColorHTML = "black";

/**
* Префикс основного шаблона
* (формат аналогичен функции printf())
* Подставляется с базовым цветом в начало всей строки
*
* @var string
*/
public $MainPrefix = "";

/**
* Постфикс основного шаблона
* Подставляется в конец всей строки
*
* @var string
*/
public $MainPostfix = "";

/**
* Префикс для одного элемента
* (формат аналогичен функции printf())
* Подставляется с цветом в начало всей строки
*
* @var string
*/
public $ColorPrefix = "";

/**
* Постфикс для одного элемента
* Подставляется в конец элемента
*
* @var string
*/
public $ColorPostfix = "";

/**
* Пустой конструктор
*/
public function Highlight() {}

/**
* Возращает ссылку на обьект класса.
* Требуется для работы через статические методы
*
* @return Highlight
*/
public static function Instance()
{
if (
Highlight::$_thisInstance === null)
{
Highlight::$_thisInstance = new Highlight();
}
return
Highlight::$_thisInstance;
}

/**
* Возращает строку с подсветкой при помощи IB кодов
*
* @param string $string
* @return string
*/
public static function IB($string)
{
Highlight::Instance()->MainPrefix = HI_IB_MAINPREFIX;
Highlight::Instance()->MainPostfix = HI_IB_MAINPOSTFIX;
Highlight::Instance()->ColorPrefix = HI_IB_COLORPREFIX;
Highlight::Instance()->ColorPostfix = HI_IB_COLORPOSTFIX;
Highlight::Instance()->IsHTML = false;
return
Highlight::Instance()->FromString($string);
}

/**
* Возращает строку с подсветкой при помощи HTML тегов
*
* @param string $string
* @return string
*/
public static function HTML($string)
{
Highlight::Instance()->MainPrefix = HI_HTML_MAINPREFIX;
Highlight::Instance()->MainPostfix = HI_HTML_MAINPOSTFIX;
Highlight::Instance()->ColorPrefix = HI_HTML_COLORPREFIX;
Highlight::Instance()->ColorPostfix = HI_HTML_COLORPOSTFIX;
return
Highlight::Instance()->FromString($string);
}

/**
* Возращает подсвеченную строку $source
*
* @param string $source
* @return string
*/
public function FromString($source)
{
$this->Source = $source;
$this->Parse();
//var_export($this->ElementsCollection);
$out = sprintf($this->MainPrefix, $this->ColorBase);
foreach (
$this->ElementsCollection as $group)
{
$out .= sprintf($this->ColorPrefix, $group->Color);
$out .= $this->IsHTML ? htmlspecialchars($group, ENT_NOQUOTES) : $group;
$out .= $this->ColorPostfix;
}
$out .= $this->MainPostfix;
return
$out;
}

/**
* Добавляет элемент в группу
*
* @param mixed $elem
*/
private function AddElement($elem)
{
$type = null;
$tElem = new TokenElement($elem);
$type = $this->GetType($tElem->TokenType);

if (
$tElem->TokenType != T_UNKNOWN && $tElem->TokenType != T_WHITESPACE)
{
switch (
$this->State)
{
case
HI_STATE_PHPTAG:
switch (
$tElem->TokenType)
{
case
T_QUOTE: $this->State = HI_STATE_QUOTEDSTRING; break;
case
T_START_HEREDOC: $this->State = HI_STATE_HEREDOC; break;
case
T_CLOSE_TAG: $this->State = HI_STATE_NONE; break;
}
break;
case
HI_STATE_QUOTEDSTRING:
switch (
$tElem->TokenType)
{
case
T_QUOTE: $this->State = HI_STATE_PHPTAG; break;
case
T_CURLY_OPEN: $this->State = HI_STATE_QUOTEDCURLY; break;
}
break;
case
HI_STATE_HEREDOC:
switch (
$tElem->TokenType)
{
case
T_END_HEREDOC: $this->State = HI_STATE_PHPTAG; break;
case
T_CURLY_OPEN: $this->State = HI_STATE_HEREDOCCURLY; break;
}
break;
case
HI_STATE_HEREDOCCURLY:
switch (
$tElem->TokenType)
{
case
T_CURLY_CLOSE: $this->State = HI_STATE_HEREDOC; break;
}
break;
case
HI_STATE_QUOTEDCURLY:
switch (
$tElem->TokenType)
{
case
T_CURLY_CLOSE: $this->State = HI_STATE_QUOTEDSTRING; break;
}
break;
case
HI_STATE_NONE:
switch (
$tElem->TokenType)
{
case
T_OPEN_TAG: $this->State = HI_STATE_PHPTAG; break;
}
break;
}

if (
$type !== null && isset($this->{"Color$type"}))
{
$color = $this->{"Color$type"};
}

if (
$this->ColorGroup !== null)
{
if (
$this->ColorGroup->Color != $color)
{
$this->ElementsCollection[] = $this->ColorGroup;
$this->ColorGroup = new GroupElements($color, $tElem);
}
else
{
$this->ColorGroup->Elements[] = $tElem;
}
}
else
{
$this->ColorGroup = new GroupElements($color, $tElem);
}
}
else
{
$this->ColorGroup->Elements[] = $tElem;
}
}

/**
* Парсим исходную строку
*
*/
private function Parse()
{
$this->ElementsCollection = array();
$isOpenTag = (substr(trim($this->Source), 0, 2) == "<?");
if (
HI_IGNORE_PHP_TAG && !$isOpenTag)
{
$tokens = token_get_all("<?php\n{$this->Source}\n?>");
if (
$tokens[count($tokens) - 1] == T_CLOSE_TAG)
unset(
$tokens[count($tokens) - 1]);
if (
$tokens[0] == T_OPEN_TAG)
unset(
$tokens[0]);
$this->State = HI_STATE_PHPTAG;
}
else
{
$tokens = token_get_all($this->Source);
}

$this->ElementsCollection = array();
$this->ColorGroup = null;
foreach (
$tokens as $token)
{
    
$this->AddElement($token);
}
$this->ElementsCollection[] = $this->ColorGroup;
$this->ColorGroup = null;
}

/**
* Возращает тип для элемента
*
* @param integer $token
* @return string
*/
private function GetType($token)
{
switch (
$token)
{
/**
* Ключевые слова
*/
case T_ABSTRACT: // abstract
case T_ARRAY: // array()
case T_ARRAY_CAST: // (array)
case T_AS: // as
case T_BOOLEAN_AND: // &&
case T_BOOLEAN_OR: // ||
case T_BOOL_CAST: // (bool) or (boolean)
case T_BREAK: // break
case T_CASE: // case
case T_CATCH: // catch
case T_CLASS: // class
case T_CLONE: // clone
case T_CLOSE_TAG: // ? > or % >
case T_CONCAT_EQUAL: // .=
case T_CONST: // const
case T_CONTINUE: // continue
case T_DEC: // --
case T_DECLARE: // declare
case T_DEFAULT: // default
case T_DIV_EQUAL: // /=
case T_DO: // do
case T_DOUBLE_ARROW: // =>
case T_DOUBLE_CAST: // (real), (double) or (float)
case T_DOUBLE_COLON: // ::
case T_ECHO: // echo
case T_ELSE: // else
case T_ELSEIF: // elseif
case T_EMPTY: // empty
case T_ENDDECLARE: // enddeclare
case T_ENDFOR: // endfor
case T_ENDFOREACH: // endforeach
case T_ENDIF: // endif
case T_ENDSWITCH: // endswitch
case T_ENDWHILE: // endwhile
case T_EVAL: // eval()
case T_EXIT: // exit or die
case T_EXTENDS: // extends
case T_FILE: // __FILE__
case T_FINAL: // final
case T_FOR: // for
case T_FOREACH: // foreach
case T_FUNCTION: // function or cfunction
case T_GLOBAL: // global
case T_HALT_COMPILER: // __halt_compiler()
case T_IF: // if
case T_IMPLEMENTS: // implements
case T_INC: // ++
case T_INCLUDE: // include()
case T_INCLUDE_ONCE: // include_once()
case T_INSTANCEOF: // instanceof
case T_INT_CAST: // (int) or (integer)
case T_INTERFACE: // interface
case T_ISSET: // isset()
case T_IS_EQUAL: // ==
case T_IS_NOT_EQUAL; // != or <>
case T_IS_IDENTICAL: // ===
case T_IS_NOT_IDENTICAL: // !==
case T_IS_SMALLER_OR_EQUAL: // <=
case T_LINE: // __LINE__
case T_LIST: // list()
case T_LOGICAL_AND: // and
case T_LOGICAL_OR: // or
case T_LOGICAL_XOR: // xor
case T_MINUS_EQUAL: // -=
case T_MOD_EQUAL: // %=
case T_MUL_EQUAL: // *=
case T_NEW: // new
case T_OBJECT_CAST: // (object)
case T_OBJECT_OPERATOR: // ->
case T_OLD_FUNCTION: // old_function
case T_OPEN_TAG: // <?php, <? or <%
case T_OPEN_TAG_WITH_ECHO: // <?= or <%=
case T_OR_EQUAL: // |=
case T_PAAMAYIM_NEKUDOTAYIM: // ::
case T_PLUS_EQUAL: // +=
case T_PRINT: // print()
case T_PRIVATE: // private
case T_PUBLIC: // public
case T_PROTECTED: // protected
case T_REQUIRE: // require()
case T_REQUIRE_ONCE: // require_once()
case T_RETURN: // return
case T_SL: // <<
case T_SL_EQUAL: // <<=
case T_SR: // >>
case T_SR_EQUAL: // >>=
case T_STATIC: // static
case T_STRING_CAST: // (string)
case T_SWITCH: // switch
case T_THROW: // throw
case T_TRY: // try
case T_UNSET_CAST: // unset()
case T_UNSET: // (unset)
case T_USE: // use
case T_VAR: // var
case T_WHILE: // while
case T_XOR_EQUAL: // ^=
case T_FUNC_C: // __FUNCTION__
case T_CLASS_C: // __CLASS__
case T_NUM_STRING: //
case T_CURLY_OPEN: //
case T_CURLY_CLOSE: // }
case T_DOLLAR_OPEN_CURLY_BRACES: // ${
return "Keywords";

/**
* Строковые константы
*/
case T_END_HEREDOC: //
case T_START_HEREDOC: // <<<
case T_CONSTANT_ENCAPSED_STRING: // "foo" or 'bar'
case T_QUOTE: // "(quote)
return "Strings";

/**
* Числа
*/
case T_LNUMBER: // 123, 012, 0x1ac, etc
case T_DNUMBER: // 0.12, etc
return"Numbers";

/**
* Комментарии
*/
case T_DOC_COMMENT: // // or #, and /* */ on PHP 5
case T_COMMENT: // /** */
return "Comments";

/**
* Переменные
*/
case T_ENCAPSED_AND_WHITESPACE: //
case T_STRING:
if (
$this->State == HI_STATE_QUOTEDSTRING || $this->State == HI_STATE_HEREDOC)
return
"Strings";
case
T_VARIABLE: // $foo
case T_STRING_VARNAME: //
return "Variables";

/**
* HTML
*/
case T_INLINE_HTML:
return
"HTML";

/**
* Спец символы (\n, \t, etc...)
*/
case T_CHARACTER:
return
"Characters";

/**
* Любые символы ASCII 32 за исключением \t (0x09), \n (0x0a) и \r (0x0d)
*/
case T_BAD_CHARACTER:
return
"BadCharacters";

/**
* Различные скобки и операторы присваевания
*/
case T_SINGS:
return
"Sings";

/**
* Пробелы
*/
case T_WHITESPACE:
return
null; // Пробелам цвет не нужен, наверное... т.ч. игнорируем

/**
* Все остальное (не используется)
*/
default:
return
null;
}
}
}

?>
Автор: hire
Дата сообщения: 25.11.2006 08:58
dump данных:

Функция dump (кол-во аргументов - любое):

Код:
    /**
     * Function for dump variables
     *
     * @access public
     * @global $_DEBUG
     */
     function dump()
     {
        require_once 'dBug.class.php';
         
         $id = rand();
         
         $init = debug_backtrace();    
         
         $msg = "";
         $lvl = count($init);
         if ($lvl >= 1) {
//             $msg .= "&nbsp;&nbsp;was called from :<BR>";
             for ($k = $lvl-1; $k >= 0; $k--) {
                 $msg .= "&nbsp;[#".$k."] ";
                 
                 if (isset($init[$k]["class"]))
                     $msg .= @$init[$k]["class"]."::";
                     
                 if (isset($init[$k]["function"]))
                     $msg .= @$init[$k]["function"]."() called at ";
                     
                 $msg .= "[/".basename(@$init[$k]["file"]).":".@$init[$k]["line"]."]<BR>";
             }
             
         }

         global $_DEBUG;
         
         if (!$_DEBUG) {
             $_DEBUG = 1;
            echo     
                    "<script language='JavaScript'>\n".
                    " show_item=function(evt) { var obj=document.getElementById(evt); if(obj.className == \"\") { obj.className += \" over\"; }else{ obj.className = \"\"; } }\n".
                    "</script>\n";
            echo     "<style>\n";
            echo         "#debug {background-color:#ffffff; margin: 0;}    ".
                         "#debug ul {list-style-type: none; padding: 0 2 0 2; margin: 0;}    ".
                        "#debug li a{text-decoration: none; color: #003366; margin: 0; font-size: 12px;}".
                        "#debug li a:HOVER{color: #FF3300;}".
                        "#debug li ul{ display: none; padding: 2 2 2 2;}".
                        "#debug li ul li {background-color:#ddffdd; padding: 2 2 2 2; margin: 2;}".
                        "#debug li.over ul{display: block;}".
                        "#debug li.over a{color: #000000;;}";                
            echo     "</style>\n";
            
            echo    "<script language='JavaScript'>
                /* code modified from ColdFusion's cfdump code */
                    function dBug_toggleRow(source) {
                        target=(document.all) ? source.parentElement.cells[1] : source.parentNode.lastChild
                        dBug_toggleTarget(target,dBug_toggleSource(source));
                    }
                    
                    function dBug_toggleSource(source) {
                        if (source.style.fontStyle=='italic') {
                            source.style.fontStyle='normal';
                            source.title='click to collapse';
                            return 'open';
                        } else {
                            source.style.fontStyle='italic';
                            source.title='click to expand';
                            return 'closed';
                        }
                    }
                
                    function dBug_toggleTarget(target,switchToState) {
                        target.style.display=(switchToState=='open') ? '' : 'none';
                    }
                
                    function dBug_toggleTable(source) {
                        var switchToState=dBug_toggleSource(source);
                        if(document.all) {
                            var table=source.parentElement.parentElement;
                            for(var i=1;i<table.rows.length;i++) {
                                target=table.rows[i];
                                dBug_toggleTarget(target,switchToState);
                            }
                        }
                        else {
                            var table=source.parentNode.parentNode;
                            for (var i=1;i<table.childNodes.length;i++) {
                                target=table.childNodes[i];
                                if(target.style) {
                                    dBug_toggleTarget(target,switchToState);
                                }
                            }
                        }
                    }
                </script>
                
                <style type='text/css'>
                    table.dBug_array,table.dBug_object,table.dBug_resource,table.dBug_resourceC,table.dBug_xml {
                        font-family:Verdana, Arial, Helvetica, sans-serif; color:#000000; font-size:12px;
                    }
                    
                    .dBug_arrayHeader,
                    .dBug_objectHeader,
                    .dBug_resourceHeader,
                    .dBug_resourceCHeader,
                    .dBug_xmlHeader
                        { font-weight:bold; color:#FFFFFF; }
                    
                    /* array */
                    table.dBug_array { background-color:#006600; }
                    table.dBug_array td { background-color:#FFFFFF; }
                    table.dBug_array td.dBug_arrayHeader { background-color:#009900; }
                    table.dBug_array td.dBug_arrayKey { background-color:#CCFFCC; }
                    
                    /* object */
                    table.dBug_object { background-color:#0000CC; }
                    table.dBug_object td { background-color:#FFFFFF; }
                    table.dBug_object td.dBug_objectHeader { background-color:#4444CC; }
                    table.dBug_object td.dBug_objectKey { background-color:#CCDDFF; }
                    
                    /* resource */
                    table.dBug_resourceC { background-color:#884488; }
                    table.dBug_resourceC td { background-color:#FFFFFF; }
                    table.dBug_resourceC td.dBug_resourceCHeader { background-color:#AA66AA; }
                    table.dBug_resourceC td.dBug_resourceCKey { background-color:#FFDDFF; }
                    
                    /* resource */
                    table.dBug_resource { background-color:#884488; }
                    table.dBug_resource td { background-color:#FFFFFF; }
                    table.dBug_resource td.dBug_resourceHeader { background-color:#AA66AA; }
                    table.dBug_resource td.dBug_resourceKey { background-color:#FFDDFF; }
                    
                    /* xml */
                    table.dBug_xml { background-color:#888888; }
                    table.dBug_xml td { background-color:#FFFFFF; }
                    table.dBug_xml td.dBug_xmlHeader { background-color:#AAAAAA; }
                    table.dBug_xml td.dBug_xmlKey { background-color:#DDDDDD; }
                </style>";
         }
         
         echo    "<div id=debug>
                     <ul>
                         <li id=\"".$id."\"><a name=\"".$id."\"></a><a onClick=\"javascript: show_item(".$id.");\" href=\"#".$id."\">".
                        "<b>Dump was called: </b><br>".            
                        $msg.
                        "<b>Variables:<br></b></a>".
                    "<ul>\n";
                    
        foreach (func_get_args() as $var)
        {
            echo "<li>";
            
//            if (is_string($var)) echo "string (".strlen($var)."): ";
            new dBug($var);
            
            echo "</li>\n";
        }
        echo    "</ul></li></ul></div><HR>";
     }
Автор: dacuan
Дата сообщения: 25.11.2006 09:43
hire
Много буков

[more=Исправленный класс dBug]

Код:
<?php
/**
* Debugging class
*
* Dumps/Displays the contents of a variable in a colored tabular format
* Based on the idea, javascript and css code of Macromedia's ColdFusion cfdump tag
* A much better presentation of a variable's contents than PHP's var_dump and print_r functions
*
* @package Lib
* @author Kwaku Otchere <ospinto@hotmail.com>
**/

//error_reporting(E_ALL);


/**
* Debugging class
*
* Dumps/Displays the contents of a variable in a colored tabular format
* Based on the idea, javascript and css code of Macromedia's ColdFusion cfdump tag
* A much better presentation of a variable's contents than PHP's var_dump and print_r functions
*
* @package Lib
* @author Kwaku Otchere <ospinto@hotmail.com>
**/
class dBug {

/**
* TODO
*/
var $xmlDepth=array();
/**
* TODO
*/
var $xmlCData;
/**
* TODO
*/
var $xmlSData;
/**
* TODO
*/
var $xmlDData;
/**
* TODO
*/
var $xmlCount=0;
/**
* TODO
*/
var $xmlAttrib;
/**
* TODO
*/
var $xmlName;
/**
* TODO
*/
var $arrType=array("array","object","resource","boolean");

/**
* TODO
*/
function dBug($var,$forceType="") {

dBug::makeJsHeader();

$arrAccept=array("array","object","xml"); //array of variable types that can be "forced"
if(in_array($forceType,$arrAccept))
$this->{"varIs".ucfirst($forceType)}($var);
else
$this->checkType($var);
}

/**
* TODO
*/
function dump( ) {
$args = func_get_args();
foreach ( $args as $var ) {
new dBug( $var );
echo "<br><br>";
}
}

/**
* TODO
*/
function stop( ) {
$args = func_get_args();
foreach ( $args as $var ) {
new dBug( $var );
echo "<br><br>";
}
die();
}

/**
* TODO
*/
function makeJsHeader() {

if ( defined("DBUG_JAVASCRIPT") ) {
return;
}

define("DBUG_JAVASCRIPT", 1);
?>
<script language="JavaScript">
/* code modified from ColdFusion's cfdump code */
function dBug_toggleRow(source) {
target=(document.all) ? source.parentElement.cells[1] : source.parentNode.lastChild
dBug_toggleTarget(target,dBug_toggleSource(source));
}

function dBug_toggleSource(source) {
if (source.style.fontStyle=='italic') {
source.style.fontStyle='normal';
source.title='click to collapse';
return 'open';
} else {
source.style.fontStyle='italic';
source.title='click to expand';
return 'closed';
}
}

function dBug_toggleTarget(target,switchToState) {
target.style.display=(switchToState=='open') ? '' : 'none';
}

function dBug_toggleTable(source) {
var switchToState=dBug_toggleSource(source);
if(document.all) {
var table=source.parentElement.parentElement;
for(var i=1;i<table.rows.length;i++) {
target=table.rows[i];
dBug_toggleTarget(target,switchToState);
}
}
else {
var table=source.parentNode.parentNode;
for (var i=1;i<table.childNodes.length;i++) {
target=table.childNodes[i];
if(target.style) {
dBug_toggleTarget(target,switchToState);
}
}
}
}
</script>

<style type="text/css">
table.dBug_array,table.dBug_object,table.dBug_resource,table.dBug_resourceC,table.dBug_xml {
font-family:Verdana, Arial, Helvetica, sans-serif; color:#000000; font-size:12px;
}

.dBug_arrayHeader,
.dBug_objectHeader,
.dBug_resourceHeader,
.dBug_resourceCHeader,
.dBug_xmlHeader
{ font-weight:bold; color:#FFFFFF; }

/* array */
table.dBug_array { background-color:#006600; }
table.dBug_array td { background-color:#FFFFFF; }
table.dBug_array td.dBug_arrayHeader { background-color:#009900; }
table.dBug_array td.dBug_arrayKey { background-color:#CCFFCC; }

/* object */
table.dBug_object { background-color:#0000CC; }
table.dBug_object td { background-color:#FFFFFF; }
table.dBug_object td.dBug_objectHeader { background-color:#4444CC; }
table.dBug_object td.dBug_objectKey { background-color:#CCDDFF; }

/* resource */
table.dBug_resourceC { background-color:#884488; }
table.dBug_resourceC td { background-color:#FFFFFF; }
table.dBug_resourceC td.dBug_resourceCHeader { background-color:#AA66AA; }
table.dBug_resourceC td.dBug_resourceCKey { background-color:#FFDDFF; }

/* resource */
table.dBug_resource { background-color:#884488; }
table.dBug_resource td { background-color:#FFFFFF; }
table.dBug_resource td.dBug_resourceHeader { background-color:#AA66AA; }
table.dBug_resource td.dBug_resourceKey { background-color:#FFDDFF; }

/* xml */
table.dBug_xml { background-color:#888888; }
table.dBug_xml td { background-color:#FFFFFF; }
table.dBug_xml td.dBug_xmlHeader { background-color:#AAAAAA; }
table.dBug_xml td.dBug_xmlKey { background-color:#DDDDDD; }
</style>
<?php
}

/**
* Create the main table header
*
* TODO
*/
function makeTableHeader($type,$header,$colspan=2) {
echo "<table cellspacing=2 cellpadding=3 class=\"dBug_".$type."\">
<tr>
<td class=\"dBug_".$type."Header\" colspan=".$colspan." style=\"cursor:hand\" onClick='dBug_toggleTable(this)'>".$header."</td>
</tr>";
}

/**
* create the table row header
*
* TODO
*/

function makeTDHeader($type,$header) {
echo "<tr>
<td valign=\"top\" onClick='dBug_toggleRow(this)' style=\"cursor:hand\" class=\"dBug_".$type."Key\">".$header."</td>
<td>";
}

/**
* close table row
*
* TODO
*/
function closeTDRow() {
return "</td>\n</tr>\n";
}

/**
* error
*
* TODO
*/
function error($type) {
$error="Error: Variable is not a";
//thought it would be nice to place in some nice grammar techniques
// this just checks if the type starts with a vowel or "x" and displays either "a" or "an"
if(in_array(substr($type,0,1),array("a","e","i","o","u","x")))
$error.="n";
return ($error." ".$type." type");
}

/**
* check variable type
*
* TODO
*/
function checkType($var) {
switch(gettype($var)) {
case "resource":
$this->varIsResource($var);
break;
case "object":
$this->varIsObject($var);
break;
case "array":
$this->varIsArray($var);
break;
/*
case "boolean":
$this->varIsBoolean($var);
break;
*/
/*
case "NULL":
echo "NULL";
break;
*/
case "string":
$this->varIsString($var);
break;

default:
$this->varIsSimple($var);
/*
$var=($var=="") ? "[empty string]" : $var;
echo "<table cellspacing=0><tr>\n<td>".$var."</td>\n</tr>\n</table>\n";
break;
*/
}
}

/**
* Quoting HTML special chars
*
* TODO
*/
function quoteHtml( $text ) {
return nl2br(htmlspecialchars($text));
}

/**
* if variable is a string type
*
* TODO
*/
function varIsString($var) {

$this->makeTableHeader("array","string (".strlen($var).")");
echo "<tr>\n<td colspan=\"2\">".$this->quoteHtml($var)."</td>\n</tr>\n";
echo "</table>";

}

/**
* if variable is a simple type
*
* TODO
*/
function varIsSimple($var) {

$type = is_null($var) ? "undefined" : gettype($var);

$this->makeTableHeader("array", $type);

if ( is_null($var) ) {
$var = "[NULL]";
}
else {
$var = (gettype($var) == "boolean") ? ($var ? "true" : "false" ) : $var;
}

echo "<tr>\n<td colspan=\"2\">".$this->quoteHtml($var)."</td>\n</tr>\n";
echo "</table>";

}

/**
* if variable is an array type
*
* TODO
*/
function varIsArray($var) {
$this->makeTableHeader("array","array (".sizeof($var).")");
if(is_array($var)) {
if (!$var) {
// array is empty
echo "<tr>\n<td colspan=\"2\">[empty array]</td>\n</tr>\n";
}
foreach($var as $key=>$value) {
$this->makeTDHeader("array",$key);
if(in_array(gettype($value),$this->arrType))
$this->checkType($value);
else {
if ( is_null($value) ) {
$value = "[NULL]";
}
elseif ( trim($value) == "" ) {
$value = "[empty string]";
}
echo $this->quoteHtml($value)."</td>\n</tr>\n";
}
}
}
else echo "<tr><td>".$this->error("array").$this->closeTDRow();
echo "</table>";
}

/**
* if variable is an object type
*
* TODO
*/
function varIsObject($var) {

$this->makeTableHeader("object","object (".get_class($var).")");
$arrObjVars=get_object_vars($var);
if(is_object($var)) {
foreach($arrObjVars as $key=>$value) {
$value=(is_string($value) && trim($value)=="") ? "[empty string]" : $value;
$this->makeTDHeader("object",$key);
if(in_array(gettype($value),$this->arrType))
$this->checkType($value);
else echo $this->quoteHtml($value).$this->closeTDRow();
}
$arrObjMethods=get_class_methods(get_class($var));
foreach($arrObjMethods as $key=>$value) {
$this->makeTDHeader("object",$value);
echo "[function]".$this->closeTDRow();
}
}
else echo "<tr><td>".$this->error("object").$this->closeTDRow();
echo "</table>";
}

/**
* if variable is a resource type
*
* TODO
*/
function varIsResource($var) {
$this->makeTableHeader("resourceC","resource",1);
echo "<tr>\n<td>\n";
switch(get_resource_type($var)) {
case "fbsql result":
case "mssql result":
case "msql query":
case "pgsql result":
case "sybase-db result":
case "sybase-ct result":
case "mysql result":
$db=current(explode(" ",get_resource_type($var)));
$this->varIsDBResource($var,$db);
break;
case "gd":
$this->varIsGDResource($var);
break;
case "xml":
$this->varIsXmlResource($var);
break;
default:
echo get_resource_type($var).$this->closeTDRow();
break;
}
echo $this->closeTDRow()."</table>\n";
}

/**
* if variable is an xml type
*
* TODO
*/
function varIsXml($var) {
$this->varIsXmlResource($var);
}

/**
* if variable is an xml resource type
*
* TODO
*/
function varIsXmlResource($var) {
$xml_parser=xml_parser_create();
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0);
xml_set_element_handler($xml_parser,array(&$this,"xmlStartElement"),array(&$this,"xmlEndElement"));
xml_set_character_data_handler($xml_parser,array(&$this,"xmlCharacterData"));
xml_set_default_handler($xml_parser,array(&$this,"xmlDefaultHandler"));

$this->makeTableHeader("xml","xml document",2);
$this->makeTDHeader("xml","xmlRoot");

//attempt to open xml file
$bFile=(!($fp=@fopen($var,"r"))) ? false : true;

//read xml file
if($bFile) {
while($data=str_replace("\n","",fread($fp,4096)))
$this->xmlParse($xml_parser,$data,feof($fp));
}
//if xml is not a file, attempt to read it as a string
else {
if(!is_string($var)) {
echo $this->error("xml").$this->closeTDRow()."</table>\n";
return;
}
$data=$var;
$this->xmlParse($xml_parser,$data,1);
}

echo $this->closeTDRow()."</table>\n";

}

/**
* parse xml
*
* TODO
*/
function xmlParse($xml_parser,$data,$bFinal) {
if (!xml_parse($xml_parser,$data,$bFinal)) {
die(sprintf("XML error: %s at line %d\n",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}

/**
* xml: inititiated when a start tag is encountered
*
* TODO
*/
function xmlStartElement($parser,$name,$attribs) {
$this->xmlAttrib[$this->xmlCount]=$attribs;
$this->xmlName[$this->xmlCount]=$name;
$this->xmlSData[$this->xmlCount]='$this->makeTableHeader("xml","xml element",2);';
$this->xmlSData[$this->xmlCount].='$this->makeTDHeader("xml","xmlName");';
$this->xmlSData[$this->xmlCount].='echo "<strong>'.$this->xmlName[$this->xmlCount].'</strong>".$this->closeTDRow();';
$this->xmlSData[$this->xmlCount].='$this->makeTDHeader("xml","xmlAttributes");';
if(count($attribs)>0)
$this->xmlSData[$this->xmlCount].='$this->varIsArray($this->xmlAttrib['.$this->xmlCount.']);';
else
$this->xmlSData[$this->xmlCount].='echo "&nbsp;";';
$this->xmlSData[$this->xmlCount].='echo $this->closeTDRow();';
$this->xmlCount++;
}

/**
* xml: initiated when an end tag is encountered
*
* TODO
*/
function xmlEndElement($parser,$name) {
for($i=0;$i<$this->xmlCount;$i++) {
eval($this->xmlSData[$i]);
$this->makeTDHeader("xml","xmlText");
echo (!empty($this->xmlCData[$i])) ? $this->xmlCData[$i] : "&nbsp;";
echo $this->closeTDRow();
$this->makeTDHeader("xml","xmlComment");
echo (!empty($this->xmlDData[$i])) ? $this->xmlDData[$i] : "&nbsp;";
echo $this->closeTDRow();
$this->makeTDHeader("xml","xmlChildren");
unset($this->xmlCData[$i],$this->xmlDData[$i]);
}
echo $this->closeTDRow();
echo "</table>";
$this->xmlCount=0;
}

/**
* xml: initiated when text between tags is encountered
*
* TODO
*/
function xmlCharacterData($parser,$data) {
$count=$this->xmlCount-1;
if(!empty($this->xmlCData[$count]))
$this->xmlCData[$count].=$data;
else
$this->xmlCData[$count]=$data;
}

/**
* xml: initiated when a comment or other miscellaneous texts is encountered
*
* TODO
*/
function xmlDefaultHandler($parser,$data) {
//strip '<!--' and '-->' off comments
$data=str_replace(array("&lt;!--","--&gt;"),"",htmlspecialchars($data));
$count=$this->xmlCount-1;
if(!empty($this->xmlDData[$count]))
$this->xmlDData[$count].=$data;
else
$this->xmlDData[$count]=$data;
}

/**
* if variable is a database resource type
*
* TODO
*/
function varIsDBResource($var,$db="mysql") {
$numrows=call_user_func($db."_num_rows",$var);
$numfields=call_user_func($db."_num_fields",$var);
$this->makeTableHeader("resource",$db." result",$numfields+1);
echo "<tr><td class=\"dBug_resourceKey\">&nbsp;</td>";
for($i=0;$i<$numfields;$i++) {
$field[$i]=call_user_func($db."_fetch_field",$var,$i);
echo "<td class=\"dBug_resourceKey\">".$field[$i]->name."</td>";
}
echo "</tr>";
for($i=0;$i<$numrows;$i++) {
$row=call_user_func($db."_fetch_array",$var,constant(strtoupper($db)."_ASSOC"));
echo "<tr>\n";
echo "<td class=\"dBug_resourceKey\">".($i+1)."</td>";
for($k=0;$k<$numfields;$k++) {
$tempField=$field[$k]->name;
$fieldrow=$row[($field[$k]->name)];
$fieldrow=($fieldrow=="") ? "[empty string]" : $fieldrow;
echo "<td>".$fieldrow."</td>\n";
}
echo "</tr>\n";
}
echo "</table>";
if($numrows>0)
call_user_func($db."_data_seek",$var,0);
}

/**
* if variable is an image/gd resource type
*
* TODO
*/
function varIsGDResource($var) {
$this->makeTableHeader("resource","gd",2);
$this->makeTDHeader("resource","Width");
echo imagesx($var).$this->closeTDRow();
$this->makeTDHeader("resource","Height");
echo imagesy($var).$this->closeTDRow();
$this->makeTDHeader("resource","Colors");
echo imagecolorstotal($var).$this->closeTDRow();
echo "</table>";
}
}
?>
Автор: andymc
Дата сообщения: 09.12.2006 22:41
ГЕНЕРАТОР ПАРОЛЕЙ
$length - длина пароля
$dig - использовать ли цифры (по умолчанию - да)
$lchar - использовать ли латинские буквы (по умолчанию - да)
$rchar - использовать ли русские буквы
$symb - использовать ли дополнительные символы и какие


Код:
function generate_password($length,$dig=1,$lchar=1,$rchar=0,$symb=''){
    $dig=array(0,1,2,3,4,5,6,7,8,9);
    $rus=array(
    "а","б","в","г","д","е","ж","з","и","к",
    "л","м","н","о","п","р","с","т","у","ф",
    "х","ц","ч","ш","щ","ь","ы","ъ","э","ю",
    "я","ё","й");
    $for=array(
    "a","b","c","d","e","f","g","h","j","k",
    "l","m","n","o","p","q","r","s","t","u",
    "v","w","x","y","z");
    $main=array();
    $dig?$main=array_merge($main,$dig):true;
    $rchar?$main=array_merge($main,$rus):true;
    $lchar?$main=array_merge($main,$for):true;
    !empty($symb)?$main=array_merge($main,explode(' ',$symb)):true;
    shuffle($main);
    return $pass=substr(implode('',$main),0,$length);
}
Автор: LusAvedus
Дата сообщения: 10.12.2006 15:03

Цитата:
LusAvedus
дебют не удался - php.net/is_numeric

ps: 2.5 это уже не число?
pps: [0-9]+[0-9] эквивалентно [0-9]{2,}
ppps: (-)? чтобы не дублировать по 10 раз


1. is_numeric определяет число или не число. А этот код вырезает число из строки если оно есть.
2. Забыл написать что это все только для целых чисел.
3. За подсказки спасибо, учу матчасть по регулярным выражениям.
Автор: andymc
Дата сообщения: 10.12.2006 18:45
LusAvedus
Чтобы "вырезать число из строки", попробуй eregi_replace("[0-9]*",$input).
Хотя не советую увлекаться регулярами, они выполняются адско медленно


Добавлено:
Время выполнения скрипта
(другой вариант)
Есть функции (смысл их не важен)

Код:
function startTimer(){
global $starttime;
$starttime = microtime();
return $starttime;
}
function endTimer(){
global $starttime;
$pageendtime = microtime();
$starttime2 = explode(" ",$starttime);
$endtime = explode(" ",$pageendtime);
$totaltime = $endtime[0]-$starttime2[0]+$endtime[1]-$starttime2[1];
$totaltime = round($totaltime, 3);
return $totaltime;
}
Автор: Cheery
Дата сообщения: 12.12.2006 06:07
andymc
давайте будем писать то, что понимаем?

Цитата:
if ($QUERY_STRING!=''){

не будет установлена при register_globals=off.. при этом в куске используется $_SERVER

Цитата:
Извлечение сайта из ссылки

www.php.net/parse_url

Цитата:
Значение параметра строки запроса

www.php.net/parse_url + www.php.net/parse_str


ps: мое высказывание не предполагает его обсуждение в этом топике.
Автор: chs52ncm
Дата сообщения: 15.12.2006 13:45
Функция скачивающая файл по HTTP на PHP. Срочно. Помогите кто может.




Автор: andymc
Дата сообщения: 18.12.2006 12:25
Разборщик стилей (я так назвал)
Утром сегодня написал код, который разбирает текст стилей либо из файла .css либо встроенных. Надо указать только файл.
Стили помещаются в массив $styles в виде
$a['имя стиля']['параметр']=значение

Код:
//$s=file_get_contents('style.css');
$s=file_get_contents("index.htm");
$styles=array();
if (strchr($s,'<style>')){
$start=strpos($s,'<style>')+7;
$end=strpos($s,'</style>');
$s=substr($s,$start,$end-$start);
}
$start=0;
if (substr_count($s,'{')>0&&substr_count($s,'}')>0){
while (strchr($s,'{')){

$st0=strpos($s,'{');
$st1=strpos($s,'}');
$style_name=trim(substr($s,$start,$st0));
$style_body=trim(substr($s,$st0+1,$st1-$st0-1));
$styles[$style_name]=array();

while (strchr($style_body,':')){
$dv=strpos($style_body,':');
$tz=strpos($style_body,';');
$name=trim(substr($style_body,0,$dv));
$value=trim(substr($style_body,$dv+1,$tz-$dv-1));
$style_body=substr($style_body,$tz+1);
$styles[$style_name][$name]=$value;
}

$s=substr($s,$st1+1);
}
}
print_br($styles);
Автор: drew2006
Дата сообщения: 28.12.2006 20:38
перевод текста с русского на английский через translate.ru
используется для получения ЧПУ из русского названия страницы.

function translate ($src) {

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, 'http://www.translate.ru/text.asp');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'status=translate&direction=re&transliterate=ON&source='.urlencode($src));

    $html = curl_exec($ch);
    curl_close($ch);

    preg_match('|<span id="r_text" name="r_text">(.*?)</span>|s', $html, $rst);
    $rst = strtolower(preg_replace('|[\s]+|', '_', trim($rst[1])));

    return $rst;

}
Автор: mctaddy
Дата сообщения: 17.01.2007 23:03
люди дайте серийник
Автор: Jokerjar
Дата сообщения: 21.01.2007 18:51
Существует ли функция, которая возвращает часть строки после символа "?" в строке адреса (т.е. всю строку параметров)?

Извините, не туда задал
Автор: G_Drey_V
Дата сообщения: 21.01.2007 20:20
$GLOBALS['HTTP_RAW_GET_DATA'] - должно заработать по аналогии с $GLOBALS['HTTP_RAW_POST_DATA'], хотя насколько я помню, документации по этим переменным я ни разу нигде не встречал что-то наподобие недокументированных констант... хотя на самом деле, по-моему, какой-то из header-переменных это содержит.. попробуй заодно посмотреть print_r($_SERVER)
Автор: Cheery
Дата сообщения: 21.01.2007 20:24
G_Drey_V
бр.. первым делом надо смотреть phpinfo();

$_SERVER["QUERY_STRING"]



ps: чувствую, что пора банить тех, кто постит тут не по делу

Страницы: 12345678910

Предыдущая тема: Perl: Полезные решения


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.