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

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

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

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Эх, спс конечно, но мне надо именно на фсокопен, ибо курла нету...
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    rushter Поставь так же без палева на хост заблокированным dl() и без прямого доступа к php.ini

    mailbrush Выше - куча оберток для пост запросов. Берешь сниффер, в конце концов, и копируешь 1в1 запрос
     
    _________________________
  3. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Tigger
    PHP:
    <?php 
    $email 
    '[email protected]'
    $pass '123';
    $from '1';
    $to '5';

    set_time_limit(0);   
    $ua="User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)";  
    $url "http://vkontakte.ru/login.php";  
    $ch curl_init();  
        
    curl_setopt($chCURLOPT_URL$url);  
        
    curl_setopt($chCURLOPT_HEADER1);  
        
    curl_setopt($chCURLOPT_USERAGENT$ua);  
        
    curl_setopt($chCURLOPT_TIMEOUT10);  
        
    curl_setopt($chCURLOPT_POSTtrue);  
        
    curl_setopt($chCURLOPT_POSTFIELDS"success_url=&fail_url=&try_to_login=1&email=$email&pass=$pass");  
        
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue); 
        
    curl_setopt($chCURLOPT_COOKIEFILE"./cook"); 
        
    curl_setopt($chCURLOPT_COOKIEJAR"./cook");
          
    $res curl_exec($ch);  
    curl_close($ch);  
    $a strpos($res'OK' );  

    if (
    $a 0)
    {  
        echo 
    "Незалогинились =(<br>"
        exit;  
    }  
    $b strpos($res'Found' );  
    if (
    $b 0)
    {  
        echo 
    "<b>Удачно залогинились, приступаем к парсингу...</b><br>";
    }
     
    for(
    $i $from$i <= $to$i++)
    {
    $url_p "http://vkontakte.ru/search.php?id=$i";  
    $ch curl_init();  
        
    curl_setopt($chCURLOPT_URL$url_p);  
        
    curl_setopt($chCURLOPT_USERAGENT$ua);  
        
    curl_setopt($chCURLOPT_TIMEOUT10);  
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1); 
        
    curl_setopt($chCURLOPT_COOKIEFILE"./cook"); 
        
    curl_setopt($chCURLOPT_COOKIEJAR"./cook");  
    $res_p curl_exec($ch);  
    curl_close($ch); 

    preg_match('#<div style=\"overflow: hidden;\">(.*?)</div>#i',$res_p,$name); 

    $id explode("php?",$url_p);
    echo 
    $id[1].":".$name[1]."<br>";

    echo 
    "<b>Работа окончена</b>";
    ?>
    Результат:
    Ну как видиш в первом курле я добавил сохранение кукисов в файл, в втором ети куки читаються, как бы сессия продолжается. Добавил цикл и при помощи регулярки ищу Имена по профилям:
    PHP:
    preg_match('#<div style=\"overflow: hidden;\">(.*?)</div>#i',$res_p,$name);
    Собсна все, думаю понятно.
    ЗЫ как видиш первые 4 строки ето как бы конфиг:
    PHP:
    $email '[email protected]'
    $pass '123';
    $from '1';
    $to '5';
    Мыло и пасс, с которых логиниться. А так же 2 переменные, с какого id начинать и каким заканчивать.
     
    #8143 b3, 4 Feb 2009
    Last edited: 4 Feb 2009
    1 person likes this.
  4. Chrek625

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

    Joined:
    6 Jun 2006
    Messages:
    143
    Likes Received:
    13
    Reputations:
    -7
    Доброго всем времени суток.
    Снова прошу помощи у меня опять возникла проблема с $this.

    PHP:
    <?php

    include_once("classes/DBManager.php");
    include_once(
    "PEAR.php");

    class 
    DBObject {
        var 
    $DBManager;
        var 
    $__table;
        var 
    $__keyColumn;
        var 
    $data = array();
        var 
    $view;
        var 
    $_isLoaded false;
        var 
    $_changedColumns = array();

        
    /**
        * Constructor
        *
        * Creates a new DBObject
        * if $objectId is specified gets data from database
        *
        * @param    DBManager   &$DBManager instance of DBManager
        * @param    mixed       $objectId   identity of object instance in database
        * @access public
        */
        
    function DBObject(&$DBManager$objectId=null) {
            
    $this->DBManager =& $DBManager;
            if (
    $objectId !== null) {
                
    $this->objectId $objectId;
                
    $this->get($objectId);
            }
        }

        
    /**
        * Gets data of current object from database and put it into class variables
        *
        * @param    mixed       $objectId   identity of object instance in database
        * @access public
        */
        
    function get($objectId=null$fieldsArray=array()) {
            if (
    $objectId !== null) {
                
    $this->objectId $objectId;
            }
            if (
    is_array($fieldsArray) and sizeof($fieldsArray)>0) {
                    
    $fieldList implode(','$fieldsArray);
            } else {
                    
    $fieldList "*";
            }

            if (isset(
    $this->objectId)) {
                
    $this->data $this->DBManager->SingleRowQuery("SELECT $fieldList FROM `{$this->__table}` WHERE {$this->__table}.{$this->__keyColumn}='{$this->objectId}'");
                if (
    $this->data) {
                    
    $this->_isLoaded true;
                    return 
    true;
                }
            }
            return 
    false;
        }

        
    /**
        * Stores data of current object from class variables into database
        *
        * @access public
        */
        
    function insert() {
            if (!isset(
    $this->objectId)) {
                
    $this->$objectId $this->generateId();   <<-- строчка с ошибкой
            
    }
            
    $setClause $this->_prepareSetClause();
            if (
    strlen($setClause)>0) {
            
    $sql "INSERT INTO `{$this->__table}` SET $setClause ";
    //        echo "$sql<br>";
                
    return $this->DBManager->ExecuteQuery($sql);
            }
            return 
    false;
        }

        
    /**
        * Updates data of current object from class variables into database
        *
        * @access public
        */
        
    function update() {
            if (isset(
    $this->objectId)) {
                
    $setClause $this->_prepareSetClause();
                if (
    strlen($setClause)>0) {
                    return 
    $this->DBManager->ExecuteQuery("UPDATE `{$this->__table}` SET $setClause WHERE {$this->__table}.{$this->__keyColumn}='{$this->objectId}'");
                }
            }
            return 
    false;
        }

        
    /**
        * Deletes current object in database and unsets class variables
        *
        * @access public
        */
        
    function delete() {
            if (isset(
    $this->objectId)) {
                return 
    $this->DBManager->ExecuteQuery("DELETE FROM `{$this->__table}` WHERE {$this->__table}.{$this->__keyColumn}='{$this->objectId}'");
            }
            return 
    false;
        }

        function 
    getVariable($variableName) {
            if (
    $variableName) {
                if (
    in_array($variableNamearray_keys($this->data))) {
                    return 
    $this->data[$variableName];
                }
            }
            return 
    null;
        }


        function 
    setVariable($variableName$variableValue) {
            
    $this->_changedColumns[] = $variableName;
            
    $this->data[$variableName] = $variableValue;
        }

        function 
    increaseVariable($variableName$increaseValue) {
            
    $this->setVariable($variableName$this->getVariable($variableName)+$increaseValue);
        }

        function 
    decreaseVariable($variableName$decreaseValue) {
            
    $this->setVariable($variableName$this->getVariable($variableName)-$decreaseValue);
        }

        function 
    removeVariable($variableName) {
            if (
    $variableName) {
                if (
    in_array($variableNamearray_keys($this->data))) {
                    unset(
    $this->data[$variableName]);
                }
            }
        }

        function 
    isVariableEquals($variableName$value) {
            return (
    $this->getVariable($variableName) == $value);
        }

        function 
    generateId() {
            
    $id '';
            for( 
    $i=0;$i<9;$i++ ) {
                
    $id .= strval(rand(0,9));
            }
            return 
    $id;
        }

        function 
    _prepareSetClause() {
            
    $setClause '';
            if (
    $this->_isLoaded) {
                if (
    sizeof($this->_changedColumns)>0) {
                    foreach (
    $this->_changedColumns as $columnName) {
                        if (
    $columnName != $this->__keyColumn and strval(intval($columnName))!=$columnName) {
                            
    $setClause .= "{$this->__table}.$columnName = '".mysql_escape_string($this->getVariable($columnName))."',";
                        }
                    }
                    
    $setClause substr($setClause,0,-1);
                }
            } else {
                if (
    sizeof($this->data)>0) {
                    foreach (
    $this->data as $columnName=>$columnValue) {
                        if (
    $columnName != $this->__keyColumn and strval(intval($columnName))!=$columnName) {
                            
    $setClause .= "{$this->__table}.$columnName = '".mysql_escape_string($columnValue)."',";
                        }
                    }
                    
    $setClause substr($setClause,0,-1);
                }
            }
            return 
    $setClause;
        }

        function 
    getView($templateFile="index.html") {
    //        require_once 'HTML/Template/Flexy.php';
    /*        $flexy = new HTML_Template_Flexy();
            if ($flexy->compile($templateFile)===true) {
                $output = $flexy->bufferedOutputObject($this);
            }
            return $output;*/
        
    }

        function 
    lockTable() {
        return;
        }

        function 
    unlockTable() {
        return;
        }
        
        
        function 
    getSystemParam($param)
        {
            
    $SQLQuery "select $param from system_parameters";
            
    $res $this->DBManager->SingleRowQuery($SQLQuery);
            return 
    $res[0];
        }
        
        function 
    getItemNameField()
        {
            
    $lang $this->_app_voc->words['LANG'];
            if (
    $lang == 'ENG')
            {
                return 
    'name_eng';
            }
            else if (
    $lang == 'RUS')
            {
                return 
    'name';
            }
            
        }

        function 
    getNameField()
        {
            
    $lang $this->_app_voc->words['LANG'];
            if (
    $lang == 'ENG')   return 'name_eng';
            else if (
    $lang == 'RUS')     return 'name_rus';
        }

        function 
    getDescrField()
        {
            
    $lang $this->_app_voc->words['LANG'];
            if (
    $lang == 'ENG')   return 'descr_eng';
            else if (
    $lang == 'RUS')     return 'descr_rus';
        }
        
        
        function 
    getRaceName($race)
        {
            
    $name_field $this->getNameField();
            
    $sql "select $name_field from Alignments where al_name = '$race'";
            
    $name $this->DBManager->SingleRowQuery($sql);
            return 
    $name[0];
        }
        
        function 
    _safe_symbol($text)
        {
            
    $text str_replace('&'''$text);
            return 
    $text;
        }

    }

    ?>
    подскажите в чём ошибка в строчке $this->$objectId = $this->generateId();
     
  5. Brain explosion

    Joined:
    30 Jan 2009
    Messages:
    17
    Likes Received:
    6
    Reputations:
    0
    Нужна функция быстрого поиска в файле.
    Т.е. file_search (string filename, string word) возвращать должна указатель на начало слова в файле в случае совпадения, в случае отсутсвия совпадения - false. вообщем аналог array_search ( mixed needle, array haystack [, bool strict] ) только не для массива а для файла.
    Условия:
    1. максимальная скорость работы после перевода php->exe.
    2. отсутсвие органичений на размер оперативной памяти и длинну файла.
    3. размер искомого слова не больше 255 байт.
    4. как только 1 совпадение найдено поиск прекращается.
    P.S. Может есть у кого готовая такая?
     
  6. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    function file_search($fname, $search)
    {
    $fp = fopen($fname, "r");
    while(!feof($fp)) {
    if($search[0]==fread($fp, 1))
    for($i=1; $i<strlen($search) && !feof($fp); $i++) if($search[$i]==fread($fp, 1)) ; else break;
    if($i==strlen($search)-1) die('yes');
    }
    }
     
  7. Chrek625

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

    Joined:
    6 Jun 2006
    Messages:
    143
    Likes Received:
    13
    Reputations:
    -7
    Жаль конечно но заглушка ничего хорошего не дала :( посколько это ошибка указывается в скрипте регестрации то после того как я заглушил её ошибка не высветилась но вообщемто ничего не произошло вообще... просто белое окно браузера... а есть ли ещё какието варианты?
     
  8. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Покажи ошибку , я не телепат
     
  9. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    застопорился на таком вопросе:
    как реализовать брутфорс ЕСЛИ известны первый и последний символ семизначного пароля.
    спасибо. с меня как всегда +сы :)
     
  10. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Задача сводится к задаче генерации пятизначного пароля и дополнения известными символами слева и справа...
     
    1 person likes this.
  11. AFoST

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

    Joined:
    28 May 2007
    Messages:
    588
    Likes Received:
    485
    Reputations:
    176
    нужно найти ключ элемента массива по известному элементу. без цикла.
    PHP:
    !in_array($var$vars) ? $vars[] = $var $vars[ключ элемента $var в массиве $vars][0] +=1;
    какие варианты?
     
    #8151 AFoST, 4 Feb 2009
    Last edited: 4 Feb 2009
  12. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    array_search — Осуществляет поиск данного значения в массиве и возвращает соответствующий ключ в случае удачи

    Описание
    mixed array_search ( mixed $needle, array $haystack [, bool $strict] )

    Ищет в haystack значение needle и возвращает ключ, если таковое присутствует в массиве, FALSE в противном случае.
     
  13. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    Уважаемое сообщество написал функцию для подсчета слов в тексте, отказывается работать и выдает что -то не понятное, при тестировании создается видимость того что ф-ция explode не разбивает строку на слова (через echo просматривал значения массива $parse и видно было что там не слова а строки).

    Code:
    <?
    function WordCounter($w_Arr,$c_Arr){
    foreach($w_Arr as $k1=>$val1){
    $parse=explode(" ",$val1);
    foreach($parse as $k2=>$val2){
    if(strpos($val1,$val2))
    $c_Arr[$val2]++;
    
    }
    }
    }
    ?>
    
     
  14. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    http://php.su/functions/?str-word-count
     
  15. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    PHP:
    <?php
     $textarea 
    "слова слово один десять сто";

     
    $textarea str_replace("\n"" "$textarea);
     
    $words explode(" "$textarea);
     
    $count 0;
     foreach(
    $words as $word)
     {
      if(
    strlen($word) > 0$count++;
     }
     echo 
    $count;
     
    ?>
    Вот какбы =)
     
  16. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    тогда уж:

    PHP:
    function words_count($text)
    {
        return 
    count(explode(' 'str_replace('\n'' '$text)));
    }
     
  17. eLWAux

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

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    m0Hze:
    PHP:
    return md5(time());
    вероятность повторения 0 :)
     
  18. kraken

    kraken Member

    Joined:
    2 Jan 2009
    Messages:
    74
    Likes Received:
    75
    Reputations:
    5
    ЧТо то немогу понять....
    есть массив
    $url[]
    В ней записи вида
    /23.jpg
    http://site.com/4.jpg
    /tr/4.jpg

    Нужно перебрать все и где нет http://site.com то вставить
    Пользоваться только strpos
    .....Кто сможет отхватит+ от меня
     
  19. mixkorshun

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

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    kraken

    Code:
    for($i=0; i<100; $i++)
      {
          if($url[$i][1] == "/")
            {
               $url[$i] = "www.mysite.com".$url[$i];
            }
      }
    
    если в синтаксисе не ошибся то так
     
  20. kraken

    kraken Member

    Joined:
    2 Jan 2009
    Messages:
    74
    Likes Received:
    75
    Reputations:
    5
    mixkorshun
    1.Ты ошибся $url[$i][1] покажет 2 ой символ
    2. Я сказал с использованием strpos
     
Thread Status:
Not open for further replies.