PHP, MySQL | Нужна ваша помощь


Автор
<div class="user-login-box">
<span class="iconfont icon-user1"></span>
<input type="text" name="user" id="user" :title="$t('login.text_username')"
:placeholder="$t('login.text_username')" value=""
maxlength="32" class="gt-ie10"/>
</div>
</td>
</tr>
<tr>
<td>
<div class="pwd-login-box">
<span class="iconfont icon-et-change-password"></span>
<input type="password" name="pwd" id="pwd" :title="$t('login.text_pwd')"
:placeholder="$t('login.text_pwd')" value=""
maxlength="32" class="gt-ie10"/>
</div>
</td>
</tr>
<tr>
<td>
<p id="error_info"></p>
<p id="message_tips"
style="display: none; color: red;font-size: 13px; text-align: center;margin-bottom: 7px;"></p>
</td>
</tr>
<tr>
<td>
<button type="button" id="btn-login" onclick="toLogin()">{{ $t('login.text_login') }}
</button>
помогите составить запрос для curl_setopt($ch, CURLOPT_POSTFIELDS, ''); ,заранее благодарен.
Ребята есть такая вот форма
<div class="user-login-box">
<span class="iconfont icon-user1"></span>
<input type="text" name="user" id="user" :title="$t('login.text_username')"
:placeholder="$t('login.text_username')" value=""
maxlength="32" class="gt-ie10"/>
</div>
</td>
</tr>
<tr>
<td>
<div class="pwd-login-box">
<span class="iconfont icon-et-change-password"></span>
<input type="password" name="pwd" id="pwd" :title="$t('login.text_pwd')"
:placeholder="$t('login.text_pwd')" value=""
maxlength="32" class="gt-ie10"/>
</div>
</td>
</tr>
<tr>
<td>
<p id="error_info"></p>
<p id="message_tips"
style="display: none; color: red;font-size: 13px; text-align: center;margin-bottom: 7px;"></p>
</td>
</tr>
<tr>
<td>
<button type="button" id="btn-login" onclick="toLogin()">{{ $t('login.text_login') }}
</button>
помогите составить запрос для curl_setopt($ch, CURLOPT_POSTFIELDS, ''); ,заранее благодарен.
Вот пример запроса для CURLOPT_POSTFIELDS, который отправляет данные из этой формы через cURL в PHP:
$data = [
'user' => 'example_username', // Замените на реальное значение
'pwd' => 'example_password', // Замените на реальное значение
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com/login'); // Укажите реальный URL обработки логина
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
// Добавляем заголовки, если они нужны
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded',
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Этот запрос отправляет user и pwd как обычные application/x-www-form-urlencoded данные. Если сервер ожидает JSON, замените http_build_query($data) на json_encode($data) и поменяйте Content-Type на application/json.
$data = [
'user' => 'example_username', // Замените на реальное значение
'pwd' => 'example_password', // Замените на реальное значение
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com/login'); // Укажите реальный URL обработки логина
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
// Добавляем заголовки, если они нужны
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded',
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Этот запрос отправляет user и pwd как обычные application/x-www-form-urlencoded данные. Если сервер ожидает JSON, замените http_build_query($data) на json_encode($data) и поменяйте Content-Type на application/json.
В обоих вариантах авторизация не проходит(
$data = [
'user' => 'example_username', // Замените на реальное значение
'pwd' => 'example_password', // Замените на реальное значение
]; загвостка в этом,проверил на обычных формах,скрипт отрабатывает отлично и сохраняет куки
'user' => 'example_username', // Замените на реальное значение
'pwd' => 'example_password', // Замените на реальное значение
]; загвостка в этом,проверил на обычных формах,скрипт отрабатывает отлично и сохраняет куки
скоро форум не будет нужен, так как на все вопросы - отвечает DeepSeek!

Полная форма [hljs class="php"]<body class="size-960">
<div id="login_content">
<section>
<div style="margin-left: 100px;padding-top: 50px;"> <img src="/images/logo_login.png" style="width: 220px;"></div>
<form class="customform login-form-box" onsubmit="return return_false()">
<div class="lang-box">
<a id="login_lang" href="javascript:void(0)" style="display: none;">{{ $t('info.text_lang') }}</a>
</div>
<table>
<tr>
<td>
<div class="user-login-box">
<span class="iconfont icon-user1"></span>
<input type="text" name="user" id="user" :title="$t('login.text_username')"
:placeholder="$t('login.text_username')" value=""
maxlength="32" class="gt-ie10"/>
</div>
</td>
</tr>
<tr>
<td>
<div class="pwd-login-box">
<span class="iconfont icon-et-change-password"></span>
<input type="password" name="pwd" id="pwd" :title="$t('login.text_pwd')"
:placeholder="$t('login.text_pwd')" value=""
maxlength="32" class="gt-ie10"/>
</div>
</td>
</tr>
<tr>
<td>
<p id="error_info"></p>
<p id="message_tips"
style="display: none; color: red;font-size: 13px; text-align: center;margin-bottom: 7px;"></p>
</td>
</tr>
<tr>
<td>
<button type="button" id="btn-login" onclick="toLogin()">{{ $t('login.text_login') }}
</button>
</td>
</tr>
</table>
</form>
</section>
<footer class="login-footer">
<p class="copyright"></p>
</footer>
<input type="hidden" value="" id="loginRand">
</div>
<script type="text/javascript">
var app = new Vue({i18n: i18n}).$mount('#login_content');
document.title = app.$t('common.web_title');
var lock_button = 0;
var pwd_timer = -1;
var end_time = 0;
function start_timer(seconds) {
end_time = Math.floor((new Date()).getTime() / 1000) + (seconds - 0);
if (pwd_timer !== -1) {
return;
}
$('#btn-login').attr("disabled", true).addClass('button_gray');
$('#pwd').val("");
pwd_timer = setInterval(function () {
var remaining = end_time - Math.floor((new Date()).getTime() / 1000);
$('#error_info').html('');
if (remaining > 0) {
var s = remaining % 60;
$("#message_tips").show().text(app.$t('login.msg_account_locked') + Math.floor(remaining / 60) + ":" + (s < 10 ? "0" + s : s));
} else {
clearInterval(pwd_timer);
pwd_timer = -1;
update_language();
}
}, 1000);
}
function update_language() {
fill_login_status()
i18n.setLang(loginStatus.lang)
if (loginStatus.isLogin) {
top.location.href = "index.html";
}
if (loginStatus.errorCount === 0 && loginStatus.remainTime > 0) {
start_timer(loginStatus.remainTime);
return;
}
if (loginStatus.errorCount !== 5) {
$("#message_tips").show().text(app.$t('login.remaining_times', {count: loginStatus.errorCount}));
return;
}
$("#message_tips").html('')
$('#error_info').html('');
$('#btn-login').attr("disabled", false).removeClass('button_gray');
}
if (i18n.needShowLang()) {
$('#login_lang').show();
}
$('#login_lang').on('click', function (e) {
i18n.initLangListHtml(e, 'login_lang');
});
handle_login_response = function (type, status) {
var result = status
if (result == 0 || result == 2 || result == 4) $('#user').focus();
else if (result == 1) $('#pwd').focus();
if (result == 4) {
update_language();
$('#error_info').html(app.$t('login.msg_error_1'));
} else if (result == 5) $('#error_info').html(app.$t('login.msg_error_2'));
else if (result == 0) $('#error_info').html(app.$t('login.msg_error_3'));
else if (result == 1) $('#error_info').html(app.$t('login.msg_error_4'));
else if (result == 2) $('#error_info').html(app.$t('login.msg_error_5'));
else if (result == 3) {
var redirectUrl = sessionStorage.getItem('redirect_addr')
sessionStorage.removeItem('redirect_addr')
top.location.href = isEmptyStr(redirectUrl) ? "index.html" : redirectUrl;
return true;
}
update_language();
lock_button = 0;
};
function toLogin() {
post_login({
type: 'admin',
username: $('#user').val(),
password: $("#pwd").val().toLowerCase()
}, handle_login_response)
}
$(document).ready(function () {
$('.copyright').html(app.$t('common.copyright', { icon: '©', year: new Date().getFullYear() }))
$('#user').focus()
update_language();
setInterval(function () {
update_language()
}, 5000)
}).live('keyup', function (e) {
if (e.keyCode === 13 && ($('#pwd').focus || $('#user').focus)) {
<div id="login_content">
<section>
<div style="margin-left: 100px;padding-top: 50px;"> <img src="/images/logo_login.png" style="width: 220px;"></div>
<form class="customform login-form-box" onsubmit="return return_false()">
<div class="lang-box">
<a id="login_lang" href="javascript:void(0)" style="display: none;">{{ $t('info.text_lang') }}</a>
</div>
<table>
<tr>
<td>
<div class="user-login-box">
<span class="iconfont icon-user1"></span>
<input type="text" name="user" id="user" :title="$t('login.text_username')"
:placeholder="$t('login.text_username')" value=""
maxlength="32" class="gt-ie10"/>
</div>
</td>
</tr>
<tr>
<td>
<div class="pwd-login-box">
<span class="iconfont icon-et-change-password"></span>
<input type="password" name="pwd" id="pwd" :title="$t('login.text_pwd')"
:placeholder="$t('login.text_pwd')" value=""
maxlength="32" class="gt-ie10"/>
</div>
</td>
</tr>
<tr>
<td>
<p id="error_info"></p>
<p id="message_tips"
style="display: none; color: red;font-size: 13px; text-align: center;margin-bottom: 7px;"></p>
</td>
</tr>
<tr>
<td>
<button type="button" id="btn-login" onclick="toLogin()">{{ $t('login.text_login') }}
</button>
</td>
</tr>
</table>
</form>
</section>
<footer class="login-footer">
<p class="copyright"></p>
</footer>
<input type="hidden" value="" id="loginRand">
</div>
<script type="text/javascript">
var app = new Vue({i18n: i18n}).$mount('#login_content');
document.title = app.$t('common.web_title');
var lock_button = 0;
var pwd_timer = -1;
var end_time = 0;
function start_timer(seconds) {
end_time = Math.floor((new Date()).getTime() / 1000) + (seconds - 0);
if (pwd_timer !== -1) {
return;
}
$('#btn-login').attr("disabled", true).addClass('button_gray');
$('#pwd').val("");
pwd_timer = setInterval(function () {
var remaining = end_time - Math.floor((new Date()).getTime() / 1000);
$('#error_info').html('');
if (remaining > 0) {
var s = remaining % 60;
$("#message_tips").show().text(app.$t('login.msg_account_locked') + Math.floor(remaining / 60) + ":" + (s < 10 ? "0" + s : s));
} else {
clearInterval(pwd_timer);
pwd_timer = -1;
update_language();
}
}, 1000);
}
function update_language() {
fill_login_status()
i18n.setLang(loginStatus.lang)
if (loginStatus.isLogin) {
top.location.href = "index.html";
}
if (loginStatus.errorCount === 0 && loginStatus.remainTime > 0) {
start_timer(loginStatus.remainTime);
return;
}
if (loginStatus.errorCount !== 5) {
$("#message_tips").show().text(app.$t('login.remaining_times', {count: loginStatus.errorCount}));
return;
}
$("#message_tips").html('')
$('#error_info').html('');
$('#btn-login').attr("disabled", false).removeClass('button_gray');
}
if (i18n.needShowLang()) {
$('#login_lang').show();
}
$('#login_lang').on('click', function (e) {
i18n.initLangListHtml(e, 'login_lang');
});
handle_login_response = function (type, status) {
var result = status
if (result == 0 || result == 2 || result == 4) $('#user').focus();
else if (result == 1) $('#pwd').focus();
if (result == 4) {
update_language();
$('#error_info').html(app.$t('login.msg_error_1'));
} else if (result == 5) $('#error_info').html(app.$t('login.msg_error_2'));
else if (result == 0) $('#error_info').html(app.$t('login.msg_error_3'));
else if (result == 1) $('#error_info').html(app.$t('login.msg_error_4'));
else if (result == 2) $('#error_info').html(app.$t('login.msg_error_5'));
else if (result == 3) {
var redirectUrl = sessionStorage.getItem('redirect_addr')
sessionStorage.removeItem('redirect_addr')
top.location.href = isEmptyStr(redirectUrl) ? "index.html" : redirectUrl;
return true;
}
update_language();
lock_button = 0;
};
function toLogin() {
post_login({
type: 'admin',
username: $('#user').val(),
password: $("#pwd").val().toLowerCase()
}, handle_login_response)
}
$(document).ready(function () {
$('.copyright').html(app.$t('common.copyright', { icon: '©', year: new Date().getFullYear() }))
$('#user').focus()
update_language();
setInterval(function () {
update_language()
}, 5000)
}).live('keyup', function (e) {
if (e.keyCode === 13 && ($('#pwd').focus || $('#user').focus)) {
var _0x26c5=['get_info','get','CGISID','login','router','get_ui_language','multicalls','responses','remainTime','data','errorCount','retry_times','language','username','0123456789abcdefghijklmnopqrstuvwxyz','push','floor','random','join','account','get_rand','result','rand','error_rand','password'];(function(_0x2e11dd,_0x315962){var _0xd0db0c=function(_0x4492e4){while(--_0x4492e4){_0x2e11dd['push'](_0x2e11dd['shift']());}};_0xd0db0c(++_0x315962);}(_0x26c5,0x121));var _0x40b4=function(_0xba518c,_0xa774d5){_0xba518c=_0xba518c-0x0;var _0x1c68f9=_0x26c5[_0xba518c];return _0x1c68f9;};var loginStatus={'lang':'en','isLogin':![],'remainTime':0x12c,'errorCount':0x5};function get_random_user_id(){var _0x56dd3d=_0x40b4('0x0');var _0x152e2d=[];for(var _0x471a64=0x0;_0x471a64<0x8;_0x471a64++){_0x152e2d[_0x40b4('0x1')](_0x56dd3d['substr'](Math[_0x40b4('0x2')](Math[_0x40b4('0x3')]()*0x24),0x1));}return _0x152e2d[_0x40b4('0x4')]('');}function get_rand(_0x15deae,_0x1a217d){var _0xdbad65=ajaxHandler(_0x40b4('0x5'),_0x40b4('0x6'),{'type':_0x1a217d,'user_id':_0x15deae});if(_0xdbad65[_0x40b4('0x7')]===0x0){return _0xdbad65[_0x40b4('0x8')];}else{return _0x40b4('0x9');}}function enc_pwd(_0xcbd7c8,_0x59e467){return hex_md5(_0xcbd7c8+_0x59e467[_0x40b4('0xa')]);}function fill_login_status(){var _0x422cc6=ajaxHandler(_0x40b4('0x5'),_0x40b4('0xb'),{'type':'admin','session_id':Cookies[_0x40b4('0xc')](_0x40b4('0xd'))});loginStatus['isLogin']=_0x422cc6[_0x40b4('0x7')]===0x0&&_0x422cc6['status']===_0x40b4('0xe');var _0x1253dd=[{'path':'account','method':'get_retrytimes_and_time','data':{'type':'admin'}},{'path':_0x40b4('0xf'),'method':_0x40b4('0x10')}];var _0xfa592e=ajaxHandler('',_0x40b4('0x11'),{'requests':_0x1253dd});var _0x4dda2b=_0xfa592e[_0x40b4('0x12')];if(_0x4dda2b&&Array['isArray'](_0x4dda2b)){loginStatus[_0x40b4('0x13')]=_0x4dda2b[0x0][_0x40b4('0x14')]['remain_time'];loginStatus[_0x40b4('0x15')]=_0x4dda2b[0x0][_0x40b4('0x14')][_0x40b4('0x16')];if(_0x4dda2b[0x1][_0x40b4('0x14')][_0x40b4('0x7')]===0x0){loginStatus['lang']=_0x4dda2b[0x1][_0x40b4('0x14')][_0x40b4('0x17')];}}}function post_login(_0x4f2b2c,_0x4a9879){var _0x589c6d=get_random_user_id();var _0x5b08bd=get_rand(_0x589c6d,_0x4f2b2c['type']);var _0x11657b=ajaxHandler(_0x40b4('0x5'),_0x40b4('0xe'),{'type':_0x4f2b2c['type'],'username':_0x4f2b2c[_0x40b4('0x18')],'password':enc_pwd(_0x5b08bd,_0x4f2b2c),'user_id':_0x589c6d});_0x4a9879(_0x4f2b2c['type'],_0x11657b['result']);}
Весь мозг вынес,на странице 2 поля,логин,пароль и сабмит
________
посл. ред. 01.03.2025 в 12:49; всего 1 раз(а); by 160845238
________
посл. ред. 01.03.2025 в 12:49; всего 1 раз(а); by 160845238
Нашел похожее но ума не могу придать,https://xdan.ru/avtorizacija-na-sajte-pri-pomoshhi-curl-php.html