Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Авторизация и Vbulletin
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Авторизация и Vbulletin

Страниц (1): [1]
 

1. chigok - 08 Июня, 2009 - 00:09:13 - перейти к сообщению
Не получается под своим логином открыть какую-либо страницу форума на движке Vbulletin внешним скриптом. У меня получается залогиниться(т.е. вижу надпись "Thank you for logging in", но после автоматического редеректа я опять становлюсь "гостем". Подозреваю, что дело в Cookies, но в чем конкретно не могу додуматься.
2. vitaliy_mad - 08 Июня, 2009 - 04:32:31 - перейти к сообщению
chigok пишет:
Подозреваю, что дело в Cookies

может в браузере они отключены?
3. Вездеход - 08 Июня, 2009 - 07:16:54 - перейти к сообщению
chigok
если внешний скрипт - то это через курл или сокеты конектитесь? или он просто не от форума? =)
4. chigok - 08 Июня, 2009 - 11:25:13 - перейти к сообщению
vitaliy_mad пишет:
может в браузере они отключены?

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

Вездеход пишет:
chigok
если внешний скрипт - то это через курл или сокеты конектитесь? или он просто не от форума? =)


через curl. Вот мой скрипт:

PHP:
скопировать код в буфер обмена
  1.  
  2. //Функция, которой отправляю
  3.  
  4. function file_open($url,$post,$referrer,$cook)
  5. {
  6.         $ch = curl_init();
  7.         curl_setopt($ch, CURLOPT_URL, $url);
  8.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9.         curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  10.         curl_setopt($ch, CURLOPT_POST,1);
  11.         curl_setopt($ch, CURLOPT_HEADER, 1);
  12.         curl_setopt($ch, CURLOPT_REFERER, $referer);
  13.         curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
  14.         curl_setopt($ch, CURLOPT_COOKIE, $cook);
  15.         $get_row_urlink = curl_exec($ch);
  16.         curl_close($ch);
  17.     return $get_row_urlink;
  18. }
  19.  
  20. //Получить "bblastvisit" и "bblastactivity"
  21. //bblastactivity всегда равно 0, поэтому его не нахожу.
  22. // Также находим значения всех скрытых полей формы отправки
  23.  
  24.  
  25. $header = file_open('http://ub3rhack3r5.org/newthread.php?do=newthread&f=20','1','index.php',$cook);
  26. //echo $header;
  27.  
  28. preg_match("/bblastvisit=(.+?);/",$header,$cookie);
  29. $cook='bblastvisit='.$cookie[1].'; bblastactivity=0;';
  30. echo '<br><br> cook1 '.$cook.'<br><br>';
  31.  
  32.  
  33. preg_match("/class=\"panel\">(.+?)class=\"smallfont\"/is",$header,$out);
  34. preg_match_all("/name=\"(.*?)\"\s+value=\"(.*?)\"/i",$out[1],$dootp);
  35. //print_r($dootp);
  36.  
  37. for($r=0;$r<count($dootp[1]);$r++){
  38. if($dootp[1][$r]=='url'){
  39. $dannie_dootp1 .= $dootp[1][$r].'='.preg_replace("/&/i",'%26',$dootp[2][$r]).'&';
  40.                                   }
  41.                                
  42. else{                                          
  43. $dannie_dootp1 .= $dootp[1][$r].'='.$dootp[2][$r].'&';
  44.       }
  45.                                                      }
  46. echo '<br><br>   '.$dannie_dootp1.'<br><br>';  
  47.                                          
  48.  
  49. //Это делается для того, чтобы получить "bbsessionhash"
  50.  
  51.  
  52. $header = file_open('http://ub3rhack3r5.org/login.php?do=login',$dannie_dootp1.'vb_login_username=test_login&vb_login_password=123456','index.php',$cook);     
  53. //$header;             
  54. $cook ='';
  55.  
  56. preg_match("/bbsessionhash=(.+?);/",$header,$cookie_session);
  57.      
  58. $cook='bblastvisit='.$cookie[1].'; bblastactivity=0; bbsessionhash='.$cookie_session[1].';';
  59. echo '<br><br> cook2 '.$cook.'<br>';
  60.  
  61. // Теперь, имея все куки и зная значения всех скрытых полей формы, пытаюсь //авторизоваться
  62.  
  63. $header = file_open('http://ub3rhack3r5.org/login.php?do=login',$dannie_dootp1.'vb_login_username=test_login&vb_login_password=123456','index.php',$cook);     
  64. echo $header;
  65. // Не получается =(
  66.  


Код рабочий, можете запустить и посмотреть, в чем проблема...
P.S. Программированию учился сам, поэтому не сильно пинайте за кривой код Закатив глазки
5. Вездеход - 08 Июня, 2009 - 11:55:02 - перейти к сообщению
если через курл то я так понимаю браузер тут не при чем....
покажите код... думаю ошибка там в сохранении сессий\куков

 

Powered by ExBB FM 1.0 RC1