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

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

Thread Status:
Not open for further replies.
  1. Cecil B Demented

    Cecil B Demented New Member

    Joined:
    13 Nov 2006
    Messages:
    19
    Likes Received:
    4
    Reputations:
    5
    Такой вопрос можно ли на php шифровать строку/данные испоьльзуя XOR, но не с простым смещением, а как это было сделано в XOR Encryption4 (javascript) используя ключь?
    Пробывал перебить код на php но чёт выдаёт не те значения что на js.
     
    #2181 Cecil B Demented, 4 Mar 2008
    Last edited: 4 Mar 2008
    1 person likes this.
  2. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    2inlanger
    Будет здоровски если у тебя постоянный IP можешь поднять веб сервер и поставить себе прокси сервер, люди будут через тебя юзать тот скрипт, у которого твой ип разрешен.

    Т.е. пишеш скрипт на сокетах, который подключаеться к тебе как к прокси и гуляет по тому скрипту...

    Надеюсь понял =)


    Насчет XOR.
    Неверное енкрипция это баг в 4 линии PHP
    в 5 помойму исправлено
     
    #2182 bul.666, 4 Mar 2008
    Last edited: 4 Mar 2008
  3. inlanger

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

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    это извращние :)
    но буду пробовать...
     
  4. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Отладка показала, что javascript-версия работает с длинными целыми, типа 1129711511511911111410070113366, что выходит за пределы целых чисел в пхп. На пхп надо или переписать алгоритм шифрования, или гуглить по поводу юзания в пхп длинных целых (long integer)
     
  5. rasl

    rasl New Member

    Joined:
    29 Feb 2008
    Messages:
    14
    Likes Received:
    2
    Reputations:
    0
    Кто поможет и обяснит дам 7знак icq
    как можно писать на картинке в php и можно ли вообще?
    желательно примерчег!

    мне надо чтобы на рисунке выводилось введеное слово которое ввели в поле ввода!
     
    1 person likes this.
  6. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    можно.

    PHP:
    $img imagecreatefromgif("img.gif");
    $white imageColorAllocate($img230230230);
    imagestring($img2365"TEXT"$white);
    imageGIF($img);
    ImageDestroy($img);
    примерно так.
     
  7. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    rasl, Точь в точь под твои потребности))

    PHP:
    <?php
    function img_nalogenie(&$im$img_info$imgtxt)
    {
       if (
    $img_info[0]>50 and $img_info[1]>20/* проверка, влезит ли надпись */
       
    {
          
    $green imagecolorallocate ($im02550); // установка зеленого цвета
          
    imagestring($im/* наше изображение */
          
    2/* id шрифта (0-5 - системные), остальные грузятся через imageloadfont() */
          
    50/* смещение по X */
          
    5/* смещение по Y */
          
    $imgtxt$green); /* цвет выводимого текста */
       
    }
    }

    if(isset(
    $_POST['imgtxt']))
    {

       
    $img_name "http://forum.antichat.ru/antichat/pic/logo.gif"/* Адрес картинки*/
       
    $imgtxt $_POST['imgtxt'];
       
    $info = @getimagesize($img_name); /* получение информации о изображении */
       
    $ext = @$info[2]; /* тип изображения */
       
    $header = @$info['mime']; /* правильный заголовок для использования в header() */

       
    switch($ext/* выбор способа открытия по типу изображения */
       
    {
         case 
    1// GIF
         
    {
          
    $im = @imagecreatefromgif($img_name); /* попытка открыть */
          
    if ($im/* Открылось или нет */
          
    {
              
    header("Content-type: " $header); /* отправляем заголовок */
              
    img_nalogenie($im$info$imgtxt); /* накладываем свой текст на изображение */
              
    imagegif($im); /* выводим изображение в браузер */
          
    }
          break;
         }

         case 
    2// JPG
         
    {
           
    $im = @imagecreatefromjpeg($img_name);
           if (
    $im)
           {
              
    header("Content-type: " $header);
              
    img_nalogenie($im$info$imgtxt);
              
    imagejpeg($im);
           }
           break;
         }

         case 
    3// PNG
         
    {
            
    $im = @imagecreatefrompng($img_name);
            if (
    $im)
            {
               
    header("Content-type: " $header);
               
    img_nalogenie($im$info);
               
    imagepng($im);
            }
            break;
         }

         case 
    6// BMP
         
    {
            
    $im = @imagecreatefromwbmp($img_name);
            if (
    $im)
            {
               
    header("Content-type: " $header);
               
    img_nalogenie($im$info$imgtxt);
               
    imagewbmp($im);
            }
           break;
         }
         default: 
    /* если ничего не подошло */
         
    {
             
    $f = @file($img_name); /* пробуем считать файл */
             
    if ($f/* если файл считался */
             
    {
                echo 
    implode(""$f); /* выводим массив строкой */
             
    }
             break;
         }
       }
    }
    ?>
    <form action method="post">
    <input name="imgtxt" type="text" />
    <input type="submit" value="Поехали" />
    </form>
    Пример работы тут
    пысы асько не надо
     
    1 person likes this.
  8. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Вот решил написать скрипт который загружает фалы из интернэта к себе на фтп но почемуто файлы получаются битые .обьясните пожайлуста.

    PHP:
    <?php   
    $hostname 
    "imgl.yandex.net";  
      
    $path "/i/www/logo.png";  
      
    $otvet "";  
     
      
    $fp fsockopen($hostname80$errno$errstr30);   
       
      
         
        
    $data "\r\n\r\n";  
         
        
    $headers "POST $path HTTP/1.1\r\n";   
        
    $headers .= "Host: $hostname\r\n";   
        
    $headers .= "Content-type: application/x-www-form-urlencoded\r\n";  
        
    $headers .= "Content-Length: ".strlen($data)."\r\n\r\n";  
         
        
    fwrite($fp$headers.$data);   

        while (!
    feof($fp))  
        {   
          
    $otvet .= fgets($fp1024); 
           
        }   
        
    fclose($fp);   
        
    $massiv_otveta=explode("\n",$otvet); 

    $nachalo_ishodnica array_search(''$massiv_otveta)-3;
    $konec_ishodnica count($massiv_otveta);



    $filename 'negri.png';
    $handle fopen($filename'x');


    for (
    $i=$nachalo_ishodnica;$i<=$konec_ishodnica;$i++) {
    fwrite($handle$massiv_otveta[$i]);
    }

    fclose($handle);

    ?>    
     
    #2188 ZET36, 6 Mar 2008
    Last edited: 6 Mar 2008
  9. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    ZET36,
    PHP:
    <?php
    $data 
    "\r\n\r\n";
    $headers .= "Content-Length: ".strlen($data)."\r\n\r\n"
    ?>
    Может в $data должно быть пусто? =\
     
  10. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Isis хых непомогает, блин я конкретно ступил со скриптом всё можно сделать проще. но всёравно файл битый

    PHP:
    <?php
    $inetfile 
    fopen("http://imgl.yandex.net/i/www/logo.png""r");
    $copyfyle fopen("logo.png"'x');

    while (!
    feof($inetfile)) {
        
    $file fgets($inetfile4096);

    fwrite($copyfyle$file);
    fclose($copyfyle);   
    }
    fclose($inetfile);
    ?> 
    мне кажется это происходит из за режимов для fopen()
    (x) а какие есть ещё режимы для записи файлов?
     
    #2190 ZET36, 6 Mar 2008
    Last edited: 6 Mar 2008
    1 person likes this.
  11. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    $data - это строка с запросом (var1=...&var2=...)

    Вот исправления.

    Строка 10 (на твоё усмотрение)
    PHP:
    $data "var1=...&var2=...";
    Строка 17
    PHP:
    fwrite($fp$headers);
    Твой код можно упростить во много раз, если воспользоваться file_get_contents(), т.к. у тебя там использоваться должен метод не POST, а GET.

    PHP:
    <?php
        
    // {
        
    $file_to_download 'http://imgl.yandex.net/i/www/logo.png';
        
    $filename 'negri.png';
        
    // }
        
    $f_got file_get_contents($file_to_download);
        
    $fopen fopen($filename'w');
        
    fwrite($fopen$f_got);
        
    fclose($fopen);
    ?>
    P.S. Права на файл negri.png или папку со скриптом должны быть 0777.
     
    #2191 NOmeR1, 6 Mar 2008
    Last edited: 6 Mar 2008
    1 person likes this.
  12. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    NOmeR1 огромное спасибо. всё работает
     
  13. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Помогите плз я написал скрипт...у меня он работает.. а у чела которому он нужен не пашет вот скрипт

    функция mysql_qw()

    PHP:
    <?php ## Простейшая функция для работы с placeholder-ами.

    // result-set mysql_qw($connection_id, $query, $arg1, $arg2, ...)
    //  - или -
    // result-set mysql_qw($query, $arg1, $arg2, ...)
    // Функция выполняет запрос к MySQL через соединение, заданное как
    // $connection_id (если не указано, то через последнее открытое).
    // Параметр $query может содержать подстановочные знаки ?,
    // вместо которых будут подставлены соответствующие значения
    // аргументов $arg1, $arg2 и т.д. (по порядку), экранированные и
    // заключенные в апострофы.
    function mysql_qw()
    {
        
    // Получаем все аргументы функции.
        
    $args func_get_args();
        
    // Если первый параметр имеет тип "ресурс", то это ID соединения.
        
    $conn null;
        if (
    is_resource($args[0]))
            
    $conn array_shift($args);
        
    // Формируем запрос по шаблону.
        
    $query call_user_func_array("mysql_make_qw"$args);
        
    // Вызываем SQL-функцию.
        
    return $conn !== null mysql_query($query$conn) : mysql_query($query);
    }

    // string mysql_make_qw($query, $arg1, $arg2, ...)
    // Данная функция формирует SQL-запрос по шаблону $query,
    // содержащему placeholder-ы.
    function mysql_make_qw()
    {
        
    $args func_get_args();
        
    // Получаем в $tmpl ССЫЛКУ на шаблон запроса.
        
    $tmpl = &$args[0];
        
    $tmpl str_replace("%""%%"$tmpl);
        
    $tmpl str_replace("?""%s"$tmpl);
        
    // После этого $args[0] также окажется измененным.
        // Теперь экранируем все аргументы, кроме первого.
        
    foreach ($args as $i => $v)
        {
            if (!
    $i)
                continue; 
    // это шаблон
            
    if (is_int($v))
                continue; 
    // целые числа не нужно экранировать
            
    $args[$i] = "'" mysql_escape_string($v) . "'";
        }
        
    // На всякий случай запорняем 20 последних аргументов недопустимыми
        // значениями, чтобы в случае, если число "?" превышает количество
        // параметров, выдавалась ошибка SQL-запроса (поможет при отладке).
        
    for ($i $c count($args) - 1$i $c 20$i++)
            
    $args[$i 1] = "UNKNOWN_PLACEHOLDER_$i";
        
    // Формируем SQL-запрос.
        
    return call_user_func_array("sprintf"$args);
    }
    ?>
    Часть кода которая не работает:

    PHP:
    $result mysql_qw('SELECT * FROM items WHERE owner_id=? AND item_id=?'$char_id,4037) or die(mysql_error());
    for (
    $red = array(); $row2 mysql_fetch_array($result); $red[] = $row2);
    if (
    $red == array())
    {
    $result mysql_qw('SELECT MAX(object_id)+1 AS id FROM items');
    $row mysql_fetch_assoc($result);
    $ins_id $row['id'];
    mysql_qw('INSERT INTO items SET owner_id=?, object_id=?, item_id=?, count=?'$char_id$ins_id4037$FAs_for_vote) or die(mysql_error());
    } else {
    mysql_qw('UPDATE items SET count=count+? WHERE owner_id=? AND item_id =?'$FAs_for_vote,
    $char_id4037) or die(mysql_error());}
    эта часть скрипта проверяет есть чи у чара этот предмет если да то добовляет +1 к количеству а если нет то просто создаёт его у чара....
    но проблема в том что скрипт работает у меня нормально а у другова он просто создаёт всегда этот предмет заного даже если он существовал
     
    #2193 Doom123, 6 Mar 2008
    Last edited: 7 Mar 2008
  14. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    а у вас БД одинаковые?
     
  15. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    у меня mysql 5.0 у него 5.1
     
  16. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    а у вас БД одинаковые?
    скорее всего у тебя БД более старой версии, а парнишки более новая версия.
    если так то может и БД ругаться на запросы, елси мускул, то в новых версиях обязательны кавычки, как
    PHP:
    SELECT FROM `testWHERE id="1"
     
  17. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    я пытался и с помощью ковычек исправить не вышло( да и темболее там соит
    or die(mysql_error()) что вывело бы ошибку в синтаксисе
     
  18. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    у меня была похожая ситуация, но у меня БД ошибку из-за этого не выдавало, а выдавало пустой результат, именно пустой. И прерывание не срабатывало.
     
    1 person likes this.
  19. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    тогда я всётаки попробую функцией mysql_query а не своей)
     
  20. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    $result = mysql_qw("SELECT * FROM `items` WHERE `owner_id`='?' AND `item_id`='?' ", ... );
    Пиши с апострофами... Мб поможет ^^
     
    1 person likes this.
Thread Status:
Not open for further replies.