Хотя, если два раза пепречитать ваш ответ, то тут не особо нужно обоснование. Логика на поверхности.
Может быть есть пример проблем с безопасностью из-за обратного поведения?
nehaeve, у меня все на mysqli. Я сейчас попробую другим путем пойти, если уж менять полностью код подключения, у меня есть класс отдельный, я его в другом проекте использую. Сейчас попробую его к этому проекту прикрутить...
Да, текст отображается хорошо. Ваш совет не помог, к сожалению.
Не могу понять, можно ли через консоль повторить ошибку или кодировка бьется во время соединения с базой. Но ведь character_set_connection у меня в utf. В коде вообще нет вещей, связанных с кодировкой, поэтому грешить на код я не могу. Причем на XAMPP все те же настройки и всё прекрасно отрабатывает.
azarij: OMG! Я нашел проблему. Как всегда, все оказалось очень банально. То приложение, которое у меня было зарегистрировано не являлось stand-alone, а было типа "веб-сайт". В настройках тип приложения нигде не отображается, поэтому я думал, что оно по умолчанию является таковым.
А потом решил его пересоздать и увидел, что там есть и другие варианты.
Все отлично работает и огромное спасибо вам за помощь и терпение. Безмерно благодарен, жаль приплачивать за помощь тут нельзя."
azarij: я пробовал и get тоже вчера. Ну вот, сейчас еще раз попробовал c гет
{"error":{"error_code":15,"error_msg":"Access denied: no access to call this method","request_params":[{"key":"oauth","value":"1"},{"key"
:"method","value":"wall.post"},{"key":"owner_id","value":"-id_group"},{"key":"message","value":"test"},{"key":"publish_date","value":"145
7918090"},{"key":"v","value":"5.5"}]}}
azarij: нет, при этом запросе никакой ошибки нет. я нормально получаю всплывающее окно с подтверждением прав. Жмякаю и меня перекидывает на страницу с токеном в адресной строке. Беру этот токен и формирую запрос:
$token = 'мой токен'
$uri = "https://api.vk.com/method/wall.post?owner_id=-'id_моей_группы, куда хочу запостить'&message=test&publish_date=1457918090&v=5.5&access_token="+$token
$requ = Invoke-WebRequest -Uri $uri -Method POST
azarij: Все верно!
И я абсолютно согласен, что самое правильное, логичное и удобное - использовать API. Тем более, что после того, как я попробовал сделать пару других (не wall.post) запросов через invoke все отлично сработало.
Теперь надо понять, будет ли работать в скрипте метод wall.post в принципе. Потому что я генерирую токен по инструкции к АПИ, но выдает ошибку. Конечно, хотелось бы разобраться, потому что парсить верстку это костыль, конечно же.
azarij: Во-первых, большое спасибо за вашу помощь! Особенно удивительны ответы на выходных, но я прям загорелся и даже вне работы решил подумать над этой задачей.
По теме:
С апи я разобрался и успешно могу выполнять запросы POST. Но почему-то конкретно метод wall.post возвращает ошибку(про которую я писал выше). Может это как-то связано с тем, что STANDALONE приложение и скрипт PS слегка разные вещи? Много на форумах про это написано, все заканчивается тем, что людям пишут "этот метод только для "STANDALONE" приложений. А какая разница, токен же получаю и доступ норм.
Написал им в ТП по поводу этого, может прояснят ситуацию.
По поводу invoke-webrequest. У меня простая авторизация, не двухфакторная.
Из вашего ответа почти все понял, кроме того, почему ПОСТ запрос формируется именно так:
"#задаем тело ПОСТ запроса
$body2 = "act=login&role=al_frame&expire=&captcha_sid=&captcha_key=&_origin=http%3A%2F%2Fvk.com&ip_h=$ip_h&lg_h=$lg_h&email=емаил&pass=пароль"
#отправляем ПОСТ запрос на логин
т.е. если я заполню ip_h и lh_h своими значениями, то по идее должна вернуться авторизованная страничка?
а вот эти поля не влияют?
azarij: я уже несколько вариантов рассмотрел:
1. invoke-webrequest. Не удается пробиться через форму авторизации в ВК. Вроде все шлю по документации.
$a = invoke-webrequest vk.com -SessionVariable $vk
$a.Forms[0].Fields.quick_email = 'email'
$a.Forms[0].Fields.quick_pass = 'pass'
$req = invoke-webrequest $a.Forms[0].Action -body $a -method POST -SessionVariable $vk
Возвращается та же страница. С теми же полями, а я так понимаю, что сервер должен вернуть страницу пользователя.
2. Посмотрел через фидлер: посылается такой же POST запрос, какой прописан в API социальной сети. Если использовать API и заморочиться с токеном (что я тоже попробовал), то возникает ошибка error_code":15,"error_msg":"Access denied: no access to call this method". Распространенная проблема, не могу понять, решаема ли она в рамках моей задачи.
3. Остается вопрос, в какую сторону копать. Еще думал над вариантом, как послать пост запрос самим браузером, когда я использую -comObject "InternetExplorer.application"
Не пробовал. Первый раз слышу об этом инструменте. Да и вообще, т.к. я не веб-разработчик, то о многом не слышал. Попробую. Только вопрос, а в каком виде там информация? Мы же знаем, какие неправильные числовые значения уходят. Я уже даже нашел элементы списка, на которые забиты значения часов и минут. Когда наводим, то им присваивается класс "active". И еще на них висят сыбытия "onmouseover" и "onmousedown". Вот, собственно, мне кажется, что надо как-то повторить клик на требуемом . Не могу найти как:(
Может быть есть пример проблем с безопасностью из-за обратного поведения?