Чтение с файла и запись. -
Romz - 14.07.2013
Помогите сделать нормальную запись и чтение с файла. Я вот сделал такое:
PHP Code:
AddEmail(email[]) {
new File: file = fopen("email.ini",io_append), Str[64];
format(Str,sizeof(Str),"%s\n",email);
fwrite(file,Str);
return fclose(file);
}
GetEmail(email[]) {
new File:file = fopen("email.ini",io_read), data[64];
while(fread(file,data) > 0) {
if(strcmp(data,email,true) == 0) return 1;
}
fclose(file);
return 0;
}
Проверку делаю таким способом:
PHP Code:
new Str[64];
format(Str,sizeof(Str),"%s\n",inputtext);
if(GetEmail(Str) == 1) return Kick(playerid);
Но оно как то не совсем корректно работает. Что бы проверить нужно еще в конец текста добавлять \n
Можете помочь как сделать более аккуратней и что бы работало нормально?
Re: Чтение с файла и запись. -
stabker - 14.07.2013
Можно создать папку, а в нее помещать файлы. Название файла - емейл. Намного быстрее будет. На счет минусов - сказать не могу, может и есть...
Re: Чтение с файла и запись. -
Romz - 14.07.2013
Quote:
Originally Posted by stabker
Можно создать папку, а в нее помещать файлы. Название файла - емейл. Намного быстрее будет. На счет минусов - сказать не могу, может и есть...
|
мне бы хотелось реализовать все через один файл. В принципе сделал но насчет чтения не совсем нрава мне проверка. Думаю может как то помогут код до ума довести..
Re: Чтение с файла и запись. -
stabker - 14.07.2013
Не чего тут уже до ума доводить, либо удаляйте спец-символы, из полученной строки, либо добавляйте их в конец емейла, который нужно найти. Когда файл будет хорошо забит, сервер будет подвисать при поиске мыла.
А какая разница сколько файлов? Это вряд ли как-то повлияет вам (если конечно не ограничит задуманный вами функционал).
Re: Чтение с файла и запись. -
-Stranger- - 14.07.2013
Kolstin, нельзя скидывать все мыла в один файл.
Тут 2 варианта:
1) Писать мыло в аккаунт пользователя. Что есть более логичными и правильным.
2) Делать на MySQL. Таблица типа: "id | nick | email", но это немного сложнее чем первый вариант...
Re: Чтение с файла и запись. -
White_116 - 14.07.2013
Как насчёт встроенного sql?
Re: Чтение с файла и запись. -
Romz - 14.07.2013
Quote:
Originally Posted by White_116
Как насчёт встроенного sql?
|
Можно по подробней? Это типа файл в папке scriptfiles с названием .sql типа типа как бд?
Quote:
Originally Posted by -Stranger-
Kolstin, нельзя скидывать все мыла в один файл.
Тут 2 варианта:
1) Писать мыло в аккаунт пользователя. Что есть более логичными и правильным.
2) Делать на MySQL. Таблица типа: "id | nick | email", но это немного сложнее чем первый вариант...
|
Да была идея но опыта работы с MySQL нету и это усугубляет ситуацию..
Re: Чтение с файла и запись. -
White_116 - 14.07.2013
Не типо. Это и есть бд. На вики все функции расписаны. Так же примеров на форуме достаточно, пошурши забугорные разделы.
Re: Чтение с файла и запись. -
-Stranger- - 14.07.2013
White_116, это случаем не:
https://sampwiki.blast.hk/wiki/SQLite
Как-то я это упустил это... нада ознакомиться...
Re: Чтение с файла и запись. -
White_116 - 14.07.2013
Quote:
Originally Posted by -Stranger-
|
Оно самое.
Re: Чтение с файла и запись. -
Romz - 14.07.2013
Quote:
Originally Posted by White_116
Не типо. Это и есть бд. На вики все функции расписаны. Так же примеров на форуме достаточно, пошурши забугорные разделы.
|
Ага, понятно. Но тут есть минус в том что мне еще прийдеться арендовать SQL Сервер...
Я слышал что есть такая штука что то типа бд но только она храниться не на SQL сервере а в папке scriptfiles в формате .db или что то того. Это что такое? Плагин или инклуд какой то? Есть где нибуть описание функций и т.д?
Re: Чтение с файла и запись. -
Alexander_Petrov - 14.07.2013
Есть такое, SQL называется. Ты тролль или реально не заметил, что тебе рассказали об этом в сообщении, которое ты процитировал?
Re: Чтение с файла и запись. -
Romz - 14.07.2013
Quote:
Originally Posted by Alexander_Petrov
Есть такое, SQL называется. Ты тролль или реально не заметил, что тебе рассказали об этом в сообщении, которое ты процитировал?
|
Извиняюсь не дочитался. Еще такой вопрос(надеюсь последний) что лучше использовать если стоит выбор между SQLite И mxINI?
Re: Чтение с файла и запись. -
-Stranger- - 14.07.2013
Kolstin, ну вообще база будет всегда быстрее и эффективнее файлов, даже начать с того, что ты не перебираешь весь файл в поисках информации, а делаешь запрос, и уже проблема сервера предоставить готовую информацию, причём структура самой базы позволяет выдать эту самую информацию гораздо быстрее. Конечно если в файле храниться одно значение, то смысла самой БД отпадает, но если предполагаться наличии большого кол-ва информации, то определённо БД.
Re: Чтение с файла и запись. -
Romz - 14.07.2013
Quote:
Originally Posted by -Stranger-
Kolstin, ну вообще база будет всегда быстрее и эффективнее файлов, даже начать с того, что ты не перебираешь весь файл в поисках информации, а делаешь запрос, и уже проблема сервера предоставить готовую информацию, причём структура самой базы позволяет выдать эту самую информацию гораздо быстрее. Конечно если в файле храниться одно значение, то смысла самой БД отпадает, но если предполагаться наличии большого кол-ва информации, то определённо БД.
|
А если использовать SQLite и записывать Email в аккаунты сам то можно ли будет сделать проверку (использовался ли емейл при реге) считать инфу со всех аккаунтов при проверке. Это же уже в таблицах будет и я так понял что это сделать - можно?
Re: Чтение с файла и запись. -
Den_Bellik - 14.07.2013
Quote:
Originally Posted by Kolstin
А если использовать SQLite и записывать Email в аккаунты сам то можно ли будет сделать проверку (использовался ли емейл при реге) считать инфу со всех аккаунтов при проверке. Это же уже в таблицах будет и я так понял что это сделать - можно?
|
да, просто почитай про запросы или посмотри примеры.
вот пример
PHP Code:
SELECT * FROM `таблица аккаунтов` WHERE `Email` = '%s'
Email - название столбца в базе.
Re: Чтение с файла и запись. -
-Stranger- - 15.07.2013
Если дословно "считать инфу со всех аккаунтов", то:
Code:
SELECT `Email` FROM `таблица аккаунтов`
На выходе будет массив всех мыл из таблицы.
В запросе можно использовать критерии, например:
Code:
SELECT `Email` FROM `таблица аккаунтов` WHERE `sex` = 'male'
На выходе будет массив всех мыл из таблицы, у которых пол = male.
Так-же можно сделать сортировку, например по нику:
Code:
SELECT `Email` FROM `таблица аккаунтов` WHERE `sex` = 'male' ORDER BY `nick` ASC
На выходе будет отсортированный по ячейки `nick` массив (по возрастанию) всех мыл из таблицы, у которых пол = male.
Ещё полезная часть запроса это LIMIT, например:
Code:
SELECT `Email` FROM `таблица аккаунтов` LIMIT 10
На выходе будет массив первых 10 мыл из таблицы.
Все предложенные варианты можно комбинировать как угодно, для достижения нужного результата.
Удачи
Re: Чтение с файла и запись. -
White_116 - 15.07.2013
Quote:
Originally Posted by Kolstin
Ага, понятно. Но тут есть минус в том что мне еще прийдеться арендовать SQL Сервер...
Я слышал что есть такая штука что то типа бд но только она храниться не на SQL сервере а в папке scriptfiles в формате .db или что то того. Это что такое?
|
Это и есть оно, ничего арендовать не нужно!
Re: Чтение с файла и запись. -
stabker - 15.07.2013
Quote:
Originally Posted by Kolstin
А если использовать SQLite и записывать Email в аккаунты сам то можно ли будет сделать проверку (использовался ли емейл при реге) считать инфу со всех аккаунтов при проверке. Это же уже в таблицах будет и я так понял что это сделать - можно?
|
SELECT `ник/ид` FROM `таблица аккаунтов` WHERE `Email`= 'мыло' LIMIT 1
Если вернет запрашиваемые данные (ник/ид), значит емейл занят.
Re: Чтение с файла и запись. -
-Stranger- - 15.07.2013
stabker, мне кажется лучше тогда так: "SELECT COUNT(*) FROM `таблица аккаунтов` WHERE `Email`= 'мыло'". Вернёт кол-во записей, числом.