Панель управления - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir  
Панель управления
Galaxy Дата: Воскресенье, 12.08.2012, 12:44 | Сообщение # 1
Бывалый
Сообщений: 335
Статус: Offline
Пишем все сначала, дарю можно сказать основу своей панели.
Исходники(что бы ничего не собирать, надо только настроить файл bd.php и сделать импорт БД.)
В данном уроке мы реализуем:
Кабинет пользователя;
Регистрация;
Биллинг;
Автоматическая установка сервера SA-MP;
Защита от SQL иньекций на каждой странице;
Обещенный платеж для пользователя;
и многое другое.
Создаем новую базу !
Выбираем Импорт, и качаем этот файл и вставляем его туда
Это копия моей базы данных !
Для того что-бы начать урок потребуется сборник картинок на страницах.
Скачать
Папку Images и Code кидаем на свой веб-сервер, в папку www.
Внимание, без папки Code - регистрация работать не будет!!
1 .Создаем файл подключения в базе данных.
Соддержимое, bd.php:
PHP код:
Quote
<?php
$db = mysql_connect ("localhost","root","123456");
mysql_select_db ("BDSamp",$db);
?>

Где localhost - указываем свой MySQL сервер.
Где root - указываем имя пользователя, где 12456 - пароль.
Где BDSamp - указываем свое имя базы данных.
Сохраняем документ.
2 Создаем регистрацию нового пользователя.
Содержимое, register.php:
Quote
<html>
<head>
<script type="text/javascript" src="view.js"></script>
<title>Панель управления</title>
<link rel="stylesheet" type="text/css" href="images/view.css" media="all">
<script type="text/javascript" src="view.js"></script>
</head>
<body>
<body id="main_body" >
<form action="save_user.php" method="post" enctype="multipart/form-data">
<!-- save_user.php - это адрес обработчика. То есть, после нажатия на кнопку "Зарегистрироваться", данные из полей отправятся на страничку save_user.php методом "post" -->
<div id="form_container">
<form id="form_188746" class="appnitro" method="post" action="">
<div class="form_description">
<center><h2>Регистрация</h2>
<div id="footer">
<a href="/version.php">Control Panel</a></center>
</div>
<center>
<p>
<label>Ваш логин:<br></label>
<input name="login" type="text" size="15" maxlength="15">
</p>
<!-- В текстовое поле (name="login" type="text") пользователь вводит свой логин -->
<p>
<label>Ваш пароль:<br></label>
<input name="password" type="password" size="15" maxlength="15">
</p>
<!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль -->
<p>Введите код с картинки:
<p><img src="code/my_codegen.php"></p>
<p><input type="text" name="code"></p>
<!-- В code/my_codegen.php генерируется код и рисуется изображение -->
<p>
<!-- Кнопочка (type="submit") отправляет данные на страничку save_user.php -->
</p></f
Звездочками (*) обозначены поля, обязательные для заполнения.
</center>
<img src="images/new.png" align="centr"><br>
<input type="image" src='images/reg.png' name="submit" value="Зарегистрироваться">
<br>
<br>
<div id="footer">
<?
//версия панели - чтение из файла
$file_array = file("include/vrs.txt");
if(!$file_array)
{
echo("--");
}
else
{
for($i=0; $i < count($file_array); $i++)
{
printf("Control Panel, версия: %s<br>", $file_array[$i]);
}
}
?>
<a href="http://w3cam1ula.owl.e.s3.hideme.ru/">Darevox.ru</a> - хостинг провайдер игровых серверов<br>
</div>
</form>
</div>
</div>
</body>
</html>

Внимание, зайдите на страницу, посмотрите все ли нормально.
Если внизу видите:
Quote
Warning: file(include/vrs.txt) [function.file]: failed to open stream: No such file or directory in C:\AppServ\www\register.php on line 59

Это нормально, скоро исправим.
3 Делаем функции сохранения пользователя.
Содержимое, save_user.php:
PHP код:
Quote
<html>
<head>
<title><?php echo $myrow['login']; ?></title>
<script type="text/javascript" src="view.js"></script>
<title>Панель управления</title>
<link rel="stylesheet" type="text/css" href="images/view.css" media="all">
<script type="text/javascript" src="view.js"></script>
</head>
<body>
<body id="main_body" >
<div id="form_container">
<div class="form_description">
<center><h2>Продолжение регистрации</h2></center>
<p></p>
</div>
<?php
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (isset($_POST['code'])) { $code = $_POST['code']; if ($code == '') { unset($code);} } //заносим введенный пользователем защитный код в переменную $code, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)or empty($code)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("<center>Вы ввели не всю информацию, вернитесь назад и заполните все поля!</center>"); //останавливаем выполнение сценариев
}
function generate_code() //запускаем функцию, генерирующую код
{
$hours = date("H"); // час
$minuts = substr(date("H"), 0 , 1);// минута
$mouns = date("m"); // месяц
$year_day = date("z"); // день в году
$str = $hours . $minuts . $mouns . $year_day; //создаем строку
$str = md5(md5($str)); //дважды шифруем в md5
$str = strrev($str);// реверс строки
$str = substr($str, 3, 6); // извлекаем 6 символов, начиная с 3
// Вам конечно же можно постваить другие значения, так как, если взломщики узнают, каким именно способом это все генерируется, то в защите не будет смысла.
$array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
srand ((float)microtime()*1000000);
shuffle ($array_mix);
//Тщательно перемешиваем, соль, сахар по вкусу!!!
return implode("", $array_mix);
}
function chec_code($code) //проверяем код
{
$code = trim($code);//удаляем пробелы
$array_mix = preg_split ('//', generate_code(), -1, PREG_SPLIT_NO_EMPTY);
$m_code = preg_split ('//', $code, -1, PREG_SPLIT_NO_EMPTY);
$result = array_intersect ($array_mix, $m_code);
if (strlen(generate_code())!=strlen($code))
{
return FALSE;
}
if (sizeof($result) == sizeof($array_mix))
{
return TRUE;
}
else
{
return FALSE;
}
}
// после сравнения проверяем, пускать ли пользователя дальше или, он сделал ошибку, и остановить скрипт
if (!chec_code($_POST['code']))
{
exit ("<center>Вы ввели неверно код с картинки.</center>"); //останавливаем выполнение сценариев
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
// дописываем новое********************************************
//добавляем проверку на длину логина и пароля
if (strlen($login) < 3 or strlen($login) > 15) {
exit ("<center>Логин должен состоять не менее чем из 3 символов и не более чем из 15.</center>"); //останавливаем выполнение сценариев
}
if (strlen($password) < 3 or strlen($password) > 15) {
exit ("<center>Пароль должен состоять не менее чем из 3 символов и не более чем из 15.</center>"); //останавливаем выполнение сценариев
}
if (empty($_FILES['fupload']['name']))
{
//если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
$avatar = "avatars/net-avatara.jpg"; //можете нарисовать net-avatara.jpg или взять в исходниках
}
else
{
//иначе - загружаем изображение пользователя
$path_to_90_directory = 'avatars/';//папка, куда будет загружаться начальная картинка и ее сжатая копия
if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
{
$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru
// Создание квадрата 90x90
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности
$w = 90; // квадратная 90x90. Можно поставить и другой размер.
// создаём исходное изображение на основе
// исходного файла и определяем его размеры
$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения
// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат
$dest = imagecreatetruecolor($w,$w);
// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже серединку)
if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));
// квадратная картинка масштабируется без вырезок
if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
$date=time(); //вычисляем время в настоящий момент.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
//почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.
$avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
$delfull = $path_to_90_directory.$filename;
unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
}
else
{
//в случае несоответствия формата, выдаем соответствующее сообщение
exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>"); //останавливаем выполнение сценариев
}
//конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы
}
$password = md5($password);//шифруем пароль
$password = strrev($password);// для надежности добавим реверс
$password = $password."b3p6f";
//можно добавить несколько своих символов по вкусу, например, вписав "b3p6f". Если этот пароль будут взламывать метадом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.
//При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.
// дописали новое********************************************
// Далее идет все из первой части статьи,но необходимо дописать изменение в запрос к базе.
// подключаемся к базе
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
// проверка на существование пользователя с таким же логином
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit ("<center>Извините, введённый вами логин уже зарегистрирован. Введите другой логин.</center>"); //останавливаем выполнение сценариев
}
// если такого нет, то сохраняем данные
$result2 = mysql_query ("INSERT INTO users (login,password,avatar,email,date) VALUES('$login','$password','$avatar','$email',NOW())");
// Проверяем, есть ли ошибки
if ($result2=='TRUE')
{
$result3 = mysql_query ("SELECT id FROM users WHERE login='$login'",$db);//извлекаем идентификатор пользователя. Благодаря ему у нас и будет уникальный код активации, ведь двух одинаковых идентификаторов быть не может.
$myrow3 = mysql_fetch_array($result3);
$activation = md5($myrow3['id']).md5($login);//код активации аккаунта. Зашифруем через функцию md5 идентификатор и логин. Такое сочетание пользователь вряд ли сможет подобрать вручную через адресную строку.
$subject = "Подтверждение регистрации";//тема сообщения
$message = "Здравствуйте! Спасибо за регистрацию на citename.ru\nВаш логин: ".$login."\n
Перейдите по ссылке, чтобы активировать ваш аккаунт:\nhttp://localhost/test3/activation.php?login=".$login."&code=".$activation."\nС уважением,\n
Администрация citename.ru";//содержание сообщение
echo "<h4><center><a href=/activation.php?login=$login&code=$activation>Нажмите здесь для активации вашего аккаунта</a></center></h4>"; //говорим о отправленном письме пользователю
}
else {
exit ("<center>Ошибка! Вы не зарегистрированы.</center>"); //останавливаем выполнение сценариев
}
?>
<div id="footer">
<?
//версия панели - чтение из файла
$file_array = file("include/vrs.txt");
if(!$file_array)
{
echo("--");
}
else
{
for($i=0; $i < count($file_array); $i++)
{
printf("Darevox Control Panel, версия: %s<br>", $file_array[$i]);
}
}
?>
<a href="http://w3cam1ula.owl.e.s3.hideme.ru/">Darevox.ru</a> - хостинг провайдер игровых серверов<br>
</div>
</body>
</html>

Когда пользователь на странице register.php введет все данные, они отправятся на страницу save_user.php
4 Пишем авторизацию пользователя.
Содержимое, index.php:
PHP код:
Quote
<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password']))
{//если есть необходимые переменные
if ($_COOKIE['auto'] == 'yes') { // если пользователь желает входить автоматически, то запускаем сессии
$_SESSION['password']=strrev(md5($_COOKIE['password']))."b3p6f"; //в куках пароль был не зашифрованный, а в сессиях обычно храним зашифрованный
$_SESSION['login']=$_COOKIE['login'];//сессия с логином
$_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
}
}
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow = mysql_fetch_array($result);
//извлекаем нужные данные о пользователе
}
?>
<html>
<head>
<script type="text/javascript" src="view.js"></script>
<title>Панель управления</title>
<link rel="stylesheet" type="text/css" href="images/view.css" media="all">
<script type="text/javascript" src="view.js"></script>
</head>
<body>
<?php
if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
//проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.
print <<<HERE
<body id="main_body" >
<form action="testreg.php" method="post">
<div id="form_container">
<form id="form_188746" class="appnitro" method="post" action="">
<div class="form_description">
<center><h2>Панель управления</h2>
<div id="footer">
<a href="/version.php">Control Panel</a></center>
</div>
<div class="form_description">
<!-- testreg.php - это адрес обработчика. То есть, после нажатия на кнопку "Войти", данные из полей отправятся на страничку testreg.php методом "post" -->
<p>
<li id="li_1" >
<center>
<label class="description" for="element_1">Логин </label>
<div>
<input id="login" name="login" class="element text medium" type="text" maxlength="255" value=""/>
</div>
</center>
HERE;
if (isset($_COOKIE['login'])) //есть ли переменная с логином в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его логин уже вписан в нужную графу
echo ' value="'.$_COOKIE['login'].'">';
}
print <<<HERE
</p>
<!-- В текстовое поле (name="login" type="text") пользователь вводит свой логин -->
<p>
<li id="li_1" >
<center><label class="description" for="element_1">Пароль </label></center>
<div>
<center><input id="password" name="password" class="element text medium" type="password" maxlength="255" value=""/> </center>
</div>
HERE;
if (isset($_COOKIE['password']))//есть ли переменная с паролем в в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его пароль уже вписан в нужную графу
echo ' value="'.$_COOKIE['password'].'">';
}
print <<<HERE
</p>
<center>
<input type="image" src='images/auth.png' name="submit" value="Войти" >
<!-- Кнопочка (type="submit") отправляет данные на страничку testreg.php -->
</center>
</p>
HERE;
}
else
{
//при удачном входе пользователю выдается все, что расположено ниже между звездочками.
//******************************************************************************************************************************************** ****************************
print <<<HERE
<body id="main_body" >
<div id="form_container">
<div class="form_description">
<center><h2>Панель управления</h2></center>
<p></p>
</div>
<center>Вы авторизированы, как $_SESSION[login] [$_SERVER[REMOTE_ADDR]]<br>
<div id="footer">
Внимание, в целях улучшения качества обслуживания, ваш IP адрес сохранен
</div>
</center>
<center>
<center><a href='page.php?id=$_SESSION[id]'><input type="image" src='images/servers.png' name="submit" value="Управление" ></a><br>
<a href=exit.php><input type="image" src='images/out.png' name="submit" value="Выход" ></a><br>
</center>
<!-- ************************************************************************************************************ -->
<!-- Между оператором "print <<<HERE" выводится html код с нужными переменными из php -->
<!-- Именно здесь можно добавлять формы для отправки комментариев и прочего... -->
HERE;
//******************************************************************************************************************************************** ****************************
//при удачном входе пользователю выдается все, что расположено ВЫШЕ между звездочками.
}
?>
<div id="footer">
<?
//версия панели - чтение из файла
$file_array = file("include/vrs.txt");
if(!$file_array)
{
echo("--");
}
else
{
for($i=0; $i < count($file_array); $i++)
{
printf("<br>Darevox Control Panel, версия: %s<br>", $file_array[$i]);
}
}
?>
<a href="http://w3cam1ula.owl.e.s3.hideme.ru/">Darevox.ru</a> - хостинг провайдер игровых серверов</br>
</div>
</form>
</body>
</html>

4 Пишем авторизацию пользователя.
Содержимое, index.php:
PHP код:
Quote
<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password']))
{//если есть необходимые переменные
if ($_COOKIE['auto'] == 'yes') { // если пользователь желает входить автоматически, то запускаем сессии
$_SESSION['password']=strrev(md5($_COOKIE['password']))."b3p6f"; //в куках пароль был не зашифрованный, а в сессиях обычно храним зашифрованный
$_SESSION['login']=$_COOKIE['login'];//сессия с логином
$_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
}
}
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow = mysql_fetch_array($result);
//извлекаем нужные данные о пользователе
}
?>
<html>
<head>
<script type="text/javascript" src="view.js"></script>
<title>Панель управления</title>
<link rel="stylesheet" type="text/css" href="images/view.css" media="all">
<script type="text/javascript" src="view.js"></script>
</head>
<body>
<?php
if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
//проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.
print <<<HERE
<body id="main_body" >
<form action="testreg.php" method="post">
<div id="form_container">
<form id="form_188746" class="appnitro" method="post" action="">
<div class="form_description">
<center><h2>Панель управления</h2>
<div id="footer">
<a href="/version.php">Control Panel</a></center>
</div>
<div class="form_description">
<!-- testreg.php - это адрес обработчика. То есть, после нажатия на кнопку "Войти", данные из полей отправятся на страничку testreg.php методом "post" -->
<p>
<li id="li_1" >
<center>
<label class="description" for="element_1">Логин </label>
<div>
<input id="login" name="login" class="element text medium" type="text" maxlength="255" value=""/>
</div>
</center>
HERE;
if (isset($_COOKIE['login'])) //есть ли переменная с логином в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его логин уже вписан в нужную графу
echo ' value="'.$_COOKIE['login'].'">';
}
print <<<HERE
</p>
<!-- В текстовое поле (name="login" type="text") пользователь вводит свой логин -->
<p>
<li id="li_1" >
<center><label class="description" for="element_1">Пароль </label></center>
<div>
<center><input id="password" name="password" class="element text medium" type="password" maxlength="255" value=""/> </center>
</div>
HERE;
if (isset($_COOKIE['password']))//есть ли переменная с паролем в в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его пароль уже вписан в нужную графу
echo ' value="'.$_COOKIE['password'].'">';
}
print <<<HERE
</p>
<center>
<input type="image" src='images/auth.png' name="submit" value="Войти" >
<!-- Кнопочка (type="submit") отправляет данные на страничку testreg.php -->
</center>
</p>
HERE;
}
else
{
//при удачном входе пользователю выдается все, что расположено ниже между звездочками.
//******************************************************************************************************************************************** ****************************
print <<<HERE
<body id="main_body" >
<div id="form_container">
<div class="form_description">
<center><h2>Панель управления</h2></center>
<p></p>
</div>
<center>Вы авторизированы, как $_SESSION[login] [$_SERVER[REMOTE_ADDR]]<br>
<div id="footer">
Внимание, в целях улучшения качества обслуживания, ваш IP адрес сохранен
</div>
</center>
<center>
<center><a href='page.php?id=$_SESSION[id]'><input type="image" src='images/servers.png' name="submit" value="Управление" ></a><br>
<a href=exit.php><input type="image" src='images/out.png' name="submit" value="Выход" ></a><br>
</center>
<!-- ************************************************************************************************************ -->
<!-- Между оператором "print <<<HERE" выводится html код с нужными переменными из php -->
<!-- Именно здесь можно добавлять формы для отправки комментариев и прочего... -->
HERE;
//******************************************************************************************************************************************** ****************************
//при удачном входе пользователю выдается все, что расположено ВЫШЕ между звездочками.
}
?>
<div id="footer">
<?
//версия панели - чтение из файла
$file_array = file("include/vrs.txt");
if(!$file_array)
{
echo("--");
}
else
{
for($i=0; $i < count($file_array); $i++)
{
printf("<br>Darevox Control Panel, версия: %s<br>", $file_array[$i]);
}
}
?>
<a href="http://w3cam1ula.owl.e.s3.hideme.ru/">Darevox.ru</a> - хостинг провайдер игровых серверов</br>
</div>
</form>
</body>
</html>


Внимание, для работы samp.php в папке по пути: install/samp - должен находится распакованный SA-MP сервер.
Я личный кабинет не дописал - давайте уже сами :-) Там смысл думаю будет понятен.
Теперь концовка! :-)
Создаем папку с названием install
В ней папку samp
В папку samp - распаковываем чистый сервер SA-MP
Открываем server.cfg - настраиваем под себя
Создаем папку с названием include
В ней файл vrs.txt
Содержимое файла: 0.2
Чуть не забыл, ещё создайте папку servers.
Итак, смысл работы панели.
Новый пользователь регистрируется, в папке servers создается папка с его логином.
Пользователь входит.
Нажимает установить сервер SA-MP.
Происходит копирование сервера SA-MP из папки install в папку с его логином, в папку samp.
Думаю понятно...допишите её сами, сделайте обьединение с ROBOKASSA и все такое =)
Допишите ещё авто запуск сервера, там замуты с функцией exec();
©q0b3rMAN


Помогаю новичкам , если есть вапросы , то пишите в ЛС.
  • Страница 1 из 1
  • 1
Поиск: