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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не выходит зарегистрироваться.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Не выходит зарегистрироваться.
Инклуд
Отправлено: 30 Ноября, 2010 - 00:58:10
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Окт. 2010  
Откуда: Россия


Помог: 0 раз(а)




Собтвенно, проблема такова.
Некий кусочек кода:

PHP:
скопировать код в буфер обмена
  1. $url        = 'http://skdl.chatovod.ru/widget/register/?nick='.$nick;
  2. $chat_c   = tempnam('./cookies/', 'chat_');
  3. $headers = array('Host: skdl.chatovod.ru', 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
  4.         'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: ru', 'Accept-Charset: utf-8',
  5.         'Connection: keep-alive', 'Referer: http://skdl.chatovod.ru/widget/', 'Cache-Control: max-age=0'
  6. );
  7.        
  8. $resp = curlStart($url, $chat_c, $headers, '', $proxy);
  9. preg_match('#<input type="hidden" name="fkey" value="([^"]*?)" />#i', $resp, $afkey);
  10. $fkey   = trim($afkey[1]);
  11. // погнали регаться
  12. $url     = 'http://skdl.chatovod.ru/widget/register/?';
  13. $headers = array(
  14. 'Host: skdl.chatovod.ru', 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
  15. 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: ru', 'Accept-Charset: utf-8',
  16. 'Connection: keep-alive', 'Content-Type: application/x-www-form-urlencoded'
  17. );
  18. $post    = 'fact=registeruser&fkey='.$fkey.'&nick='.$nick.'&email='.$email.'&password='.$password.'&password2='.$password;
  19. echo curlStart($url, $chat_c, $headers, $post, $proxy);
  20.  
  21.  


Соответственно ,выводится опять форма регистрации. Меня смущет JS-код после формы, но я не шарю в JS и понять его не могу.

PHP:
скопировать код в буфер обмена
  1. function curlStart ($url, $cookie, $headers='', $post = '', $p = '', $timeout=10, $verbose = 0)
  2. {
  3.         $c = curl_init();
  4.        
  5.         curl_setopt($c, CURLOPT_URL, $url);
  6.         curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  7.         curl_setopt($c, CURLOPT_COOKIEJAR, $cookie);
  8.         curl_setopt($c, CURLOPT_TIMEOUT, $timeout);
  9.         curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
  10.         if (!empty($p)) { curl_setopt($c, CURLOPT_PROXY, $p); }
  11.         if (!empty($headers)) { curl_setopt($c, CURLOPT_HTTPHEADER,$headers); }
  12.         if ($verbose) { curl_setopt($c, CURLOPT_VERBOSE, 1); }
  13.         if (!empty($post)) {
  14.                 curl_setopt($c, CURLOPT_POST, true);
  15.                 curl_setopt($c, CURLOPT_POSTFIELDS, $post);
  16.         }
  17.        
  18.         $resp = curl_exec($c);
  19.         curl_close($c);
  20.         return $resp;
  21.        
  22. }

(Отредактировано автором: 30 Ноября, 2010 - 01:02:27)

 
 Top
OrmaJever Модератор
Отправлено: 30 Ноября, 2010 - 01:41:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




советую воспользоватся этой функцией.
PHP:
скопировать код в буфер обмена
  1. function curl($url='', $post='', $referer='')
  2. {
  3.         $cl = curl_init();
  4.         curl_setopt($cl, CURLOPT_URL, $url);
  5.         curl_setopt($cl, CURLOPT_RETURNTRANSFER,1);
  6.         curl_setopt($cl, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10');
  7.     curl_setopt($cl, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
  8.     curl_setopt($cl, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
  9.     if(!empty($post)) {curl_setopt($cl, CURLOPT_POST, 1); curl_setopt($cl, CURLOPT_POSTFIELDS, $post);}else{curl_setopt($cl, CURLOPT_POST, 0);}
  10.     if(!empty($referer)){curl_setopt($cl, CURLOPT_REFERER, $referer);}else{curl_setopt($cl,CURLOPT_REFERER, 1);}
  11.     $ex=curl_exec($cl);
  12.     curl_close($cl);
  13.         return $ex;
  14. }


и вызывать её попроще Подмигивание
PHP:
скопировать код в буфер обмена
  1.  
  2. $url = 'http://skdl.chatovod.ru/widget/register/?nick='.$nick;
  3. $post = 'fact=registeruser&fkey='.$fkey.'&nick='.$nick.'&email='.$email.'&password='.
  4. echo curl($url, $post);


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Инклуд
Отправлено: 30 Ноября, 2010 - 10:33:24
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Окт. 2010  
Откуда: Россия


Помог: 0 раз(а)




Эффект тот же.. Огорчение
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2010 - 10:41:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Инклуд пишет:
Меня смущет JS-код после формы

где это такой код? на страничке? ну вот он значит и не дает )))
 
 Top
Инклуд
Отправлено: 30 Ноября, 2010 - 10:48:55
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Окт. 2010  
Откуда: Россия


Помог: 0 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.     function chatcheckfieldvalue(t, method) {
  3.         var tt = $(t);
  4.         var tval = t.value;
  5.         $.ajax({
  6.             url: "/service/",
  7.             dataType: "json",
  8.             type: "POST",
  9.             data: {method: method, v: tval},
  10.             cache: false,
  11.             success: function(data){
  12.                 var am = tt.nextAll(".ajaxmsg");
  13.                 if (am.size() == 0) {
  14.                     var msg = $('<div class="ajaxmsg">'+data.msg+'</a>');
  15.                     tt.parent().append(msg);
  16.                     if (msg.prev().hasClass("error")) msg.prev().remove();
  17.                 } else
  18.                     am.html(data.msg);
  19.                 am = tt.nextAll(".ajaxmsg");
  20.                 if (data.status != "ok") {
  21.                     am.removeClass("ajaxok").addClass("ajaxerror");
  22.                 } else {
  23.                     am.removeClass("ajaxerror").addClass("ajaxok");
  24.                 }
  25.             },
  26.             error: function() {
  27.                 //
  28.             }
  29.         });
  30.     };
  31.     function chatcheckfieldremove(t) {
  32.         $(t).nextAll(".ajaxmsg").remove();
  33.     };
  34. </script>
  35.  


Вот такой код, идёт сразу после формы.
 
 Top
Coder1994
Отправлено: 30 Ноября, 2010 - 10:49:35
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




этот ява-скрпит проверяет на правильность регистрации,а в частности вам мешает - url: "/service/"
Функции curl передавайте параметр REFERER, и всё должно работать.

(Отредактировано автором: 30 Ноября, 2010 - 10:54:00)

 
 Top
Инклуд
Отправлено: 30 Ноября, 2010 - 11:00:43
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Окт. 2010  
Откуда: Россия


Помог: 0 раз(а)




Coder1994, если не трудно, скажите, что именно передать как REFERER.
 
 Top
Coder1994
Отправлено: 30 Ноября, 2010 - 11:20:25
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. curl_setopt($cl, CURLOPT_REFERER , "http://http://skdl.chatovod.ru/service/");
  3. ?>
 
 Top
Инклуд
Отправлено: 30 Ноября, 2010 - 11:22:35
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Окт. 2010  
Откуда: Россия


Помог: 0 раз(а)




Coder1994, у Вас работает?
У меня всё так же, выводит страничку регистрации.
(я учёл, что там http:// один раз нужно)

(Отредактировано автором: 30 Ноября, 2010 - 11:23:08)

 
 Top
OrmaJever Модератор
Отправлено: 30 Ноября, 2010 - 11:23:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Инклуд а пост запрос верный? Там как я глянул есть 2 поля под пароль, а у вас в запросе только 1...


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Инклуд
Отправлено: 30 Ноября, 2010 - 11:27:59
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Окт. 2010  
Откуда: Россия


Помог: 0 раз(а)




OrmaJever, у меня POST-запрос выглядит так:
PHP:
скопировать код в буфер обмена
  1. $post    = 'fact=registeruser&fkey='.$fkey.'&nick='.$nick.'&email='.$email.'&password='.$password.'&password2='.$password;

Вроде верный...
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2010 - 11:44:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ага, а вам строчка

ни о чем не говорит??? Формат данных учитывать надо, и никаких там полей нет - есть JSON-строка передаваемая методом POST и в индексном файле в папке /service/ она разбирается с json_decode(); а вы ему обычный пост пихаете...
 
 Top
Инклуд
Отправлено: 30 Ноября, 2010 - 13:56:30
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Окт. 2010  
Откуда: Россия


Помог: 0 раз(а)




DeepVarvar, я же предупредил, что не шарю в JS... Недовольство, огорчение
Спасибо, попробую разобраться: )
(Добавление)
Я правильно понял, что:
PHP:
скопировать код в буфер обмена
  1. $url     = 'http://skdl.chatovod.ru/widget/register/?';
  2. $headers = array(
  3.         'Host: skdl.chatovod.ru', 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
  4.         'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: ru', 'Accept-Charset: utf-8',
  5.         'Connection: keep-alive', 'Content-Type: application/x-www-form-urlencoded'
  6. );
  7. $post = array('fact'=>'registeruser', 'fkey'=>$fkey, 'nick='=>$nick, 'email'=>$email, 'password'=>$password, 'password2'=>$password);
  8. $post = json_encode($post);
  9. echo curlStart($url, $chat_c, $headers, $post, $proxy);

?
или там всё-таки url будет "http://skdl.chatovod.ru/service/"?

(Отредактировано автором: 30 Ноября, 2010 - 14:12:03)

 
 Top
OrmaJever Модератор
Отправлено: 30 Ноября, 2010 - 14:19:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




javascript здесь совсем не причём. Он проверяет логин на правельность...
А не регистрирует потому что там капча есть!


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Инклуд
Отправлено: 30 Ноября, 2010 - 14:20:21
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Окт. 2010  
Откуда: Россия


Помог: 0 раз(а)




OrmaJever, капча появляется не сразу, а через несколько попыток с одного ip, я делаю проверку на это и, соответственно, юзаю прокси. Так что дело не в этом...
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB