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

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

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

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

    Joined:
    27 Aug 2008
    Messages:
    937
    Likes Received:
    355
    Reputations:
    58
    seofilms первым параметром функции file_put_contents должно быть имя файла. И обременять переменную двойными кавычками в функции нет смысла.
     
  2. Alexz291

    Alexz291 New Member

    Joined:
    10 Mar 2012
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Привет, у меня возникла проблема я не могу подключить конфиг из каталога выше к php файлу, мне нужен какой нибудь более или менее универсальный способ нежели чем includ ить полный путь от корня сервера.

    Зараниее спасибо.
     
  3. Ю_ЗвЕРь

    Ю_ЗвЕРь Member

    Joined:
    23 Nov 2006
    Messages:
    99
    Likes Received:
    28
    Reputations:
    1
    Приветствую,

    На проекте несколько сабдоменов и хочется, чтобы в футере на каждом региональном сабдомене персональные контактные данные были. Пробую использовать макет, но пока без успехов:

    <?php
    $host = $_SERVER['REQUEST_URI'];
    if ($host == 'spb.domain.ru') { ?>
    Контакты Питера.
    <?php } ?>

    Подскажите, пожалуйста, как задать на каждый адрес свой текст. Спасибо.
     
  4. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,248
    Likes Received:
    1,148
    Reputations:
    886
    $_SERVER['HTTP_HOST'] вместо request_uri
     
    _________________________
    1 person likes this.
  5. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    937
    Likes Received:
    355
    Reputations:
    58
    Ю_ЗвЕРь $_SERVER['REQUEST_URI'] содержит имя скрипта, а сравниваете вы с именем сервера, то бишь нужно изменить на HTTP_HOST, как посоветовал Konqi
     
    1 person likes this.
  6. Ю_ЗвЕРь

    Ю_ЗвЕРь Member

    Joined:
    23 Nov 2006
    Messages:
    99
    Likes Received:
    28
    Reputations:
    1
    Konqi, Skofield, ребята, огромная человеческая благодарность.
     
  7. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Из 500 изображений выбираются случайно 2 и выводятся на страницу, как сделать так, чтобы больше эти 2 изображения вместе не попались, и чтобы можно было определить, когда переберутся все возможные комбинации?
     
  8. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Записывать хэши\пути\имена в БД.
     
  9. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Так и делал, брал 1 случайно, потом получал из базы имена всех остальных, затем отбрасывал те, с которыми оно уже выводилось, из оставшихся случайно выбирал второе изображение и выводил на экран, но теперь представь такую картину, у 498 изображений перебраны все комбинации и осталось 2 последних изображения, каков шанс того что 1 изображение окажется одним из этих двух.
     
  10. VKtraf

    VKtraf Member

    Joined:
    3 Feb 2012
    Messages:
    55
    Likes Received:
    10
    Reputations:
    5
    Всем привет!
    Парни, если не отнимет много времени, пожалуйста подскажите по вопросу.

    Хочу сделать заполнение профиля на php, заполнение Интересы работает (все - текстовые поля):

    auth.php ("ядро"):
    Code:
    <?
        // true т.к. мы будем отправлять post запрос:
        curl_setopt($ch, CURLOPT_POST, true);  
        // чтобы сайт думал, что мы - браузер:
        curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
        // ответ сервера будем записывать в переменную
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        // по редиректам будем переходить автоматически.
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login');
        //Формирование запроса таким образом, я счел более наглядным
        $post = array(
                    'act' => 'login',
                    'q' => '',
                    'al_frame' => '1',
                    'expire' => '',
                    'captcha_sid' => '',
                    'captcha_key' => '',
                    'from_host' => 'vk.com',
                    'email' => $login,
                    'pass' => $password
                );
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); /*Все данные, передаваемые в HTTP POST-запросе. Для передачи файла,
                                                                        укажите перед именем файла @, а также используйте полный путь к файлу.
                                                                        Тип файла также может быть указан с помощью формата ';type=mimetype',
                                                                        следующим за именем файла. Этот параметр может быть передан как в
                                                                        качестве url-закодированной строки, наподобие 'para1=val1&para2=val2&...',
                                                                        так и в виде массива, ключами которого будут имена полей, а значениями -
                                                                        их содержимое. Если value является массивом, заголовок Content-Type
                                                                        будет установлен в значение multipart/form-data. Начиная с версии PHP 5.2.0,
                                                                        при передаче файлов с префиксом @, value должен быть массивом.
                                                                       */
        $answer = curl_exec($ch); /* В $answer нам приходит javascript, который и устанавливает куки
                                     с названием: remixsid Нам нужно cпарсить эти 60 символов,
                                     идентификатора сессии. с помощью них vkontakte поймет,
                                     что мы авторизировались.*/
        $sid = substr($answer, strpos($answer, "setCookieEx('sid', '") + 20, 60);
        $cookie = 'remixsid=' . $sid;
        $_SESSION['cookie'] = $cookie;
        
        curl_setopt($ch, CURLOPT_POST, false); /*TRUE для использования обычного HTTP POST.
                                                Данный метод POST использует обычный application/x-www-form-urlencoded,
                                                обычно используемый в HTML-формах.
                                               */
        curl_setopt($ch, CURLOPT_COOKIE, $_SESSION['cookie']); //Содержимое заголовка "Cookie: ", используемого в HTTP-запросе. Обратите внимание, что несколько cookies разделяются точкой с запятой с последующим пробелом (например, "fruit=apple; colour=red") 
    
    ?>
    Сам скрипт для заполнения полей вкладки Интересы:

    Code:
    <?
    session_start();
    
    $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
                'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';
    $cookie = '';
    $login = 'логин';
    $password = 'пароль';
    
    $ch = curl_init();
    
    include('auth.php');
    
    curl_setopt($ch, CURLOPT_URL, 'http://vk.com/edit?act=interests');
       
    
    $prehash = curl_exec($ch);
    
    // --- получаем хэш страницы Интересы ---
     preg_match_all('/"hash":"(\w+)"/i', $prehash, $interests_hash);
     $final_hash = $interests_hash[0][0]; 
     
     $final_hash = str_replace("\"", "", $final_hash);
     $final_hash = str_replace("hash:", "", $final_hash);
    // --- / --------------------------------
    
    
       //Формирование запроса таким образом, я счел более наглядным
        $post = array(
                    'act' => 'a_save_interests',
                    'activities' => 'Ничего не делаю',
                    'movies' => 'Боевики',
                    'music' => 'Led Zeppelin',
                    'hash' => 'TEMPORARY'
                );
    			
    	$post[hash] = $final_hash;
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
        $answer = curl_exec($ch);
        echo
    
        // укажем страницу, с которой мы получим данные для проверки
        curl_setopt($ch, CURLOPT_URL, 'http://vk.com/edit?act=interests');
       $answer = curl_exec($ch);
        echo $answer;
       
    
    
    curl_close($ch);
    ?>
    Пытаюсь сделать то же самое, но для вкладки Контакты (2 списка, 4 текстовых поля) - не получается, вообще не изменяет:
    Code:
    <?
    session_start();
    
    $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
                'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';
    $cookie = '';
    $login = 'логин';
    $password = 'пароль';
    
    $ch = curl_init();
    
    include('auth.php');
    
    
    
    
     
     
    
    curl_setopt($ch, CURLOPT_URL, 'http://vk.com/edit?act=contacts');
    
    
    // --- получаем хэш страницы ---
    $prehash = curl_exec($ch);
     preg_match_all('/"hash":"(\w+)"/i', $prehash, $page_hash);
     $final_hash = $page_hash[0][0]; 
     
     $final_hash = str_replace("\"", "", $final_hash);
     $final_hash = str_replace("hash:", "", $final_hash);
    // --- получаем хэш страницы ---
    
    
       //Формирование запроса таким образом, я счел более наглядным
        $post = array(
                    'act' => 'a_save_contacts',
                    'city' => '2',
                    'country' => '2',
    				'email' => '',
                    'privacy_email' => '0',
                    'privacy_home' => '0',
                    'privacy_mobile' => '0',
                    'home' => '888',
                    'mobile' => 'NOKI',
                    'skype' => 'SKYPE',
                    'website' => 'VK',
                    'hash' => 'TEMPORARY'
                );
    	$post[hash] = $final_hash;			// записываем персональный хэш в массив
    	
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
        $answer = curl_exec($ch);
        echo
    
        // укажем страницу, с которой мы получим данные для проверки
        curl_setopt($ch, CURLOPT_URL, 'http://vk.com/edit?act=contacts');
       $answer = curl_exec($ch);
        echo $answer;
       
    
    
    curl_close($ch);
    ?>
    Т.е. я сначала просто заменил передаваемые поля массива $post на другие:
    'act' => 'a_save_contacts',
    'home' => '888',
    'mobile' => 'NOKI',
    'skype' => 'SKYPE',
    'website' => 'VK',

    но это не помогло.
    Тогда проснифал полную строку запроса и отправляю все параметры:
    'act' => 'a_save_contacts',
    'city' => '2',
    'country' => '2',
    'email' => '',
    'privacy_email' => '0',
    'privacy_home' => '0',
    'privacy_mobile' => '0',
    'home' => '888',
    'mobile' => 'NOKI',
    'skype' => 'SKYPE',
    'website' => 'VK',

    но это тоже не помогает, он не изменяет данные в профиле.

    Строка запроса при ручной отправке изменений вот такая:
    act=a_save_contacts&al=1&city=1&country=1&email=&hash=_тут_хэш_&home=Domashnij&mobile=Mobila&privacy_email=0&privacy_home=0&privacy_mobile=0&skype=Skype-nick&website=VKONTAKTE.RU

    Может ли быть причина в том, что на этой вкладке есть выпадающие списки - поэтому он и не изменяет?

    Пожалуйста подскажите, в чем может быть причина, полдня мучаюсь, никак не могу уговорить его работать с другими вкладками профиля.

    Заранее огромное спасибо! :)
     
  11. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Как перебрать все возможные комбинации из цифр длиной в 8 символов?
     
  12. VKtraf

    VKtraf Member

    Joined:
    3 Feb 2012
    Messages:
    55
    Likes Received:
    10
    Reputations:
    5
    0o Chris o0, вот:
    Code:
    <?php
    for ($i=10000000;$i<99999999;$i++) {
    	echo "$i<br>";
    }
    ?>
     
  13. daniel777

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

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Может подойдет еще функция sprintf()
     
  14. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    от куда берется эта точка после include?
    её нет ни в одном файле, а в исходном коде она появляется.
    непонятно от куда...

    инклудим вот так:
    PHP:
    <?php
     
    include_once("tab.html");
     
    ?>
    исходный код уже так смотрится с точкой на 110 строке перед <style type=
    [​IMG]
     
  15. cat1vo

    cat1vo Level 8

    Joined:
    12 Aug 2009
    Messages:
    374
    Likes Received:
    343
    Reputations:
    99
    Проверь на скрытые символы.
     
  16. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    937
    Likes Received:
    355
    Reputations:
    58
    Имелось ввиду сделать перестановку? Например, 123:
    123
    321
    132
    231
    213
    312
    Если да, то для 8 символов получится 40 320 перестановок. Думаю на пхп это будет довольно-таки длительно. Хотя может есть простая реализация.
     
  17. m0Hze

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

    Joined:
    1 Nov 2008
    Messages:
    266
    Likes Received:
    646
    Reputations:
    208
    Может, простой range() подойдет?
    PHP:
    print_r(range(00000000,99999999));
     
  18. VKtraf

    VKtraf Member

    Joined:
    3 Feb 2012
    Messages:
    55
    Likes Received:
    10
    Reputations:
    5
    Актуально
    Парни, подскажите плиз, в чем может быть причина, что не могу править в ВК списки.
    На предыдущей странице мой пост: /showpost.php?p=3131813&postcount=20697

    Заранее огромное спасибо! :)
     
  19. dotMX

    dotMX New Member

    Joined:
    4 Dec 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте. Вопрос простой, но поставил в ступор. На чужом сайте есть форма для аплоада файлов с локального компьютера. Вопрос, как с помощью PHP можно сэмулировать передачу нужного мне файла в эту форму(и последующую её загрузку)? Спасибо.
     
  20. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,546
    Likes Received:
    173
    Reputations:
    75
    при помощи CURL
     
Thread Status:
Not open for further replies.