Задать вопрос
@obizrus

Как сделать запоминание ввода кода доступа?

Хочу закрыть страницы под код доступа
Использую код
<?php
/* В настройках кабинета необходимо указать "Проверять md5 на ссылках",
чтобы нельзя было заплатить сумму отличную от заданной в переменной $summa */
$summa=50; //Стоимость доступа к платному разделу, в рублях
$period=60*60*24*2; //Время доступа, в секундах (60 секунд * 60 минут * 24 часа * 2 суток = 172800 секунд). Исчисляется от времени поступления оплаты за код доступа.
$login='demo1'; //Ваше "Имя пользователя" (логин) в системе Onpay.ru
$key='a2su3ig8y'; //Ваш "Секретный пароль для API IN" в системе Onpay.ru
/* Для того, чтобы закрыть доступ к папке, данный код необходимо размещать в индексном файле (index.php) */
$path='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; //Путь к файлу с этим кодом (определяется автоматически), например: http://onpay.ru/dir/index.php
$access=0; //Запрещаем доступ, по умолчанию (0 = доступ закрыт, 1 = доступ открыт)
$code='';
$error='';
//Функция округления для md5
function to_float($sum) {
if (strpos($sum, ".")) {$sum=round($sum,2);}
else {$sum=$sum.".0";}
return $sum;
}
/* Подключаемся к базе данных, если нажали на кнопку оплатить или ввели код доступа */
if(isset($_POST['pay']) || isset($_POST['code'])) {
$db_host='localhost'; //Хост сервера базы данных (домен или IP-адрес)
$db_user='root'; //Имя пользователя БД
$db_pass=''; //Пароль БД
$db_name='pays'; //Название базы данных
$db_tabl='payments'; //Название таблицы в которой будут храниться платежи
if(!mysql_connect($db_host, $db_user, $db_pass)) {echo 'Невозможно подключиться к серверу баз данных';exit;} //Подключение к серверу баз данных
if(!mysql_select_db($db_name)) {echo 'Не получилось выбрать базу данных '.$db_name;exit;} //Выбор базы данных
}
/* Разбираем данные, отправленные через форму*/
if(isset($_POST['pay'])) { //Если нажали на кнопку покупки кода, то генерируем код, сохраняем его в базу данных и выводим форму оплаты:
if(is_numeric($summa)) { //Если сумма введена корректно
$sql = "INSERT INTO $db_tabl SET ".
"path='$path',".
"sum='$summa',".
"payed=0,".
"date=".time().",".
"ip='".$_SERVER['REMOTE_ADDR']."';"; //Запрос в базу данных на создание новой записи
$result=mysql_query($sql); //Добавляем новую строку в базу данных
if($result) { //Если сохранено в базу данных без ошибок
$id=mysql_insert_id(); //Получаем id записи
$code=$id.substr(time(),-7); //Создаем секретный код - соединяем уникальный номер строки в базе данных (id) и последние 7 знаков текущего времени в секундах (коды доступа не должны повторяться)
$sql = "UPDATE $db_tabl SET code='$code' WHERE id='$id';"; //Запрос в базу данных, для добавления кода доступа
$result=mysql_query($sql); //Сохраняем код в базу данных
if($result) { //Если сохранено в базу данных без ошибок
$sum_for_md5=to_float($summa);
$md5check=md5("fix;$sum_for_md5;RUR;$code;yes;$key"); //Создаем проверочную строку, которая защищает платежную ссылку от изменений
$url="http://secure.onpay.ru/pay/$login?pay_mode=fix&pay_for=$code&price=$summa&currency=RUR&convert=yes&md5=$md5check&url_success=".$path; //Формируем платежную ссылку
/*Выводим код*/
?><p style="font-size:14pt;color:blue;">Ваш код доступа: <b><?=$code; //Выводим код ?></b> (сохраните его в надежном месте)<?php
/*Выводим форму оплаты*/
?><h1><a target="_blank" href="<?=$url; //Выводим платежную ссылку ?>">Оплатить код доступа:</a></h1>
<iframe src="<?=$url; //Выводим платежную ссылку ?>" width="195" height="600" frameborder=no scrolling=no></iframe><?php
} else unset($_POST['pay']); //Удаляем элемент массива (чтобы выводилась кнопка покупки кода)
} else unset($_POST['pay']);
} else unset($_POST['pay']); //Конец условия if(is_numeric($summa)) { //Если сумма введена корректно
} elseif(isset($_POST['code'])) { //Если ввели код, то проверяем его в базе данных и если верный, то сохраняем в COOKIE
$code=intval($_POST['code']); //Код должен быть целым числом
$sql = "SELECT * FROM $db_tabl WHERE code='$code' AND path='$path' AND payed>=sum AND date>=".time().";"; //Проверка кода
$result=mysql_query($sql); //Сохраняем код в базу данных
if($result) { //Если сохранено в базу данных без ошибок
if($row=mysql_fetch_assoc($result)) { //Если в базе данных найдена строка с введенным кодом для данной директории и он не просрочен, то сохраняем код
$access=1; //Разрешаем доступ
} else $error='Введен неправильный код доступа.';
}
} //
if($access == 0) { //Если доступ запрещен, то выводим форму для покупки или ввода оплаченного кода
?><p style="font-size:14pt;font-weight:bold;">Доступ закрыт.<?php
?><p style="font-size:14pt;font-weight:bold;color:red;"><?=$error; //Выводим ошибки?><?php
if(!isset($_POST['pay'])) { //Если не выведена форма оплаты
?><form method="POST" action="<?=$path; //Выводим путь на который будет отправлена форма (на текущую страницу) ?>">
<input style="font-size:16pt;font-weight:bold;color:red;" type="submit" name="pay" value="Купить доступ до <?=date('H:i:s d.m.Y',time()+$period); //Выводим дату ?> всего за <?=$summa; //Выводим сумму ?>&nbsp;руб.">
</form><?php
}
?><p><form method="POST" action="<?=$path; //Выводим путь на который будет отправлена форма (на текущую страницу) ?>">
<input style="font-size:14pt;" type="text" name="code" value="<?=$code; //Выводим текущий код доступа, при его наличии ?>">
<input style="font-size:14pt;" type="submit" value="Ввести оплаченный код доступа">
</form><?php
exit; //Прекращаем выполнение скрипта и выходим
/*Все, что расположено ниже этой строки - не выводится без верного кода доступа. */
} //Конец условия if($access == 0) { if(isset($_POST['pay'])) {
?>
<h1>Доступ по коду <u><?=$row['code'];?></u> разрешен до <?=date('H:i:s d.m.Y',$row['date']);?></h1>
<p>Получено: <?=$row['payed'];?>&nbsp;руб.
<p>Цена продления: <?=$row['sum'];?>&nbsp;руб.
<p>onpay_id: <?=$row['onpay_id'];?>
<p><a href=" <?=$row['path'];?>">Секретная ссылка</a>


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

Выше код я указал закрывает сайт под код, код можно получить платно кто не знает.

Помогите я новичок.
  • Вопрос задан
  • 2295 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
как можно запомнить ввод кода пока не закрыл пользователь браузер

php.net/manual/ru/function.setcookie.php

Помогите я новичок.

В Вашем коде ужасно все :(
1. почитайте про mvc.
ВСЕГДА разделяйте логику приложения и html
2. почитайте PSR-1/PSR-2
3. не используйте mysql, используйте mysqli или pdo

UPD До меня дошло что это пример с официальной вики wiki.onpay.ru/doku.php?id=closed-paid-sample
Бегите оттуда. Если они такой код выкладывают как пример для подражания - внутри все тоже хреново.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы