drasute
Новичок
Дата регистрации:
28.05.2011 12:55:52
Сообщений: 3
Привет.
Можно ли как-нибудь получить данные страницы по известному URL, причем эта страница доступна только зарегистрированным пользователям.
Скажите хотя бы примерную идею этого скрипта, а то ничего в голову не приходит.
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Здесь требуется cURL. Первым делом, Вы отправляете запрос на авторизацию (для этого необходимо узнать, какие поля у формы авторизации). Далее принимаете cookie от сервера. Сохраняете их в cURL и делаете запрос к требуемой странице. Уже должно вернуться содержимое, которое доступно только для авторизованного пользователя.
drasute
Новичок
Дата регистрации:
28.05.2011 12:55:52
Сообщений: 3
Спасибо, Михаил, буду разбираться)
bposter
Новичок
Дата регистрации:
27.10.2011 19:47:47
Сообщений: 7
Я так понимаю в данном случаи надо отправлять 3 параметра с данными на вход это submit,username,password ?
if($_POST['submit']=='Войти')
{
// Проверяем, что представлена форма Войти
$err = array();
// Запоминаем ошибки
if(!$_POST['username'] || !$_POST['password'])
$err[] = 'Все поля должны быть заполнены!';
if(!count($err))
{
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['password'] = mysql_real_escape_string($_POST['password']);
$_POST['rememberMe'] = (int)$_POST['rememberMe'];
// Получаем все ввденые данные
$row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM tz_members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'");
if($row['usr'])
{
// Если все в порядке - входим в систему
$_SESSION['usr']=$row['usr'];
$_SESSION['id'] = $row['id'];
$_SESSION['rememberMe'] = $_POST['rememberMe'];
// Сохраняем некоторые данные сессии
setcookie('tzRemember',$_POST['rememberMe']);
}
else $err[]='Не верный пароль или имя пользователя!';
}
if($err)
$_SESSION['msg']['login-err'] = implode('<br />',$err);
// Сохраняем сообщение об ошибке сессии
header("Location: ../index.php"
exit;
Тоесть код на вход должен выглядеть так:
<?php
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://*****.ru');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "submit=Войти&username=bposter&password=254353425"
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Если все правильно то как получить куку чтоб зайти уже на другую страницу для авторизованых?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Правильно это или нет - неизвестно, поскольку здесь нужно видеть форму авторизации, а также названия полей в форме. Что касается получения, cookie, то она находится в $out, но нужно включить возврат заголовков. Вы выведите эту $out в браузере, и там должны вначале идти заголовки сервера, вот среди них и должны быть cookie. Далее эти cookie аккуратно вырезаете из других заголовок с помощью строковых функций. Затем подставляете cookie в параметры соединения cURL и соединяетесь со страницей, где контент для авторизованного пользователя.
bposter
Новичок
Дата регистрации:
27.10.2011 19:47:47
Сообщений: 7
Ясно спасибо.. вобщем это не для начинающих надо еще учить php глубже а потом разбирать данный пример.
bposter
Новичок
Дата регистрации:
27.10.2011 19:47:47
Сообщений: 7
А по идеи такой код
<?php
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://*****.ru');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "submit=Войти&username=bposter&password=254353425"
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
по идеи всли заведомо я знаю параметры формы и правильно все написал то ответ хоть какойто должен прийти? ато уменя белый экран...
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Если белый экран, то, значит, сервер так обрабатывает. Если бы данные были бы верные, то сервер вернул бы то, как будто если бы Вы заполняли форму вручную.
bposter
Новичок
Дата регистрации:
27.10.2011 19:47:47
Сообщений: 7
Дело в том что сайт на котором я эксперементирую мой поэтому я точно знаю все поля в форме и что надо передавать методом POST в обработчик, и по идеи после правильного ввода он должен как минимум выдать хоть чтота а как максимум перенаправить на страницу профиля. Поэтому и странно что ответа вообще нету некакого.
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Возможно, Вы задали неверный URL. Вы в примере пишите явно главную страницу, а в action у формы авторизации может стоять далеко не главная страница.