Содержание файла:
pPass = 123456
pLock = 0
pALevel = 3
pLevel = 3
pRespect = 7
pSkin = 120
pFrac = 12
pRank = 7
pJob = 4
pSJob = 1
pLicA = 0
pLicB = 1
pLicC = 0
pLicD = 0
pGunLic = 0
pWLevel = 0
pJailTime = 0
pMuteTime = 0
pMoney = 14400
pMaterials = 0
pHMaterials = 0
pDrugs = 0
pHDrugs = 0
pProds = 0
pPackets = 0
pHouse = 0
pBussines = 0
pWeapon = 24
pAmmo = 100
Вывел вот так:
<?php
if(!file_exists("test.ini")) echo "Ошибка: Файл с аккаунтом не найден";
$file = fopen("test.ini", "rt");
while(!feof($file))
{
$tmp = fgets($file, 512);
$account = explode(" = ", $tmp);
echo $account[0] . " = " . $account[1] . "<br />";
}
fclose($file);
?>
А как заменить системные ключи типа "pPass или pLock" на пользовательские "Пароль или Блокировка"?!
Спустя 6 минут, 52 секунды (6.08.2011 - 16:02) kovaldm написал(а):
Юзай ассоциативный массив.
Спустя 7 минут, 5 секунд (6.08.2011 - 16:09) YoYo написал(а):
А подробнее можно? ><
Пример кода бы желательно...
Пример кода бы желательно...
Спустя 5 минут, 17 секунд (6.08.2011 - 16:14) jetistyum написал(а):
можно так например
или так
но в этом случае будет заменяться в любом месте подстроки
<?php
if(!file_exists("test.ini")) echo "Ошибка: Файл с аккаунтом не найден";
$file = fopen("test.ini", "rt");
while(!feof($file))
{
$tmp = fgets($file, 512);
$account = explode(" = ", $tmp);
if ($account[0]=='pPass'){
$account[0] = 'Пароль';
}
echo $account[0] . " = " . $account[1] . "<br />";
}
fclose($file);
?>
или так
<?php
if(!file_exists("test.ini")) echo "Ошибка: Файл с аккаунтом не найден";
$file = fopen("test.ini", "rt");
while(!feof($file))
{
$tmp = fgets($file, 512);
$tmp = str_replace(array('pPass', 'pLock'), array('Пароль', 'Блокировка'), $tmp);
$account = explode(" = ", $tmp);
echo $account[0] . " = " . $account[1] . "<br />";
}
fclose($file);
?>
но в этом случае будет заменяться в любом месте подстроки
Спустя 1 минута, 28 секунд (6.08.2011 - 16:16) kovaldm написал(а):
Как - то так.
$vars = array('pPass' => 'Пароль',
'pLock' => 'Блокировка',
...,
...,
...,
'pMoney' => 'Денежки');
if(!file_exists("test.ini"))
echo "Ошибка: Файл с аккаунтом не найден";
$file = fopen("test.ini", "rt");
while(!feof($file))
{
$tmp = fgets($file, 512);
$account = explode(" = ", $tmp);
echo $vars[$account[0]] . " = " . $account[1] . "<br />";
}
fclose($file);
Спустя 11 секунд (6.08.2011 - 16:16) jetistyum написал(а):
А вообще кажется кто-то не хочет использовать базы данных, и придумывает себе проблемы.
Спустя 3 минуты, 37 секунд (6.08.2011 - 16:20) YoYo написал(а):
Цитата (jetistyum @ 6.08.2011 - 13:16) |
А вообще кажется кто-то не хочет использовать базы данных, и придумывает себе проблемы. |
Я то хочу, но некоторым не объяснить что MySQL круче

kovaldm, спасибо

Спустя 1 час, 15 минут, 58 секунд (6.08.2011 - 17:36) YoYo написал(а):
Сделал чтение аккаунта игрока из файла в зависимости от введёного логина, а вот как проверить пароль, т.е. правильно или нет введён ><
Вот так я сделал:
Как пароль проверить, ума не приложу :(
Вот так я сделал:
<?php
$login = $_POST['name'];
$password = $_POST['password'];
if(!file_exists("./accounts/" . $login . ".ini")) exit("Неверный логин!");
else
{
$vars = array('pPass' => 'Пароль',
'pLock' => 'Бан',
'pALevel' => 'Уровень Администрирования',
'pLevel' => 'Уровень',
'pRespect' => 'Респекты',
'pSkin' => 'Скин',
'pFrac' => 'Фракция',
'pRank' => 'Ранг',
'pJob' => 'Работа',
'pSJob' => 'Навык работы',
'pLicA' => 'Лицензия на вождение мото',
'pLicB' => 'Лицензия на вождение авто',
'pLicC' => 'Лицензия на плавание',
'pLicD' => 'Лицензия на полёты',
'pGunLic' => 'Лицензия на оружие',
'pWLevel' => 'Уровень розыска',
'pJailTime' => 'Срок',
'pMuteTime' => 'Время мута',
'pMoney' => 'Деньги',
'pWeapon' => 'Оружие',
'pAmmo' => 'Патроны',
'pMaterials' => 'Материалы',
'pHMaterials' => 'Материалы на складе',
'pDrugs' => 'Наркотики',
'pHDrugs' => 'Наркотики на складе',
'pProds' => 'Продукты',
'pPackets' => 'Пакеты',
'pHouse' => 'Дом',
'pBussines' => 'Бизнес');
$file = fopen("./accounts/" . $login . ".ini", "rt");
while(!feof($file))
{
$tmp = fgets($file, 512);
$account = explode(" = ", $tmp);
echo $vars[$account[0]] . ": " . $account[1] . "<br />";
}
fclose($file);
}
Как пароль проверить, ума не приложу :(
Спустя 14 минут, 26 секунд (6.08.2011 - 17:50) kovaldm написал(а):
Проверяй логин + пароль одновременно. То есть, если указанный логин существует и пароль верен, то все ок, если логина нет или пароль не подходит к логину - ошибка.
Спустя 2 минуты, 15 секунд (6.08.2011 - 17:52) YoYo написал(а):
Проблема в другом, перед тем как сравнивать, как прочитать из файла строку
pPass = 123456
Спустя 10 минут, 9 секунд (6.08.2011 - 18:03) kovaldm написал(а):
$text = file_get_contents($filename);
$text = explode("\n", $text);
foreach($text as $v)
{
$tmp = explode(" = ", $v);
$txt[$tmp[0]] = $tmp[1];
}
echo $txt['pPass'];
Спустя 6 минут, 25 секунд (6.08.2011 - 18:09) YoYo написал(а):
Удалено
Разобрался, спасибо ещё раз, второй раз выручаешь
Разобрался, спасибо ещё раз, второй раз выручаешь

Спустя 2 минуты, 3 секунды (6.08.2011 - 18:11) Winston написал(а):
Цитата (YoYo @ 6.08.2011 - 18:09) |
$filename - это открытый файл?! |
Это имя файла из которого брать даные
Спустя 9 минут, 37 секунд (6.08.2011 - 18:21) YoYo написал(а):
А как сравнить то?! xD
Сравниваю так:
Всё время не совпадают пароли...
Хотя если выводит обе переменные, они обе равны '123456'...
Сравниваю так:
if($password != $tmp['pPass']) exit("Ошибка: Неверный пароль!");
Всё время не совпадают пароли...
$password = $_POST['password'];
Хотя если выводит обе переменные, они обе равны '123456'...
Спустя 2 минуты, 22 секунды (6.08.2011 - 18:23) Winston написал(а):
Попробуй так
if($password != (int)$txt['pPass']) exit("Ошибка: Неверный пароль!");
Спустя 1 минута, 59 секунд (6.08.2011 - 18:25) YoYo написал(а):
Твой вариант работает, но что если пароль будет например "parol"?!
Спустя 2 минуты, 39 секунд (6.08.2011 - 18:28) Winston написал(а):
Цитата (YoYo @ 6.08.2011 - 18:25) |
но что если пароль будет например "parol"?! |
Попробуй так
if($password != trim($txt['pPass'])) exit("Ошибка: Неверный пароль!");
Спустя 1 минута, 10 секунд (6.08.2011 - 18:29) YoYo написал(а):
Цитата (Winston @ 6.08.2011 - 15:28) | ||
Попробуй так if($password != trim($txt['pPass'])) exit("Ошибка: Неверный пароль!"); |
Работает

Спустя 3 минуты, 8 секунд (6.08.2011 - 18:32) kovaldm написал(а):
Пароли храни в виде хеш-кода.
Спустя 9 минут, 57 секунд (6.08.2011 - 18:42) YoYo написал(а):
А как расшифровать пароль из хэш? (Шифроваться он будет не в PHP скрипте >< )
Спустя 54 секунды (6.08.2011 - 18:43) kovaldm написал(а):
Расшифровать нельзя, для проверки сравнивают хэш-коды.
Спустя 43 секунды (6.08.2011 - 18:43) YoYo написал(а):
А ну да, я ступил xD
P.S. Спасибо в очередной раз
(поставил по +)
P.S. Спасибо в очередной раз

Спустя 57 минут, 4 секунды (6.08.2011 - 19:41) YoYo написал(а):
Опять я ><
Ничего что я в одной теме всё пишу?! Просто чтобы не засорять форум
Теперь такой вопрос, как редактировать значение ключа pPass? (да, да, хочу сделать смену пароля xD)?!
Ничего что я в одной теме всё пишу?! Просто чтобы не засорять форум

Теперь такой вопрос, как редактировать значение ключа pPass? (да, да, хочу сделать смену пароля xD)?!
Спустя 18 минут, 51 секунда (6.08.2011 - 19:59) kovaldm написал(а):
Все в обратной последовательности.
После чтения и редактирования массив $txt склеиваешь в обратном порядке и записываешь в тот же файл.
После чтения и редактирования массив $txt склеиваешь в обратном порядке и записываешь в тот же файл.
Спустя 1 час, 17 минут, 44 секунды (6.08.2011 - 21:17) YoYo написал(а):
Разобрался! :lol:
Сделал вот так:
Маленький нюанс остался, он записывает и убирает перенос строки, т.е. послзе изменения pPass получается:
Как туда перенос всунуть? ><
Вопрос снят
Перенос строки: "\r\n"
Сделал вот так:
<?php
/* Ловим POST данные
с формы */
$login = trim(stripslashes($_POST['name']));
$password = trim(stripslashes($_POST['password']));
/* Проверяем на существование
аккаунта игрока */
if(!file_exists("./accounts/" . $login . ".ini")) exit("Ошибка: Неверный логин!");
/* Проверяем правильно ли
введён пароль */
$text = file_get_contents("./accounts/" . $login . ".ini");
$text = explode("\n", $text);
foreach($text as $value)
{
$tmp = explode(" = ", $value);
$txt[$tmp[0]] = $tmp[1];
}
if($password != trim($txt['pPass'])) exit("Ошибка: Неверный пароль!");
$newpass = file("./accounts/" . $login . ".ini");
$newpass[0] = "pPass = " . $_POST['newpass'];
$text = file_put_contents("./accounts/" . $login . ".ini", $newpass);
?>
Маленький нюанс остался, он записывает и убирает перенос строки, т.е. послзе изменения pPass получается:
pPass = newpasspLock = 0
pALevel = 3
pLevel = 0
...
Как туда перенос всунуть? ><
Вопрос снят
Перенос строки: "\r\n"
Спустя 4 часа, 54 минуты, 53 секунды (7.08.2011 - 02:12) YoYo написал(а):
Опять проблема ><
Хотел сделать что-то типо меню. Но при переходе по тому-же адресу только с другими $_GET параметрами, теряются данные $_POST, т.е. сбивается авторизация... Подскажите как быть?!
Вот код:
Хотел сделать что-то типо меню. Но при переходе по тому-же адресу только с другими $_GET параметрами, теряются данные $_POST, т.е. сбивается авторизация... Подскажите как быть?!
Вот код:
<html>
<link rel = "stylesheet" type = "text/css" href = "style/default.css" />
<?php
include "inc/cfg.php";
$login = trim(stripslashes($_POST['login']));
$password = trim(stripslashes($_POST['password']));
if(!$_GET['action'])
{
if(!file_exists($path . "/" . $login . ".ini")) exit("<p class = 'error'>Ошибка: Аккаунт с указаным логином не найден</p>
<p><a href = '/'>На Главную</a>");
echo "<p class = 'title'>Ваш Ник: " . $login , "</p>";
echo "<p><a href = 'ucp.php?action=stats'>Статистика</a><br />
<a href = 'ucp.php?action=changepass'>Сменить пароль</a></p>";
echo "<p><a href = '/'>Выход</a></p>";
echo "<p class = 'copyright'>© Easy UCP by eFFect aka YoYo 2011</p>";
}
else if($_GET['action'] == 'stats')
{
echo "<p class = 'title'>Ваш Ник: " . $login , "</p>";
echo "<p>Статистика</p>";
$readacc = file_get_contents($path . "/" . $login . ".ini");
$tmpacc = explode("\n", $readacc);
foreach($tpmacc as $value)
{
$tmp = explode(" = ", $value);
$stats[$tmp[0]] = $tmp[1];
if($password != trim($stats['pPass'])) exit("<p class = 'error'>Ошибка: Неверный пароль</p>
<p><a href = '/'>На Главную</a>");
echo $stats[$tmp[0]] . ': ' . $tmp[1];
}
echo "<p><a href = 'ucp.php'>Назад</a></p>";
}
?>
</html>
Спустя 8 минут, 6 секунд (7.08.2011 - 02:20) waldicom написал(а):
Один из возможныз вариантов - записывать в сессию какой-либо параметр (флаг) после успешной авторизации.
Спустя 8 часов, 16 минут, 29 секунд (7.08.2011 - 10:37) YoYo написал(а):
Хотел заюзать сессии, нашёл вроди инфу про них.
Сделал так:
Выдаёт ошибки:
Ну и классическое: "Помогите исправить :("
Сделал так:
<html>
<link rel = "stylesheet" type = "text/css" href = "style/default.css" />
<?php
ini_set(session.use_cookies, "1");
ini_set(session.use_trans_sid, "1");
session_start();
include "inc/cfg.php";
$_SESSION['login'] = trim(stripslashes($_POST['login']));
$_SESSION['password'] = trim(stripslashes($_POST['password']));
if(!$_GET['action'])
{
if(!file_exists($path . "/" . $_SESSION['login'] . ".ini")) exit("<p class = 'error'>Ошибка: Аккаунт с указаным логином не найден</p>
<p><a href = '/'>На Главную</a>");
echo "<p class = 'title'>Ваш Ник: " . $login , "</p>";
echo "<p><a href = 'ucp.php?action=stats'>Статистика</a><br />
<a href = 'ucp.php?action=changepass'>Сменить пароль</a></p>";
echo "<p><a href = '/'>Выход</a></p>";
echo "<p class = 'copyright'>© Easy UCP by eFFect aka YoYo 2011</p>";
}
else if($_GET['action'] == 'stats')
{
echo "<p class = 'title'>Ваш Ник: " . $_SESSION['login'] , "</p>";
echo "<p>Статистика</p>";
$readacc = file_get_contents($path . "/" . $_SESSION['login'] . ".ini");
$tmpacc = explode("\n", $readacc);
foreach($tpmacc as $value)
{
$tmp = explode(" = ", $value);
$stats[$tmp[0]] = $tmp[1];
if($_SESSION['password'] != trim($stats['pPass'])) exit("<p class = 'error'>Ошибка: Неверный пароль</p>
<p><a href = '/'>На Главную</a>");
echo $stats[$tmp[0]] . ': ' . $tmp[1];
}
echo "<p><a href = 'ucp.php'>Назад</a></p>";
}
?>
</html>
Выдаёт ошибки:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\test1.ru\www\ucp.php:3) in Z:\home\test1.ru\www\ucp.php on line 6
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\test1.ru\www\ucp.php:3) in Z:\home\test1.ru\www\ucp.php on line 6
Ну и классическое: "Помогите исправить :("
Спустя 1 минута, 30 секунд (7.08.2011 - 10:38) Winston написал(а):
Сессии можно прописать до любого вывода на экран.
А это
А это
Цитата (YoYo @ 7.08.2011 - 02:12) |
<html> <link rel = "stylesheet" type = "text/css" href = "style/default.css" /> |
Вывод на экран.
Спустя 11 минут, 43 секунды (7.08.2011 - 10:50) neadekvat написал(а):
http://phpforum.ru/index.php?showtopic=43337
Пункты 3, 4.
И по тому, что выше - много кода. Где-то же промелькнула хорошая идея.
Пункты 3, 4.
И по тому, что выше - много кода. Где-то же промелькнула хорошая идея.
$arr = parse_ini_file('new.ini'); // считываем файл. Все, больше ничего не надо.
$arr['pPass'] = 123; // Меняем значение
// Записываем измененный массив.
foreach($arr as $key => $value)
$text[] = "$key = $value";
file_put_contents('new.ini', implode("\n", $text));
Спустя 7 часов, 27 минут, 5 секунд (7.08.2011 - 18:17) YoYo написал(а):
Спасибо, исправил. А теперь другая проблема, поменял кодировку на UTF-8 без BOM (чтобы убрать Warning), но теперь Русский текст отображается так:
Как исправить?
Статистика
Как исправить?
Спустя 38 минут, 43 секунды (7.08.2011 - 18:56) neadekvat написал(а):
Текст где хранится, в файлах? Проверь, чтобы они точно были в кодировке UTF-8, и чтобы браузер тоже был выставлен в эту кодировку.
Если из базы данных.. то ты понимаешь, да, где искать причину?
Если из базы данных.. то ты понимаешь, да, где искать причину?
Спустя 5 минут, 22 секунды (7.08.2011 - 19:01) YoYo написал(а):
В файлах ^_^ Перекодировал в ANSI, всё стало на место... (перед заливкой на хост просто назад в UTF переконвертирую ><)
Опять я со своими проблемами, почему-то при переходе по одному и тому же адресу но с разными GET параметрами, теряются $_SESSION переменные, делаю так:
При переходе по ucp.php?stats, переменные $_SESSION уже пустые :(
Опять я со своими проблемами, почему-то при переходе по одному и тому же адресу но с разными GET параметрами, теряются $_SESSION переменные, делаю так:
<?php
ini_set(session.use_cookies, true);
ini_set(session.use_trans_sid, true);
session_start();
include "inc/cfg.php";
$_SESSION['login'] = trim(stripslashes($_POST['login']));
$_SESSION['password'] = trim(stripslashes($_POST['password']));
if(isset($_GET['stats']))
{
if(isset($_SESSION['logged']))
{
$acc = parse_ini_file($path . "/" . $_SESSION['login'] . ".ini");
foreach($arr as $key => $value) echo $key . ": " . $value;
}
else exit("Error: Ошибка авторизации (#3)");
}
else if(file_exists($path . "/" . $_SESSION['login'] . ".ini"))
{
$acc = parse_ini_file($path . "/" . $_SESSION['login'] . ".ini");
if($_SESSION['password'] == $acc['pPass'])
{
$_SESSION['logged'] = '1';
echo "<a href = 'ucp.php?stats'>Статистика</a><br />";
echo "<a href = 'ucp.php?changepass'>Сменить пароль</a><br />";
echo "<a href = 'ucp.php?logout'>Выход</a>";
}
else exit("Error: Неверный пароль (#2)");
}
else exit("Error: Аккаунт с указанным логином не найден (#1)");
?>
При переходе по ucp.php?stats, переменные $_SESSION уже пустые :(
Спустя 40 минут, 21 секунда (7.08.2011 - 19:41) neadekvat написал(а):
Там сессия то стартуется?
Спустя 14 минут, 1 секунда (7.08.2011 - 19:55) YoYo написал(а):
Да. Вот, немного переделал:
index.php
ucp.php
Проблема та же, теряются переменные сессии... Выручайте ><
P.S. Мб Denwer как-то не так настроен?! Я его скачал, установил, ничего не менял.
index.php
<?php
session_start();
include "inc/cfg.php";
if(!isset($_POST['submit']))
{
?>
<form method = "post" action = "index.php">
Игровой Ник:<br /><input name = "login" type = "text" size = "18" maxlength = "32"><br />
Пароль:<br /><input name = "password" type = "password" size = "18" maxlength = "32"><br />
<input name = "submit" type = "hidden">
<input type = "submit" value = "Войти"></form>
<?php
}
else
{
if(!file_exists($path . "/" . $_POST['login'] . ".ini")) exit("Error: Аккаунт с указанным логином не найден (#1)");
$_SESSION['login'] = $_POST['login'];
$_SESSION['password'] = $_POST['password'];
Header("Location: ucp.php");
}
?>
ucp.php
<?php
session_start();
include "inc/cfg.php";
if(isset($_GET['stats']))
{
if(isset($_SESSION['logged']))
{
$acc = parse_ini_file($path . "/" . $_SESSION['login'] . ".ini");
foreach($arr as $key => $value) echo $key . ": " . $value;
}
else exit("Error: Ошибка авторизации (#3)");
}
else
{
$acc = parse_ini_file($path . "/" . $_SESSION['login'] . ".ini");
if($_SESSION['password'] == $acc['pPass'])
{
$_SESSION['logged'] = '1';
echo "<a href = 'ucp.php?stats'>Статистика</a><br />";
echo "<a href = 'ucp.php?changepass'>Сменить пароль</a><br />";
echo "<a href = 'ucp.php?logout'>Выход</a>";
}
else exit("Error: Неверный пароль (#2)");
}
?>
Проблема та же, теряются переменные сессии... Выручайте ><
P.S. Мб Denwer как-то не так настроен?! Я его скачал, установил, ничего не менял.
Спустя 42 минуты, 3 секунды (7.08.2011 - 20:37) neadekvat написал(а):
Проверь, на странице, где не доступен _SESSION, есть ли в кукисах соответствующая запись (PHPSESSID)
Спустя 9 минут, 23 секунды (7.08.2011 - 20:47) YoYo написал(а):
Эмм... А как проверить то?!
Включил показ ошибок, появился нотис:
Включил показ ошибок, появился нотис:
Notice: Undefined index: login in Z:\home\test1.ru\www\ucp.php on line 17
Спустя 10 минут, 30 секунд (7.08.2011 - 20:57) neadekvat написал(а):
YoYo, зависит от браузера.
В Опере, например, правой кнопкой (или F12) -> edit site preferences (Настройки для сайта в русской локализации, кажется) -> Cookies.
В Опере, например, правой кнопкой (или F12) -> edit site preferences (Настройки для сайта в русской локализации, кажется) -> Cookies.
Спустя 4 минуты, 58 секунд (7.08.2011 - 21:02) YoYo написал(а):
Нашёл, но куков для test1.ru там нет...
Спустя 3 минуты, 44 секунды (7.08.2011 - 21:06) neadekvat написал(а):
Цитата (YoYo @ 7.08.2011 - 22:02) |
Нашёл, но куков для test1.ru там нет... |
Вообще нет? Не может ж быть такого, раз у тебя на одной странице кукисы есть, то они там должны остаться.
Может, где-то уничтожаешь их, или домен меняешь?
Спустя 3 минуты, 48 секунд (7.08.2011 - 21:10) YoYo написал(а):
Цитата (neadekvat @ 7.08.2011 - 18:06) | ||
Вообще нет? Не может ж быть такого, раз у тебя на одной странице кукисы есть, то они там должны остаться. Может, где-то уничтожаешь их, или домен меняешь? |
Нет, я весь код скинул ><
Спустя 1 минута, 17 секунд (7.08.2011 - 21:11) neadekvat написал(а):
Ну, а когда заходишь на страницу, где присваиваешь значения сессионным переменным, есть кука?
Спустя 2 минуты, 39 секунд (7.08.2011 - 21:14) YoYo написал(а):
Добавил:
Появились куки на домен test1.ru >< И вот такие нотисы:

А вот так выглядит эта самая кука:

ini_set("session.use_cookies", "1");
ini_set("session.use_trans_sid", "1");
Появились куки на домен test1.ru >< И вот такие нотисы:

А вот так выглядит эта самая кука:

Спустя 33 минуты, 38 секунд (7.08.2011 - 21:47) YoYo написал(а):
Цитата (neadekvat @ 7.08.2011 - 18:11) |
Ну, а когда заходишь на страницу, где присваиваешь значения сессионным переменным, есть кука? |
А это как проверить?!
Спустя 35 минут, 36 секунд (7.08.2011 - 22:23) YoYo написал(а):
Разобрался! :lol:
neadekvat, спасибо большое за то что долго и упорно пытался мне помочь ^_^ (+ уже давал)
Просто добавил
И в ucp.php, всё заработало! ><
neadekvat, спасибо большое за то что долго и упорно пытался мне помочь ^_^ (+ уже давал)
Просто добавил
ini_set("session.use_cookies", "1");
ini_set("session.use_trans_sid", "1");
И в ucp.php, всё заработало! ><
Спустя 1 час, 3 минуты, 20 секунд (7.08.2011 - 23:26) neadekvat написал(а):
Цитата (YoYo @ 7.08.2011 - 23:23) |
спасибо большое за то что долго и упорно пытался мне помочь ![]() |
Ага, в самый ответственный момент я успешно свалил. Но оно и к лучшему - когда долго не отвечают, есть время поискать решение самому, в чем ты не раз уже убедился.
Спустя 42 минуты, 31 секунда (8.08.2011 - 00:09) YoYo написал(а):
Ну так то да, уже не первый раз методом проб и ошибок решаю проблему ^_^ Но без вашей помощи, врядли что нибудь получилось бы.
Новая задача!
Хочу сделать создание нового аккаунта через UCP, т.е. нужно создать файл с данными игрока. Данные выглядят так:
Как создать файл я знаю (file с параметром w), а вот как записать в него данные аля:
Это уже проблема... Жду помощи от гуpy ><
Новая задача!
Хочу сделать создание нового аккаунта через UCP, т.е. нужно создать файл с данными игрока. Данные выглядят так:
pPass = 123456
pLock = 0
pALevel = 3
pLevel = 3
pRespect = 7
pSkin = 120
pFrac = 12
pRank = 7
pJob = 4
pSJob = 1
pLicA = 0
pLicB = 1
pLicC = 0
pLicD = 0
pGunLic = 0
pWLevel = 0
pJailTime = 0
pMuteTime = 0
pMoney = 14400
pMaterials = 0
pHMaterials = 0
pDrugs = 0
pHDrugs = 0
pProds = 0
pPackets = 0
pHouse = 0
pBussines = 0
pWeapon = 24
pAmmo = 100
Как создать файл я знаю (file с параметром w), а вот как записать в него данные аля:
ключ = параметр
Это уже проблема... Жду помощи от гуpy ><
Спустя 9 минут, 42 секунды (8.08.2011 - 00:19) neadekvat написал(а):
Получать данные из формы умеешь?
Спустя 10 минут, 8 секунд (8.08.2011 - 00:29) YoYo написал(а):
Цитата (neadekvat @ 7.08.2011 - 21:19) |
Получать данные из формы умеешь? |
Да


Спустя 19 минут, 16 секунд (8.08.2011 - 00:48) neadekvat написал(а):
Ну так и отлично.
Называешь поля формы также, как у тебя называются значения в файле.
Для удобства можно сделать так:
Собственно, имя файла должно быть уникальным. Не знаю, как они у тебя там в каталоге храняться и по какому принципу именуются.
Называешь поля формы также, как у тебя называются значения в файле.
Для удобства можно сделать так:
// В нужно последовательности, все твои значения
$isset_keys = array('pAmmo', 'pWeapon', ... );
foreach ($isset_keys as $val)
{
$data[] = "$val = {$_POST[$val]}";
}
$data = implode("\n", $data);
file_put_contents('file.ini', $data);
Собственно, имя файла должно быть уникальным. Не знаю, как они у тебя там в каталоге храняться и по какому принципу именуются.
Спустя 10 минут, 8 секунд (8.08.2011 - 00:58) YoYo написал(а):
Имена файлов соответствуют игровому нику пользователя.
Дело в том что пользователь должен задавать только Ник (имя_файла.ini) и Пароль (pPass = пароль), а остальные значения идут по умолчанию одни и теже для всех новых аккаунтов...
Дело в том что пользователь должен задавать только Ник (имя_файла.ini) и Пароль (pPass = пароль), а остальные значения идут по умолчанию одни и теже для всех новых аккаунтов...
Спустя 7 минут, 46 секунд (8.08.2011 - 01:06) neadekvat написал(а):
Ок, в чем проблема?
Создай файл default.ini
Конечно же, это огромная дыра. Так как логин пользователя используется в прямой работе с файловой системой, его надо фильтровать. Например, позволить использовать только английские символы, тире и точки,арабская вязь нижнее подчеркивание.
Создай файл default.ini
if ( ! file_exists($_POST['login'])) {
$data = parse_ini_file('default.ini');
$data['pPass'] = $_POST['pass']; // А _POST уже от пользователя
$data = implode("\n", $data);
file_put_contents("$_POST[login].ini", $data);
} else {
echo 'Login not available';
}
Конечно же, это огромная дыра. Так как логин пользователя используется в прямой работе с файловой системой, его надо фильтровать. Например, позволить использовать только английские символы, тире и точки,
Спустя 13 минут, 37 секунд (8.08.2011 - 01:19) YoYo написал(а):
Это рег. выражение писать надо? (чтобы разрешить использовать в нике опр. символы)
Спустя 3 минуты, 23 секунды (8.08.2011 - 01:23) neadekvat написал(а):
Цитата (YoYo @ 8.08.2011 - 02:19) |
Это рег. выражение писать надо? (чтобы разрешить использовать в нике опр. символы) |
Да, я бы выбрал этот путь.
Спустя 3 минуты, 28 секунд (8.08.2011 - 01:26) YoYo написал(а):
Цитата (neadekvat @ 7.08.2011 - 22:23) | ||
Да, я бы выбрал этот путь. |
Очередной спасибон! Пойду пытаться...
Спустя 9 минут, 11 секунд (8.08.2011 - 01:35) YoYo написал(а):
Вроди бы сделал всё как описано, но записывает данные без ключей.
Вот файл reg.php:
Вот как он записывает:
Вот файл reg.php:
<?php
include "inc/cfg.php";
if(!isset($_POST['submit']))
{
echo "<form method = 'post'>
Игровой Ник:<br /><input name = 'login' type = 'text' size = '18' maxlength = '32'><br />
Пароль:<br /><input name = 'password' type = 'password' size = '18' maxlength = '32'><br />
<input name = 'submit' type = 'hidden'>
<input type = 'submit' value = 'Регистрация'></form>";
echo "<a href = 'index.php'>Назад</a>";
}
else
{
if(file_exists($path . "/" . $_SESSION['username'] . ".ini")) exit("Error: Игрок с таким логином уже существует (#5)");
$def = parse_ini_file($path . "/default.ini");
$def['pPass'] = $_POST['key'];
$def = implode("\n", $def);
file_put_contents($path . "/" . $_POST['login'] . ".ini", $def);
echo "Новый аккаунт успешно создан!<br />";
echo "<a href = 'index.php'>Назад</a>";
}
Вот как он записывает:
0
0
0
0
23
0
0
0
0
0
0
0
0
0
0
0
0
1000
0
0
0
0
0
0
0
0
0
0
Спустя 9 часов, 1 минута, 57 секунд (8.08.2011 - 10:37) YoYo написал(а):
Сделал регистрацию по примеру изменения пароля ><
Вот код:
Вот код:
<?php
include "inc/cfg.php";
if(!isset($_POST['submit']))
{
echo "Регистрация";
echo "<form method = 'post'>
Игровой Ник:<br /><input name = 'login' type = 'text' size = '18' maxlength = '32'><br />
Пароль:<br /><input name = 'password' type = 'password' size = '18' maxlength = '32'><br />
<input name = 'submit' type = 'hidden'>
<input type = 'submit' value = 'Регистрация'></form>";
echo "<a href = 'index.php'>Назад</a>";
}
else
{
if(file_exists($path . "/" . $_SESSION['login'] . ".ini")) exit("Error: Игрок с таким логином уже существует (#5)");
else if(!isset($_POST['login']) || !isset($_POST['password'])) exit("Error: Ошибка регистрации (#6)");
$def = parse_ini_file($path . "/default.ini");
$def['pPass'] = $_POST['password'];
foreach($def as $key => $value) $newacc[] = "$key = $value\r\n";
file_put_contents($path . "/" . $_POST['login'] . ".ini", implode("\n", $newacc));
echo "Новый аккаунт успешно создан!<br />";
echo "<a href = 'index.php'>Назад</a>";
}
?>
Цитата |
Но оно и к лучшему - когда долго не отвечают, есть время поискать решение самому, в чем ты не раз уже убедился. |
Очередной раз убедился...
Спустя 6 минут, 36 секунд (8.08.2011 - 10:44) neadekvat написал(а):
Цитата (YoYo @ 8.08.2011 - 11:37) |
Очередной раз убедился |
^__^
Спустя 1 час, 34 минуты, 58 секунд (8.08.2011 - 12:19) YoYo написал(а):
А вот такой вопрос, как сделать чтобы некоторые ключи не выводились в статистику?
Вот код вывода самой статистики:
Как сделать чтобы допустим pMoney = $value пропускалось и не выводилось ><
Вроде сделал xD
Вот код вывода самой статистики:
$acc = parse_ini_file($path . "/" . $_SESSION['username'] . ".ini");
echo "Вы зашли в аккаунт: " . $_SESSION['username'] . "<br />";
foreach($acc as $key => $value)
{
if($key == "pPass") $value = "******";
else if($key == "pLock") $value = StatName($value);
else if($key == "pSkin") $value = "<img src = 'skins/Skin_$value.png' />";
else if($key == "pFrac") $value = FracName($value);
else if($key == "pJob") $value = JobName($value);
else if($key == "pLicA") $value = StatName($value);
else if($key == "pLicB") $value = StatName($value);
else if($key == "pLicC") $value = StatName($value);
else if($key == "pLicD") $value = StatName($value);
else if($key == "pGunLic") $value = StatName($value);
else if($key == "pWeapon") $value = WeaponName($value);
echo $vars[$key] . ": " . $value . "<br />";
}
Как сделать чтобы допустим pMoney = $value пропускалось и не выводилось ><
Вроде сделал xD
if($key == "pMoney") continue;
Спустя 27 минут, 27 секунд (8.08.2011 - 12:46) neadekvat написал(а):
YoYo, есть возможность избавиться от кучи elseif
foreach($acc as $key => $value)
{
if($key == 'pMoney')
continue;
switch ($key) {
case 'pPass':
$value = "******";
break;
case 'pJob':
$value = JobName($value);
break;
case 'pFrac':
$value = FracName($value);
break;
case 'pWeapon':
$value = WeaponName($value);
break;
default:
$value = StatName($value);
}
echo $vars[$key] . ": " . $value . "<br />";
}
Спустя 1 час, 13 минут, 22 секунды (8.08.2011 - 14:00) YoYo написал(а):
Цитата (neadekvat @ 8.08.2011 - 09:46) |
YoYo, есть возможность избавиться от кучи elseifforeach($acc as $key => $value) |
Спасибо

Спустя 1 день, 32 минуты, 53 секунды (9.08.2011 - 14:33) YoYo написал(а):
Скажите, а как можно проверить наличие нужного значение в массиве $array.
Допустим у нас есть массив $array с 2 значениями, "a" и "b".
Вот как проверить есть ли в нём значение "a" и под каким оно индексом?!
P.S. Учитывая то что массив можно изменяться в размере, т.е. может быть и больше и меньше значений.
Допустим у нас есть массив $array с 2 значениями, "a" и "b".
Вот как проверить есть ли в нём значение "a" и под каким оно индексом?!
P.S. Учитывая то что массив можно изменяться в размере, т.е. может быть и больше и меньше значений.