Появилась новая проблема.. Совсем недавно я спрашивал как можно вытащить капчу со страницы.. Вот эта тема - http://forum.antichat.ru/thread137573.html Задача теперь состоит вот в чём: 1. пользователь заходит на сайт, в котором отображена только капча и поле ввода(то есть не на сайт с формой где реально располагается капча изначально) 2. пользователь вводит капчу и нажимает на кнопку после чего с помощью curl происходит заполнение формы. НО! На следующей странице то уже будет другой url капчи.. В общем то именно это я и не знаю как обойти..
programming Не получится, значение капчи устанавливается в кукисы. Установить куки для чужого домена - не получится, не позволит политика безопасности браузера З.Ы, людей украшает скромность - зачем срать на форуме создавая по 10 тем?
Немного не понял.. По-моему Вы написали бред.. Или же напишите, что Вы подразумеваете под значением капчи.. А на счёт тем - не 10, а всего 2 и причём с совсем разными вопросами..
Как я понимаю надо чтобы грубо говоря перед регой или заполнением формы пользователь заполнял капчу? а потом уже получит доступ на страницу с формой на которой будет капча именно от этой формы?
1. Заходим на сайт и получаем необходимые значения Куки записываем: curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook"); 2. Выводим картинку капчи и вводим в поле её значение 3. Отправляем cURL'ом это значение + значения из п.1 Используем: curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook"); 4. Отправляем post запрос для заполнения формы на сайте, используем COOKIEFILE из п.3
Немного не так.. Значит есть два сайта - первый с формой регистрации(вместе с капчей), а второй, на котором отображена только капча и поле ввода. Нужно, чтобы пользователь заходил на второй сайт вводил капчу, а уже php с помощью curl отправлял запрос на первый сайт уже со своими данными, но значением капчи, которое ввёл пользователь.
Так в том то и дело, что не каких куков нет. Куки появляются только после того, как мы уже нажали на первом сайте на кнопку регистрация.. Быть может я чего-то не понимаю..
Да это я повидимому что-то не понимаю ) Если сайта два, то и капчи две и какое они имеют отношение друг к другу ? Покажите ссылки
Ну или же если более конкретно поставить задачу теперь -нужно, чтобы пользователь вводил капчу на странице и на этой же странице после его ввода должен отправляться пост запрос. Вот какэто реализовать? Сайт один на котором капча, а второй где распологается мой скрипт. А скрипт вытягивает капчу с первого сайта, поэтому капчи должны быть одинаковыми..
PHP: if($_POST['captcha']) { # Отправляем все данные (включая код капчи) на сервер) (см.п.3) } else { # cURL'ом получаем необходимые значения (см.п.1) # Выводим форму для ввода капчи (в hidden передаём необходимые значения) (см.п.2) echo '<img src="captcha.jpg"><br> <form name="captcha_form" action="index.php" method="POST"> <input type="text" name="captcha" value="" /><br> <input type="hidden" name="HIDDEN-1" value="'.$HIDDEN-1.'" /> <input type="hidden" name="HIDDEN-2" value="'.$HIDDEN-2.'" /> <input type="submit" value="ok"> </form>'; }
Нет.. Всё равно не получается.. В п.3 то уже другая сессия получается.. В общем не знаю уже, что делать.. Буду тогда конкретно спрашивать. Итак, задача: Есть сервис http://moemesto.ru. Нужно сделать скрипт, который вытаскивает капчу со страницы регистрации - http://moemesto.ru/register/?from=button. Создаёт форму где есть поле ввода и сама картинка капчи. Пользователь вводит код с картинки и нажимает на кнопку. В самом скрипте вшиты данные о регистрации - то есть логин, пароль и пр. С ними и происходит регистрация. В конце, после нажатия пользователем кнопки у него открывается страница, что всё успешно прошло. Уже бьюсь с этим 3-й день - никакого эффекта.. Если хотите - могу дать мой код. Может ошибки найдёте..
PHP: <?php @set_time_limit(0); //-----------------// $accounts = 'accounts.txt'; // Файл для сохранения аккаунтов $divider = ':'; // Раздеитель $login = ''; // Login $password = ''; // Password $email = ''; // E-mail //-----------------// function post($url,$post,$refer) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook1"); curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook1"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); return $result; } if($_POST['captcha']) { $result = post('http://moemesto.ru/register/','from=button&captchaid='.$_POST['captchaid'].'&login='.$login.'&email='.$email.'&password='.$password.'&captcha='.trim($_POST['captcha']).'&do_reg=%D0%97%D0%B0%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F','Referer: http://moemesto.ru/register/?from=button'); $result = iconv("UTF-8","Windows-1251",$result); if(preg_match('#2>П(.*?)з#i',$result,$end)) { $fh = fopen($accounts, "a+"); $success - fwrite($fh, $login.$divider.password."\r\n"); fclose($fh); Header('Location: index.php'); } else { echo '<script>alert(\'Не правильный код!\')</script>'; echo '<meta http-equiv="Refresh" content="0; url=index.php">'; } } else { $result = post('http://moemesto.ru/register/',null,'http://moemesto.ru/'); preg_match('#id" value="(.*?)"#i',$result,$captchaid); echo '<img src="http://moemesto.ru/captcha/'.$captchaid[1].'"><br> <form name="captcha_form" action="index.php" method="POST"> <input type="text" name="captcha" value="" /><br> <input type="hidden" name="captchaid" value="'.$captchaid[1].'" /> <input type="submit" value="ok"> </form>'; } /* geforse.name */ ?>
Опять появились трудности с этим скриптом.. Решил сделать ввод данных из формы: Code: <form action="/index.php" method="get"> Логин:<input type="text" name="login"><br> Пароль:<input type = "text" name="password"><br> E-mail:<input type ="text" name = "email"> <br> <input type ="submit" value="Регистрация"> </form> Но скрипт не видит эти переменные и считает, что их нет. Из начала скрипта я конечно убрал логин, пароль и e-mail. В чём может быть причина?
PHP: <form action="/index.php" method="POST"> В скрипте (index.php) вызывай так: PHP: $login = $_POST['login'];
Да пробовал я уже так.. Вообще в скрипте почему-то нет таких переменных когда даже я методом гет передавал и в адр. строке они были прописаны.. Вообще парадокс..
PHP: <?php @set_time_limit(0); //-----------------// $accounts = 'accounts.txt'; // Файл для сохранения аккаунтов $divider = ':'; // Раздеитель //-----------------// function post($url,$post,$refer) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook1"); curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook1"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); return $result; } if($_POST['captcha']) { $result = post('http://moemesto.ru/register/','from=button&captchaid='.$_POST['captchaid'].'&login='.$_POST['login'].'&email='.$_POST['email'].'&password='.$_POST['password'].'&captcha='.trim($_POST['captcha']).'&do_reg=%D0%97%D0%B0%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F','http://moemesto.ru/register/?from=button'); $result = iconv("UTF-8","Windows-1251",$result); if(preg_match('#2>П(.*?)з#i',$result,$end)) { $fh = fopen($accounts, "a+"); $success - fwrite($fh, trim($_POST['login']).$divider.trim($_POST['password'])."\r\n"); fclose($fh); Header('Location: index.php'); } else { echo '<script>alert(\'Не правильный код!\')</script>'; echo '<meta http-equiv="Refresh" content="0; url=index.php">'; } } else { $result = post('http://moemesto.ru/register/',null,'http://moemesto.ru/'); preg_match('#id" value="(.*?)"#i',$result,$captchaid); echo ' <form name="captcha_form" action="index.php" method="POST"> Код: <input type="text" name="captcha" value="" /> <img src="http://moemesto.ru/captcha/'.$captchaid[1].'"><br><p> <input type="hidden" name="captchaid" value="'.$captchaid[1].'" /> Логин: <input type="text" name="login"><br><p> Пароль: <input type = "text" name="password"><br><p> E-mail: <input type ="text" name = "email"><br><p> <input type ="submit" value="Регистрация"> </form>'; } /* geforse.name */ ?>