Готово PHP: <?php $login = ''; $pass = ''; ############################################################## ############################################################## $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1.11) Gecko/20071127 Firefox/3.0.0.3'; $url = 'http://www.adultconvert.ru/login.php'; $req = "login=$login&pass=$pass&go=%C2%EE%E9%F2%E8"; $ref = 'http://adultconvert.ru/'; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_USERAGENT, $ua); curl_setopt($ch,CURLOPT_REFERER, $ref); curl_setopt($ch,CURLOPT_COOKIEJAR, './cook'); curl_setopt($ch,CURLOPT_COOKIEFILE, './cook'); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$req); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); $result = curl_exec($ch); curl_close($ch); ############################################################## sleep(1); ############################################################## $ch = curl_init('http://www.adultconvert.ru/akk/links.php'); curl_setopt($ch,CURLOPT_REFERER,'http://www.adultconvert.ru/akk/news.php'); curl_setopt($ch,CURLOPT_COOKIEJAR, './cook'); curl_setopt($ch,CURLOPT_COOKIEFILE, './cook'); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_USERAGENT, $ua); $result = curl_exec($ch); curl_close($ch); preg_match_all('#value=\"(.*?)\"#',$result,$matches); ############################################################## foreach ($matches[1] as $link) { echo $link.'<br>'; } ?>
всякие маленькие сайты читаются через сокеты при таком коде: PHP: <form method='POST'> server:<input type='text' name='server' size=50><br> <input type='submit' value='hAck)'> </form> <?php $server=$_POST['server']; $s=fsockopen($server,80,$err,$err_msg); if(!$s)echo "($err) - $err_msg"; else { echo "<font color='green'>me connected to <b>$server</b>... tring to HaCk the systen my Lord)</font><br>"; $str=""; //string whitch gets all text before length you need fputs($s,"GET / HTTP/1.1 \nHost: $server\nUser-Agent: Opera mini\nAccept: text/html\nAccept-Language: ru,en-us\nAccept-Charset: windows-1251\n\n"); while(!feof($s)) //strpos($str,"Content-Length")===false { $str.=fgets($s,1000); } echo nl2br(htmlspecialchars($str)); } ?> а вот сайты покрупнее уже нет! Например,ниодин поисковик не выдают свою страницу по этому хттп-запросу. рамблер,например, выдает какую-то страничку 302 found. Я так понимаю, что они как-то обрабатывают мой запрос и в нем не хватает какого-то ключевого параметра, но я не всосу какого все что знал, понавпихивал в запрос. Короче, помогите составить запрос, чтобы все сайты читались этим скриптом
je0n, скрипт правильно работает, например запрос rambler.ru возвращает редирект на www.rambler.ru, как и должно быть Code: Location: http://www.rambler.ru/ советую почитать спецификацию протокола HTTP чтобы небыло долгого ожидания ответа сервера добавь вконце заголовок Code: Connection: close
Блин! я заморочился с сокетами, тока ради того чтобы получать длинну страницы из заголовка страницы Content-length, а всю остальную страницу уже вообще не читать! А оказалось, что этот заголовок возвращается на редком сервере!Корочь, я обломался. Нельзя ли как-нить особенно обратится к серверу, чтобы он полубому вернул заголовок Content-length?
в курле есть возможность получить content-length любой страницы, не получая хтмл-код? Меня сейчас это волнует, через сокеты этот параметр чето нифига не появляется, по крайней мере тем путем, каким делаю я хнык
2je0n попробуй так: PHP: fputs($s,"GET / HTTP/1.1\nAccept: text/html\nAccept-Language: en-us\nUser-Agent: Mozilla/4.0 \n\n");
когда формируешь http-пакет, вместо GET пиши HEAD, тогда сервер вернет только заголовки, а оттуда уже распаришь content-length.
У меня есть форма (<form>) в которой два поля, мне нужно чтобы человек вводил только в одной из них (на выбор, либо в перовй либо во второй) PHP: if (($_POST['1']) and ($_POST['2'])) { echo ("Ошибка"); Вобщем всё работает .... но может есть более изящный чтоли метод решения этой задачи ?
Что может быть изящнее? Разве что на яве еще прикрепить, чтобы когда в одно поле что нить вводил другое очищалось)
Вот что надумал я =) PHP: function marray($string) { $all=explode("&",$string); $first=explode("=",$all[0]); $second=explode("=",$all[1]); print_r($first); print_r($second); }