Orwall
PHP for u
Всем доброго времени суток!
Столкнулся с проблемой, решить не могу. Надеюсь, направите меня в верное русло.
Пытаюсь добавить форму оплаты веб мани. Форма выглядит совершенно обычно:
Далее данная форма обрабатывается таким образом:
В БД заносится информация по $names
Проблема в том, что пользователь может отредактировать значение переменной $names через среду разработчика и эта измененное значение передается в БД.
Проверка не проходит по сессиям, куки , так как проверка идет со стороны мерчанта веб мани. А они не могут знать, какое значение верное.
Соответственно вопрос, как можно избежать данной проблемы, как сделать проверку, что если пользователь изменил значение переменной, то выводить ошибку ?
Столкнулся с проблемой, решить не могу. Надеюсь, направите меня в верное русло.
Пытаюсь добавить форму оплаты веб мани. Форма выглядит совершенно обычно:
PHP:
<?php echo "
<form action='https://merchant.webmoney.ru/lmi/payment.asp?at=authtype_16' method='POST'>
<input type='text' name='LMI_PAYMENT_AMOUNT' value='110' class='form-control'><br>
<input type='hidden' name='id' value='$id'>
<input type='hidden' name='from' value='$names'>
<input type='hidden' name='LMI_PAYMENT_DESC_BASE64' value='0J/QvtC/0L7Qu9C90LXQvdC40LUg0YHRh9C10YLQsA=='>
<input type='hidden' name='LMI_PAYEE_PURSE' value='RXXXXXXXX'>
<button type='submit' name='send' class='btn btn-primary mx-auto d-block'>Помочь!</button>
</form>";?>
PHP:
if ($_POST['LMI_PREREQUEST'] == 1) {
if ($_POST['LMI_PAYEE_PURSE'] == 'RХХХХХХХХ') echo 'YES';
} else {
$key = $_POST['LMI_PAYEE_PURSE'].$_POST['LMI_PAYMENT_AMOUNT'].$_POST['LMI_PAYMENT_NO'].$_POST['LMI_MODE'].$_POST['LMI_SYS_INVS_NO'].$_POST['LMI_SYS_TRANS_NO'].$_POST['LMI_SYS_TRANS_DATE'].'ХХХХХХ'.$_POST['LMI_PAYER_PURSE'].$_POST['LMI_PAYER_WM'];
if (strtoupper(hash('sha256', $key)) != $_POST['LMI_HASH']) exit;
$ID = trim($_POST['id']);
$Row = mysqli_fetch_assoc($mysqli->query("SELECT login FROM users WHERE id = $ID"));
if ($Row['login'])
$mysqli->query("INSERT INTO payment VALUES('', '$Row[login]', $_POST[LMI_PAYMENT_AMOUNT], '$_POST[names]', '$_POST[date]')");
Проблема в том, что пользователь может отредактировать значение переменной $names через среду разработчика и эта измененное значение передается в БД.
Проверка не проходит по сессиям, куки , так как проверка идет со стороны мерчанта веб мани. А они не могут знать, какое значение верное.
Соответственно вопрос, как можно избежать данной проблемы, как сделать проверку, что если пользователь изменил значение переменной, то выводить ошибку ?