Привет, у меня возникла проблема я не могу подключить конфиг из каталога выше к php файлу, мне нужен какой нибудь более или менее универсальный способ нежели чем includ ить полный путь от корня сервера. Зараниее спасибо.
Приветствую, На проекте несколько сабдоменов и хочется, чтобы в футере на каждом региональном сабдомене персональные контактные данные были. Пробую использовать макет, но пока без успехов: <?php $host = $_SERVER['REQUEST_URI']; if ($host == 'spb.domain.ru') { ?> Контакты Питера. <?php } ?> Подскажите, пожалуйста, как задать на каждый адрес свой текст. Спасибо.
Ю_ЗвЕРь $_SERVER['REQUEST_URI'] содержит имя скрипта, а сравниваете вы с именем сервера, то бишь нужно изменить на HTTP_HOST, как посоветовал Konqi
Из 500 изображений выбираются случайно 2 и выводятся на страницу, как сделать так, чтобы больше эти 2 изображения вместе не попались, и чтобы можно было определить, когда переберутся все возможные комбинации?
Так и делал, брал 1 случайно, потом получал из базы имена всех остальных, затем отбрасывал те, с которыми оно уже выводилось, из оставшихся случайно выбирал второе изображение и выводил на экран, но теперь представь такую картину, у 498 изображений перебраны все комбинации и осталось 2 последних изображения, каков шанс того что 1 изображение окажется одним из этих двух.
Всем привет! Парни, если не отнимет много времени, пожалуйста подскажите по вопросу. Хочу сделать заполнение профиля на 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¶2=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 Может ли быть причина в том, что на этой вкладке есть выпадающие списки - поэтому он и не изменяет? Пожалуйста подскажите, в чем может быть причина, полдня мучаюсь, никак не могу уговорить его работать с другими вкладками профиля. Заранее огромное спасибо!
от куда берется эта точка после include? её нет ни в одном файле, а в исходном коде она появляется. непонятно от куда... инклудим вот так: PHP: <?php include_once("tab.html"); ?> исходный код уже так смотрится с точкой на 110 строке перед <style type=
Имелось ввиду сделать перестановку? Например, 123: 123 321 132 231 213 312 Если да, то для 8 символов получится 40 320 перестановок. Думаю на пхп это будет довольно-таки длительно. Хотя может есть простая реализация.
Актуально Парни, подскажите плиз, в чем может быть причина, что не могу править в ВК списки. На предыдущей странице мой пост: http://forum.antichat.ru/showpost.php?p=3131813&postcount=20697 Заранее огромное спасибо!
Здравствуйте. Вопрос простой, но поставил в ступор. На чужом сайте есть форма для аплоада файлов с локального компьютера. Вопрос, как с помощью PHP можно сэмулировать передачу нужного мне файла в эту форму(и последующую её загрузку)? Спасибо.
Всем привет! Есть скрипт грабера html, найденный в интернетах (переходит на заданную страницу, сдирает код и сохраняет его в txt) PHP: <?php function input_into($text) { $a_file=fopen("./grab_output.txt","a+"); fputs($a_file,"$text"); fclose($a_file); } function get_URL_by_socket ($host,$path) { //Получает URL $path с хоста $host через сокеты. $fp = fsockopen($host, 80); if (!$fp) { die ("Не могу получить данные с url http://$host/$path"); } else { $out = "GET $path HTTP/1.0\r\n"; $out .= "Accept: image/gif, application/xhtml+xml, */*\r\n"; $out .= "Accept-Language: ru\r\n"; $out .= "Host: $host\r\n"; //Имитируем браузер Opera Mini: $out .= "User-Agent: Opera/8.01 (J2ME/MIDP; ". "Opera Mini/2.0.4509/1716; ru; U; ssr)\r\n"; $out .= "Cache-Control: no-cache\r\n"; //Не кэшировать $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); $headers = ""; while ($str = trim(fgets($fp))) $headers .= "$str\n"; $body = ""; while (!feof($fp)) $body .= fgets($fp); input_into($body); fclose($fp); } return $body; } function process($s,$start,$end,$include) { //Парсит полученный файл - здесь-то и пишется главное //У нас это извлечение содержимого от $start до $end $s1=strpos ($s,$start); $s2=strpos ($s,$end); if (!is_integer($s1)) { return "Не найден начальный сегмент: ".htmlspecialchars($start); } if (!is_integer($s2)) { return "Не найден конечный сегмент: ".htmlspecialchars($end); } if ($s1>$s2) { return "Конечный сегмент предшествует начальному"; } if ($include) { //Включать начало и конец return substr ($s,$s1,$s2-$s1+strlen($end)); } else { //Исключить начало и конец $s1+=strlen($start); return substr ($s,$s1,$s2-$s1); } } function parser ($host,$path,$start,$end,$include) { //Основной вызов парсера: //$host, $path - хост без http://www. и путь к файлу, начиная с / //$start, $end - строки начала и конца извлекаемого содержимого //$include - если true, включать в вывод строки $start и $end static $first=true; $s= get_URL_by_socket ($host,$path); if ($first) { //Заголовок посылается только при 1-м вызове $first=false; //Если вызывается из "движка" - можно убрать этот блок header('Conte nt-type:text/html;charset=windows-1251'); } return process($s,$start,$end,$include); } $host="sitename.ru"; $path="catalog/page=96"; $start="<body>"; $end="</body>"; $include=true; print parser ($host,$path,$start,$end,$include); ?> хотелось бы расширить функционал этого скрипта,автоматизировать тк сказать, а именно что бы скрипт брал ссылки на сайт донор из txt PHP: $path="catalog/page=96"; в txt ссылки выглядят так Code: catalog/page=1 catalog/page=2 catalog/page=3 Т.е. скрипту необходимо Взять 1 ссылку Подставить её в код и выполнить его После этого взять 2 ссылку Подставить её в код и выполнить его //// и так все ссылки из файла .txt Как это реализовать ума не приложу... Заранее спасибо за любую помощь!