Методическая публикация "Педагогические приемы в процессе освоения учащимися раздела передача данных на сервер"
учебно-методическое пособие по информатике и икт (10 класс)

Разработка методических рекомендации по написанию учащимися программного кода программы отправки файлов на сервер в автоматическом режиме без FTP протокола

Скачать:

ВложениеРазмер
Microsoft Office document icon protokol_bez_ftr.doc298.5 КБ

Предварительный просмотр:

Протокол передачи данных без FTP протокола

Цель:

   1)Сделать автоматическую передачу данных без протокола FTP.

   2)Сделать быструю авторизацию.

   3)Сделать загрузку файлов на сервера, а так же с сервера.

   4)Сделать только ту отправку файлов, которые нужно.

   5)Сделать пароли на файлы.

Задачи:

   1)Изучить язык програмирования C# и php.

   2)Изучить библиотеку System.IO и Ionic.Zip для C#. 

   3)Изучить библиотеку RedBeanPHP для PHP. 

   4)Создать систему защиты файлов от кражи.

   5)Создать систему отправки файлов на сервер без FTP протокола.

   6)Создать систему защиты файлов от кражи.

   7)Создать систему для отправки смс на телефон.

Программные средства: Visual Studio и notepad++.

Данная программа была создана для отправки файлов на сервер в автоматическом режиме, что-бы нас не отвлекать от кодинга.
Идея проекта:
     Сейчас мы разрабатываем игру Var Squad - военный шутер с элементами Roles Play... и нам нужно было сделать так, что-бы не отвлекаясь не на какие программы у нас загружались наши наработки на сервер...

Как создавался проект

На стороне клиента:  
   1)Сначала нужно было сделать сбор файлов в кучу

    2)После добавить их в архив и отправить на сервер

На стороне сервера:  
   1)Нужно принимать файлы и менять на них имя и пароль.
   2)После нужно добавить это все в бд.

Как работает:

   1)Сначала  сделали  копирование всех файлов в одну папку.

   2)После эту папку добавляли  в архив и этот архив отправлялся на сервер.

    3)Сервер его принимал и менял на нем имя на "прошлое имя + дата".

    3) На сервере менялся пароль на архив и все это добавлялось в бд.

Скриншоты:

Какие были проблемы и как они решались

Проблеема:

R - проблема.

A -Решение.

На стороне клиента:

     1.
   *R - Добавление масива из ListBox в конфиг.

    *A - Решение было простым, вместо foreach мы воспользовались for.

На стороне сервера:  
   *R - Проблема с базой данных в php 5.6.
   *A - Была сменена версия php на 7.0 и подключена библиотека RB MySql.

Заключение

Данный софт безопасный  на 99% для отправки данных на сервер ,  может автоматически отправлять файлы на сервер и скачивать от туда, может ставить пароль на архив на стороне сервера .

Список литературы

    *Язык програмирования C# - https://metanit.com/sharp/tutorial/ 
   *Язык програмирования PHP -
https://www.programulin.ru/

    *Хостинг, который я использую - https://hoster.ru

    *Библиотека Ionic.Zip - https://www.nuget.org/packages/Ionic.Zip/
   *Библиотека RedBeanPHP  -
https://redbeanphp.com
   *Форум програмистов -
http://www.cyberforum.ru/

    *Visual Studio - https://visualstudio.microsoft.com/ru/

    *NotepadPlusPlus - https://notepad-plus-plus.org/

    *Сервис для отправки SMS - https://smsc.ru

    *Наш репазиторий на GitHab - https://github.com/Maksim360/No_FTP
   *Скачать наш софт -
http://varsquad.ru/no_ftp


Приложение N1

C#


Registation

using System;

using System.Collections.Generic;

using System.Collections.Specialized;

using System.Linq;

using System.Net;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

namespace FTP_Client_from_Maxim360

{

    ///

    /// Логика взаимодействия для MainWindow.xaml

    ///

    public partial class RegistationUsers : Window

    {

        SaveData saveData = new SaveData(); //экземпляр класса с настройками

        public RegistationUsers()

        {

            InitializeComponent();

        }

        private void OnSizeChanged(object sender, SizeChangedEventArgs e)

        {

            double screenHeight = SystemParameters.FullPrimaryScreenHeight;

            double screenWidth = SystemParameters.FullPrimaryScreenWidth;

            this.Top = (screenHeight - this.ActualHeight) / 2;

            this.Left = (screenWidth - this.ActualWidth) / 2;

        }

        private void RegistrationServer()

        {

            string isSaveIP = "0";

            if (!IsValid(Login.Text, 6, 30, "Логин") || !IsValid(Password.Password, 8, 30, "Пароль")) return;

            if (!isLicenseChek.IsChecked.Value) { Message("INFO", "Вы не согласились с лицензиями"); return; }

            if (IsSaveIp.IsChecked.Value) isSaveIP = "1";

            else isSaveIP = "0";

            string[] NameComand = { "login", "password", "IsSaveIP" , "email", "phone"};

            string[] SendComand = { Login.Text, Password.Password, isSaveIP, email.Text, phone.Text};

            string result = Send("MainRegistration", NameComand, SendComand, Config.url[0]);

            if (string.Compare(result, "64677") == 0)

            {

                WriteSetting();

                AuthorizationUsers authorizationUsers = new AuthorizationUsers();

                authorizationUsers.Show();

                this.Hide();

            }

            else

            {

                Message("REG INFO", result);

            }

        }

        bool IsValid(string value, int min, int max, string field) // валидация имени и пароля

        {

            if (value.Length < min)

            {

                Message("INFO", "В поле [ " + field + " ] недостаточно символов, нужно минимум [ " + min + " ]");

                return false;

            }

            else if (value.Length > max)

            {

                Message("INFO", "В поле [ " + field + " ] допустимый максимум символов, не более [ " + max + " ]");

                return false;

            }

            else if (System.Text.RegularExpressions.Regex.IsMatch(value, @"[.@]"))

            {

                Message("INFO", "В поле [ " + field + " ] содержаться недопустимые символы.");

                return false;

            }

            return true;

        }

        void Message(string Caption, string message)

        {

            System.Windows.Forms.MessageBox.Show(message, Caption, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);

        }

        public static string Send(string command, string[] NameComand, string[] SendComand, string url)

        {

            WebClient web = new WebClient();

            NameValueCollection dataToSend = new NameValueCollection();

            //dataToSend["PublicApiKey"] = publicApiKey;

            dataToSend["command"] = command;

            for (int x = 0; x < SendComand.Length; x++)

            {

                dataToSend[NameComand[x]] = SendComand[x];

            }

            return Encoding.UTF8.GetString(web.UploadValues(url, dataToSend));

        }

        #region Settings action

        //Запись в файл...

        private void WriteSetting()

        {

            try

            {

                saveData.ReadXml();

                saveData.Fields.Login = Login.Text; //Сохраняем логин

                saveData.Fields.Password = Password.Password; //Сохраняем пароль

                saveData.WriteXml();

            }

            catch

            { }

        }

        #endregion

        private void IsReg_Click(object sender, RoutedEventArgs e)

        {

            AuthorizationUsers authorizationUsers = new AuthorizationUsers();

            authorizationUsers.Show();

            this.Hide();

        }

        private void RegBttn_Click(object sender, RoutedEventArgs e)

        {

            RegistrationServer();

        }

    }

}

AcrivateUsers

using System;

using System.Collections.Generic;

using System.Collections.Specialized;

using System.Linq;

using System.Net;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Shapes;

namespace FTP_Client_from_Maxim360

{

    ///

    /// Логика взаимодействия для CodeDostup.xaml

    ///

    public partial class CodeDostup : Window

    {

        SaveData saveData = new SaveData(); //экземпляр класса с настройками

        public CodeDostup()

        {

            InitializeComponent();

        }

        private void OnSizeChanged(object sender, SizeChangedEventArgs e)

        {

            double screenHeight = SystemParameters.FullPrimaryScreenHeight;

            double screenWidth = SystemParameters.FullPrimaryScreenWidth;

            this.Top = (screenHeight - this.ActualHeight) / 2;

            this.Left = (screenWidth - this.ActualWidth) / 2;

        }

        bool IsValid(string value, int min, int max, string field) // валидация имени и пароля

        {

            if (value.Length < min)

            {

                Message("INFO", "В поле [ " + field + " ] недостаточно символов, нужно минимум [ " + min + " ]");

                return false;

            }

            else if (value.Length > max)

            {

                Message("INFO", "В поле [ " + field + " ] допустимый максимум символов, не более [ " + max + " ]");

                return false;

            }

            else if (System.Text.RegularExpressions.Regex.IsMatch(value, @"[.@]"))

            {

                Message("INFO", "В поле [ " + field + " ] содержаться недопустимые символы.");

                return false;

            }

            return true;

        }

        static void Message(string Caption, string message)

        {

            System.Windows.Forms.MessageBox.Show(message, Caption, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);

        }

        private void AuthorizationServer()

        {

            if (!IsValid(CodeDostupe.Password, 5, 5, "Код доступа")) return;

            saveData.ReadXml();

            string[] NameComand = { "CodeDostup", "login", "password" };

            string[] SendComand = { CodeDostupe.Password, saveData.Fields.Login, saveData.Fields.Password };

            string result = Send("RegistrationCodeDostupe", NameComand, SendComand, Config.url[0]);

            if (string.Compare(result, "98568") == 0)

            {

                MainWindow mainWindow = new MainWindow();

                mainWindow.Show();

                this.Hide();

            }

            else

            {

                Message("Authorization", result);

            }

        }

        public static string Send(string command, string[] NameComand, string[] SendComand, string url)

        {

            try

            {

                WebClient web = new WebClient();

                NameValueCollection dataToSend = new NameValueCollection();

                dataToSend["command"] = command;

                for (int x = 0; x < SendComand.Length; x++)

                {

                    dataToSend[NameComand[x]] = SendComand[x];

                }

                return Encoding.UTF8.GetString(web.UploadValues(url, dataToSend));

            }

            catch(Exception e) { return e.ToString(); }

        }

        private void OkBttn_Click(object sender, RoutedEventArgs e)

        {

            AuthorizationServer();

        }

        private void ExitBttn_Click(object sender, RoutedEventArgs e)

        {

            saveData.ReadXml();

            saveData.Fields.AutoAuthorization = false;

            saveData.WriteXml();

            AuthorizationUsers windowAuthorization = new AuthorizationUsers();

            windowAuthorization.Show();

            this.Hide();

        }

    }

}


Autorization


using System;

using System.Collections.Generic;

using System.Collections.Specialized;

using System.Linq;

using System.Net;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Shapes;

namespace FTP_Client_from_Maxim360

{

    ///

    /// Логика взаимодействия для AuthorizationUsers.xaml

    ///

    public partial class AuthorizationUsers : Window

    {

        SaveData saveData = new SaveData(); //экземпляр класса с настройками

        public AuthorizationUsers()

        {

            InitializeComponent();

            //update(); //Надо фиксить(проблема с получение данных)...

            ReadSetting();

        }

        private void OnSizeChanged(object sender, SizeChangedEventArgs e)

        {

            double screenHeight = SystemParameters.FullPrimaryScreenHeight;

            double screenWidth = SystemParameters.FullPrimaryScreenWidth;

            this.Top = (screenHeight - this.ActualHeight) / 2;

            this.Left = (screenWidth - this.ActualWidth) / 2;

        }

        private void AuthorizationServer()

        {

            if (!IsValid(Login.Text, 6, 30, "Логин") || !IsValid(Password.Password, 8, 30, "Пароль")) return;

            string[] NameComand = { "login", "password" };

            string[] SendComand = { Login.Text, Password.Password };

            string result = Send("MainAuthorization", NameComand, SendComand, Config.url[0]);

            if (string.Compare(result, "login") == 0)

            {

                WriteSetting();

                MainWindow mainWindow = new MainWindow();

                mainWindow.Show();

                this.Hide();

            }

            else if (string.Compare(result, "Неверно введен пароль!") == 0) { WriteSetting(); Message("Authorization", result); }

            else if (string.Compare(result, "53674") == 0)

            {

                Message("Authorization", "У вас не активирован аккаунт, для активации нажмите 'ок'.");

                CodeDostup codeDostup = new CodeDostup();

                codeDostup.Show();

                this.Hide();

            }

            else

            {

                Message("Authorization", result);

            }

        }

        bool IsValid(string value, int min, int max, string field) // валидация имени и пароля

        {

            if (value.Length < min)

            {

                Message("INFO", "В поле [ " + field + " ] недостаточно символов, нужно минимум [ " + min + " ]");

                return false;

            }

            else if (value.Length > max)

            {

                Message("INFO", "В поле [ " + field + " ] допустимый максимум символов, не более [ " + max + " ]");

                return false;

            }

            else if (System.Text.RegularExpressions.Regex.IsMatch(value, @"[.@]"))

            {

                Message("INFO", "В поле [ " + field + " ] содержаться недопустимые символы.");

                return false;

            }

            return true;

        }

        private void AuthorizationBtnn_Click(object sender, RoutedEventArgs e)

        {

            AuthorizationServer();

        }

        void update()

        {

            string[] NameComand = {

                "version"

            };

            string[] SendComand = {

               Config.version

            };

            string VersionServer = Send("CheckUpdate", NameComand, SendComand, Config.url[1]);

            string DescriptionVersionServer = Send("CheckUpdate_Description", NameComand, SendComand, Config.url[1]);

            string LinkNewVersion = Send("CheckUpdate_Link", NameComand, SendComand, Config.url[1]);

            MessageBox.Show(VersionServer + " "+ DescriptionVersionServer + " " + LinkNewVersion);

            if (VersionServer == Config.version) { ReadSetting(); }

            else

            {

                if (System.Windows.Forms.MessageBox.Show("Новая версия - " + VersionServer + "n/" + "---Описание---" + "n/" + DescriptionVersionServer, "Update", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.OK)

                {

                    WebClient client = new WebClient();

                    client.DownloadFile(LinkNewVersion, "Temp/No_FTP.exe");

                    ReadSetting();

                }

                else ReadSetting(); //Продолжаем обнову..

                                   //System.Diagnostics.Process.Start("Roles Play Program.exe");//Запускаем Updater

            }

        }

        void Message(string Caption, string message)

        {

            System.Windows.Forms.MessageBox.Show(message, Caption, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);

        }

        public static string Send(string command, string[] NameComand, string[] SendComand, string url)

        {

            WebClient web = new WebClient();

            NameValueCollection dataToSend = new NameValueCollection();

            //dataToSend["PublicApiKey"] = publicApiKey;

            dataToSend["command"] = command;

            for (int x = 0; x < SendComand.Length; x++)

            {

                dataToSend[NameComand[x]] = SendComand[x];

            }

            //for (int x = 0; x < url.Length; x++) Encoding.UTF8.GetString(wc.UploadValues(@url[x], dataToSend)); //это для того, если 1-н хост забанят, то все останется на втором и третьем хосте

            return Encoding.UTF8.GetString(web.UploadValues(url, dataToSend));

        }

        #region Settings action

        //Запись в файл...

        private void WriteSetting()

        {

            try

            {

                saveData.Fields.Login = Login.Text; //Сохраняем логин

                if (SavePassword.IsChecked.Value)

                {

                    saveData.Fields.Password = Password.Password; //и пароль

                }

                else

                { saveData.Fields.Password = ""; }

                saveData.Fields.SavePassword = SavePassword.IsChecked.Value;

                saveData.Fields.AutoAuthorization = AutoAuthorization.IsChecked.Value;

                saveData.WriteXml();

            }

            catch

            { }

        }

        //Чтение настроек

        private void ReadSetting()

        {

            saveData.ReadXml();

            SavePassword.IsChecked = saveData.Fields.SavePassword;

            AutoAuthorization.IsChecked = saveData.Fields.AutoAuthorization;

            Login.Text = saveData.Fields.Login;

            Password.Password = saveData.Fields.Password;

            if (AutoAuthorization.IsChecked.Value)

            {

                AuthorizationServer();

            }

        }

        #endregion

        private void IsReg_Click(object sender, RoutedEventArgs e)

        {

            RegistationUsers registationUsers = new RegistationUsers();

            registationUsers.Show();

            this.Hide();

        }

    }

}

Main

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Net;

using System.Text;

using System.Timers;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using Ionic.Zip;

using System.Windows.Media.Animation;

using System.Drawing;

using System.Collections.Specialized;

namespace FTP_Client_from_Maxim360

{

    ///

    /// Логика взаимодействия для MainWindow.xaml

    ///

    public partial class MainWindow : Window

    {

        SaveData saveData = new SaveData(); //экземпляр класса с настройками

        string[] _PathFolder;

        string[] _PathFile;

        string _TempPath;

        string loginPC = Environment.UserName;

        string TextTime = "";

        float timerS = 0;

        float timerM = 0;

        float timerH = 0;

        int[] minSecund = { 60, 300, 600, 900, 1800, 3600, 5400, 7200, 14400, 21600, 43200, 86400 };

        public MainWindow()

        {

            InitializeComponent();

            saveData.ReadXml();

            _PathFolder = saveData.Fields._PathFolder;

            _PathFile = saveData.Fields._PathFile;

            _TempPath = saveData.Fields._TempFolder;

            StartMetod();

           

            StartSettings();

        }

        void StartMetod()

        {

            try

            {

                CopyFiles();

                SaveZip();

                UploadFile();

                DelAllFile();

            }

            catch { }

        }

        private void timerTick(object sender, EventArgs e)

        {

            StartMetod();

        }

        private void timer2Tick(object sender, EventArgs e)

        {

            //timerS= DateTime.;

            //AutoUpdateToMin.Content= "Следущие автоматическое обновление через: "+ text;

        }

        void Log(int WhatComand, string message)

        {

            switch (WhatComand)

            {

                case 1:

                    log.Items.Add(DateTime.Now + " Файловая система (OK) - " + message);

                    break;

                case 2:

                    log.Items.Add(DateTime.Now + " Файловая система (ERROR) - " + message);

                    break;

                case 3:

                    log.Items.Add(DateTime.Now + " Серверная система (OK) - " + message);

                    break;

                case 4:

                    log.Items.Add(DateTime.Now + " Серверная система (ERROR) - " + message);

                    break;

                case 9:

                    log.Items.Add("---------------------------------------------------------------------------------------------------------------------");

                    break;

                case 10:

                    log.Items.Add("--------------------------------------------------------ERROR--------------------------------------------------------");

                    break;

                default:

                    log.Items.Add(DateTime.Now + " Произошла неизвесная ошибка : " + message);

                    break;

            }

        }

        void CopyFiles()

        {

            string temp = "";

            if (!Directory.Exists(_TempPath)) Directory.CreateDirectory(_TempPath);

            Log(9, "");

            for (int x = 0; x < _PathFolder.Length; x++)

            {

                try

                {

                    //Создать идентичную структуру папок

                    foreach (string dirPath in Directory.GetDirectories(_PathFolder[x], "*", SearchOption.AllDirectories))

                    {

                        Directory.CreateDirectory(dirPath.Replace(_PathFolder[x], _TempPath + @"\" + new DirectoryInfo(_PathFolder[x]).Name));

                        Log(1, "Пака " + dirPath + " Удачно скопирована");

                        temp = dirPath;

                    }

                }

                catch (Exception e)

                {

                    Log(10, "");

                    Log(2, "Пака " + temp + " не скопирована из-за ошибки : " + e.ToString());

                    Log(10, "");

                }

                try

                {

                    //Копировать все файлы и перезаписать файлы с идентичным именем

                    foreach (string newPath in Directory.GetFiles(_PathFolder[x], "*.*", SearchOption.AllDirectories))

                    {

                        temp = newPath;

                        File.Copy(newPath, newPath.Replace(_PathFolder[x], _TempPath + @"\" + new DirectoryInfo(_PathFolder[x]).Name), true);

                        Log(1, "Файл " + newPath + " Удачно скопирован");

                    }

                }

                catch (Exception e)

                {

                    Log(10, "");

                    Log(2, "Файл " + temp + " не скопирован изза ошибки : " + e.ToString());

                    Log(10, "");

                }

            } //копируем паки

            for (int x = 0; x < _PathFile.Length; x++)    //копируем файлы

            {

                try

                {

                    if (File.Exists(_PathFile[x])) File.Copy(_PathFile[x], _TempPath + @"\" + new FileInfo(_PathFile[x]).Name, true);

                    Log(1, "Файл " + new DirectoryInfo(_PathFolder[x]).Name + " Удачно скопирован");

                }

                catch (Exception e)

                { Log(10, ""); Log(2, "Файл " + new DirectoryInfo(_PathFolder[x]).Name + " не скопирован изза ошибки : " + e.ToString()); Log(10, ""); }

            }

            Log(9, "");

        }

        void SaveZip()

        {

            try

            {

                ZipFile zip = new ZipFile();

                zip.AddDirectory(_TempPath);

                zip.Save(_TempPath + @"/" + loginPC + ".rar"); //создаем архив и запысываем все в него..

                Log(1, "RAR архив по пути `" + _TempPath + "` был удачно создан");

            }

            catch (Exception e) { Log(10, ""); Log(2, "RAR архив по пути `" + _TempPath + "` не создался изза ошибки : " + e.ToString()); Log(10, ""); }

            Log(9, "");

        }

        void UploadFile()

        {

            WebClient webClient = new WebClient();

            try

            {

                //кидаем архив на сервер

                webClient.Headers.Add("Content-Type", "binary/octet-stream");

                webClient.UploadFile(saveData.Fields._url[0], _TempPath + @"/" + loginPC + ".rar");

                Log(3, "Rar архив удачно отправлен на сервер");

            }

            catch (Exception e)

            { Log(10, ""); Log(4, "Rar архив не может быть отправлен на сервер изза ошибки : " + e.ToString()); Log(10, ""); }

            Log(9, "");

        }

        void DelAllFile()

        {

            try

            {

                Directory.Delete(_TempPath, true);

                Log(1, "Удаление временной папки `" + _TempPath + "` прошло успешно");

            }

            catch (Exception e) { Log(10, ""); Log(1, "При удаление временной папки `" + _TempPath + "` произошла ошибка : " + e.ToString()); Log(10, ""); }

            // System.Windows.Application.Current.Shutdown();//Закрываем приложение

            Log(9, "");

        }

        private void UpdateFiles_Click(object sender, RoutedEventArgs e)

        {

            StartMetod();

        }

        private void SettingsBttn_Click(object sender, RoutedEventArgs e)

        {

            TabControls.SelectedIndex = 1;

        }

        private void LogBttn_Click(object sender, RoutedEventArgs e)

        {

            TabControls.SelectedIndex = 2;

        }

        private void HomeBttn_Click(object sender, RoutedEventArgs e)

        {

            TabControls.SelectedIndex = 0;

        }

        void StartSettings()

        {

            //Пути к папкам

            try {

                for (int x = 0; x < _PathFolder.Length; x++)

                    PatshListBox.Items.Add(_PathFolder[x]);

            }

            catch { }

            //Пути к  файлам

            try {

                for (int x = 0; x < _PathFile.Length; x++)

                    PatshListBox.Items.Add(_PathFile[x]);

            }

            catch { }

            //Скрипты сервера

            try

            {

                for (int x = 0; x < saveData.Fields._url.Length; x++)

                    LinkServerListBox.Items.Add(saveData.Fields._url[x]);

            }

            catch { }

            //Папка временных данных...

            try

            {

                TempFolderText.Text = saveData.Fields._TempFolder;

            }

            catch { }

        }

        private void AddPathBttn_Click(object sender, RoutedEventArgs e)

        {

            try

            {

                if (System.IO.File.Exists(PathText.Text)) { }

                else if (System.IO.Directory.Exists(PathText.Text)) { }

                else { MessageBox.Show("Такого пути не существует!"); return; }

                saveData.ReadXml();

                PatshListBox.Items.Add(PathText.Text);

                string[] s = { };

                string[] sc = { };

                for (int i = 0; i < PatshListBox.Items.Count; i++)

                {

                    s[i] = PatshListBox.Items[i].ToString();

                    if (System.IO.File.Exists(PatshListBox.Items[i].ToString()))

                    {

                        s[i] = PatshListBox.Items[i].ToString();

                    }

                    else if (System.IO.Directory.Exists(PatshListBox.Items[i].ToString()))

                    {

                        sc[i] = PatshListBox.Items[i].ToString();

                    }

                    saveData.WriteXml();

                }

            }

            catch { saveData.WriteXml(); }

        }

        private void AddLink_Click(object sender, RoutedEventArgs e)

        {

            try

            {

                string[] NameComand = { "Link" };

                string[] SendComand = { UrlToPHPscript.Text };

                string message = Send("ChekLink", NameComand, SendComand, UrlToPHPscript.Text);

                if (string.Compare(message, "46436") == 0) { } else { MessageBox.Show("Данная ссылка не действительна!"); return; }

                try

                {

                    if (saveData.Fields._url.Contains(UrlToPHPscript.Text))

                    {

                        MessageBox.Show("Данная ссылка уже есть в списке!"); return;

                    }

                }

                catch { }

                saveData.ReadXml();

                int x = 0;

                try

                {

                    LinkServerListBox.Items.Add(UrlToPHPscript.Text);

                    string[] s = new string[LinkServerListBox.Items.Count];

                    for (int i = 0; i < LinkServerListBox.Items.Count; i++)

                    {

                        s[i] = LinkServerListBox.Items[i].ToString();

                    }

                    saveData.Fields._url = s;

                    saveData.WriteXml();

                }

                catch { saveData.WriteXml(); }

            }

            catch { saveData.WriteXml(); }

        }

        public static string Send(string command, string[] NameComand, string[] SendComand, string url)

        {

            try

            {

                WebClient web = new WebClient();

                NameValueCollection dataToSend = new NameValueCollection();

                //dataToSend["PublicApiKey"] = publicApiKey;

                dataToSend["command"] = command;

                for (int x = 0; x < SendComand.Length; x++)

                {

                    dataToSend[NameComand[x]] = SendComand[x];

                }

                return Encoding.UTF8.GetString(web.UploadValues(url, dataToSend));

            }

            catch (Exception e) { return e.ToString(); }

        }

        private void AutoUpdateTimeBox_SelectionChanged(object sender, SelectionChangedEventArgs e)

        {

            int c = AutoUpdateTimeBox.SelectedIndex;

            System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();

            timer.Tick += new EventHandler(timerTick);

            timer.Interval = new TimeSpan(0, 0, minSecund[c]);

            System.Windows.Threading.DispatcherTimer timer2 = new System.Windows.Threading.DispatcherTimer();

            timer2.Tick += new EventHandler(timer2Tick);

            timer2.Interval = new TimeSpan(0, 0, 1);

            timerS = minSecund[c];

            timer.Start();

            timer2.Start();

        }

        private void AddTempFolderBttn_Click(object sender, RoutedEventArgs e)

        {

            try

            {

                saveData.ReadXml();

                if (System.IO.File.Exists(TempFolderText.Text)) { MessageBox.Show("Это не папка, а файл!"); return; }

                else if (System.IO.Directory.Exists(TempFolderText.Text)) saveData.Fields._TempFolder = TempFolderText.Text;

                else { MessageBox.Show("Такого пути не существует!"); return; }

                saveData.WriteXml();

            }

            catch { saveData.WriteXml(); }

        }

    }

}

Приложение N2

PHP
SCRIPT - Login and Reg


   

        require 'db.php';

        include_once 'smsc_api.php';

        

        $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

        date_default_timezone_set('Europe/Moscow');

        $data = $_POST;

    $Time = date("Y-m-d H:i:s");

        $ip = @$_SERVER['REMOTE_ADDR'];

                switch ($data['command']) {

                      case MainAuthorization:

                                        $user = R::findOne('user', 'login = ?', array($data['login']));

                                        if ( $user )

                                        {

                                        //логин существует

                                        if ( password_verify($data['password'], $user ->password) )                        //если пароль совпадает, то нужно авторизовать пользователя

                                        {

                                        

                                        if($user->is_active == "0") {echo "53674"; exit;}

                                        $user ->ip_login = "$user->ip_login;$ip";

                                        $user ->data_login = "$user->date_login;$Time";

                                        R::store($user);

                                        echo "login";

                                        }else

                                        {

                                        $errors[] = "Неверно введен пароль!";

                                        }

                                        

                                        }else

                                        {

                                        $errors[] = 'Пользователь с таким логином не найден!';

                                        }

                                        

                                        if ( ! empty($errors) )

                                        {

                                        //выводим ошибки авторизации

                                        echo array_shift($errors);

                                        }

                            break;                

                case AuthorizationCodeDostup:

                                $CodeDostup = R::findOne('config', 'code_dostup = ?', array($data['CodeDostup']));

                                if ( $CodeDostup )

                                {

                                        $user = R::findOne('user', 'login = ?', array($data['login']));

                                        if ( $user )

                                        {

                                        //логин существует

                                        if ( password_verify($data['password'], $user ->password) )                        //если пароль совпадает, то нужно авторизовать пользователя

                                        {

                                        $user ->ip_session = $ip;

                                        $user ->is_session = '1';

                                        R::store($user);

                                        echo "1";

                                        }else

                                        {

                                        $errors[] = "Неверно введен пароль!";

                                        }

                                        

                                        }else

                                        {

                                        $errors[] = 'Пользователь с таким логином не найден!';

                                        }

                                        

                                        if ( ! empty($errors) )

                                        {

                                        //выводим ошибки авторизации

                                        echo array_shift($errors);

                                        }

                                }

                                else

                                {

                                echo 'Неверно введен код доступа!';

                                }

                break;

                        case MainRegistration:

                                $IsUser = R::findOne('user', 'login = ?', array($data['login']));

                                $phone = $data['phone'];

                                $CodeRandom = substr(str_shuffle($permitted_chars), 5, 5);

                                if ($IsUser)

                                {

                                        echo "Пользователь с таким именем и фамилией уже существует!";

                                        exit;

                                }

                                $user = R::dispense('user');

                                $user->login = $_POST['login'];

                                $user->password = password_hash($data['password'], PASSWORD_DEFAULT);

                                if($data['IsSaveIP'] == "1")

                                {

                                    $user->save_ip = $ip;

                                }

                                else

                                {

                                        $user->save_ip = "";        

                                }

                                $user->email = $_POST['email'];

                                $user->phone = $_POST['phone'];

                                $user->ip_reg = $ip;

                                $user->data_reg = $Time;

                                $user->is_active = '0';

                                $user->code_active = $CodeRandom;

                                R::store($user);

                            $info = file_get_contents('https://smsc.ru/sys/send.php?login=**********&psw=**********&phones='.$phone."&mes=No_FTP. Не кому не показывайте это сообшение!!! Ваш логин:".$data['login']." Ваш Пароль:".$data['password']." Ваш IP:".$IP." Ваш код активации:".$CodeRandom);

                                echo "64677";

                break;        

                        case RegistrationCodeDostupe:

                                $CodeDostup = R::findOne('user', 'code_active = ?', array($data['CodeDostup']));

                                if ( $CodeDostup )

                                {

                                        $user = R::findOne('user', 'login = ?', array($data['login']));

                                        if ( $user )

                                        {

                                        //логин существует

                                        if ( password_verify($data['password'], $user ->password) )

                                        {

                                        $user ->ip_session = $ip;

                                        $user ->is_session = '1';

                                        $user ->is_active = '1';

                                        R::store($user);

                                        echo "98568";

                                        }else

                                        {

                                        $errors[] = "Неверно введен пароль!";

                                        }

                                        

                                        }else

                                        {

                                        $errors[] = 'Пользователь с таким логином не найден!';

                                        }

                                        

                                        if ( ! empty($errors) )

                                        {

                                        //выводим ошибки авторизации

                                        echo array_shift($errors);

                                        }

                                }

                                else

                                {

                                echo 'Неверно введен код доступа!';

                                }

                break;

        }

?>

SCRIPT - Upload


$date_today = date("m.d.y.H.i.s");

$ip = "1";

                switch ($_POST['command']) {

                        case ChekLink:

                                echo '46436'; //для проверки - указына ли ссылка верно...

                break;

        }

$AllowedIP = array("66.130.165.78", "5.182.25.68", "185.247.21.238", "1"); //доступы по ip...

if (in_array($ip, $AllowedIP)) {

       //echo "
Ваш IP подходит для загрузки!!!
";

                

                echo '

';

                echo "

";

                echo "

";

                echo "

";

                echo "

";

                echo "

";

                echo "

";

                echo "

";

        echo "

";

        

        

        $path = __DIR__ . '/uploads/';

    $filelist = array();

        $dir = "uploads";

        $i;

    if($handle = opendir($dir)){

        while(false !== ($file = readdir($handle))) {

        if($file != "." && $file != ".."){

                $i++;

            echo "

";

            echo "

";

            echo "

";

                echo "

";

                $FileData = date("F d Y H:i:s.", filemtime($file));

                $filesize = filesize($file);

                $filetype = filetype($file);

                echo "

";//дата обращения к файлу

        echo "

";//размер

        echo "

"; //тип

                echo "

";

        }

    }

}

}

else

{

         echo "Ваш IP неподходит для загрузки!";

        exit();

}

// Название

$input_name = 'file';

 

// Разрешенные расширения файлов.

$allow = array();

 

// Запрещенные расширения файлов.

$deny = array(

        'phtml', 'php', 'php3', 'php4', 'php5', 'php6', 'php7', 'phps', 'cgi', 'pl', 'asp',

        'aspx', 'shtml', 'shtm', 'htaccess', 'htpasswd', 'ini', 'log', 'sh', 'js', 'html',

        'htm', 'css', 'sql', 'spl', 'scgi', 'fcgi','scr','exe'

);

 

// Директория куда будут загружаться файлы.

$path = __DIR__ . '/uploads/';

 

if (isset($_FILES[$input_name])) {

        // Проверим директорию для загрузки.

        if (!is_dir($path)) {

                mkdir($path, 0777, true);

        }

 

        // Преобразуем массив $_FILES в удобный вид для перебора в foreach.

        $files = array();

        $diff = count($_FILES[$input_name]) - count($_FILES[$input_name], COUNT_RECURSIVE);

        if ($diff == 0) {

                $files = array($_FILES[$input_name]);

        } else {

                foreach($_FILES[$input_name] as $k => $l) {

                        foreach($l as $i => $v) {

                                $files[$i][$k] = $v;

                        }

                }                

        }        

        

        foreach ($files as $file) {

                $error = $success = '';

 

                // Проверим на ошибки загрузки.

                if (!empty($file['error']) || empty($file['tmp_name'])) {

                        switch (@$file['error']) {

                                case 1:

                                case 2: $error = 'Превышен размер загружаемого файла.'; break;

                                case 3: $error = 'Файл был получен только частично.'; break;

                                case 4: $error = 'Файл не был загружен.'; break;

                                case 6: $error = 'Файл не загружен - отсутствует временная директория.'; break;

                                case 7: $error = 'Не удалось записать файл на диск.'; break;

                                case 8: $error = 'PHP-расширение остановило загрузку файла.'; break;

                                case 9: $error = 'Файл не был загружен - директория не существует.'; break;

                                case 10: $error = 'Превышен максимально допустимый размер файла.'; break;

                                case 11: $error = 'Данный тип файла запрещен.'; break;

                                case 12: $error = 'Ошибка при копировании файла.'; break;

                                default: $error = 'Файл не был загружен - неизвестная ошибка.'; break;

                        }

                } elseif ($file['tmp_name'] == 'none' || !is_uploaded_file($file['tmp_name'])) {

                        $error = 'Не удалось загрузить файл.';

                } else {

                        // Оставляем в имени файла только буквы, цифры и некоторые символы.

                        $pattern = "[^a-zа-яё0-9,~!@#%^-_\$\?\(\)\{\}\[\]\.]";

                        $name = mb_eregi_replace($pattern, '-', $file['name']);

                        $name = mb_ereg_replace('[-]+', '-', $name);

                        

                        // Т.к. есть проблема с кириллицей в названиях файлов (файлы становятся недоступны).

                        // Сделаем их транслит:

                        $converter = array(

                                'а' => 'a',   'б' => 'b',   'в' => 'v',    'г' => 'g',   'д' => 'd',   'е' => 'e',

                                'ё' => 'e',   'ж' => 'zh',  'з' => 'z',    'и' => 'i',   'й' => 'y',   'к' => 'k',

                                'л' => 'l',   'м' => 'm',   'н' => 'n',    'о' => 'o',   'п' => 'p',   'р' => 'r',

                                'с' => 's',   'т' => 't',   'у' => 'u',    'ф' => 'f',   'х' => 'h',   'ц' => 'c',

                                'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',  'ь' => '',    'ы' => 'y',   'ъ' => '',

                                'э' => 'e',   'ю' => 'yu',  'я' => 'ya',

                        

                                'А' => 'A',   'Б' => 'B',   'В' => 'V',    'Г' => 'G',   'Д' => 'D',   'Е' => 'E',

                                'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',    'И' => 'I',   'Й' => 'Y',   'К' => 'K',

                                'Л' => 'L',   'М' => 'M',   'Н' => 'N',    'О' => 'O',   'П' => 'P',   'Р' => 'R',

                                'С' => 'S',   'Т' => 'T',   'У' => 'U',    'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',

                                'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',  'Ь' => '',    'Ы' => 'Y',   'Ъ' => '',

                                'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',

                        );

 

                        $name = strtr($name, $converter);

                        $parts = pathinfo($name);

 

                        if (empty($name) || empty($parts['extension'])) {

                                $error = 'Недопустимое тип файла';

                        } elseif (!empty($allow) && !in_array(strtolower($parts['extension']), $allow)) {

                                $error = 'Недопустимый тип файла';

                        } elseif (!empty($deny) && in_array(strtolower($parts['extension']), $deny)) {

                                $error = 'Недопустимый тип файла';

                        } else {

                                // Чтобы не затереть файл с таким же названием, добавим префикс.

                                $i = 0;

                                $prefix = "_date_$date_today";

                                while (is_file($path . $parts['filename'] . $prefix . '.' . $parts['extension'])) {

                                          $prefix = '(' . ++$i . ')';

                                }

                                $name = $parts['filename'] . $prefix . '.' . $parts['extension'];

 

                                // Перемещаем файл в директорию.

                                if (move_uploaded_file($file['tmp_name'], $path . $name)) {

                                        // Далее можно сохранить название файла в БД и т.п.

                                        $success = 'Файл «' . $name . '» успешно загружен.';

                                } else {

                                        $error = 'Не удалось загрузить файл.';

                                }

                        }

                }

                

                // Выводим сообщение о результате загрузки.

                if (!empty($success)) {

                        echo '

' . $success . '

';                

                } else {

                        echo '

' . $error . '

';

                }

        }

}?>

        

        


По теме: методические разработки, презентации и конспекты

Доклад "Формирование творческих способностей у учащихся в процессе освоения программы"

Развитие творческих способностей в учебно-воспитательном процессе....

Развитие творческой деятельности учащихся в процессе составления задач по историческим данным краеведческого характера

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

1. Результаты освоения учащимися образовательных программ по литературе (по данным школьного мониторинга)

Результаты освоения учащимися образовательных программ по литературе (по данным школьного мониторинга)...

Методическая разработка урока по предмету Физическая культура раздел "Самбо" по теме:"Приемы самостраховки: перекаты на спину, на бок"

Методическая разработка урока по физической культуре по теме: "Приемы самостраховки: перекаты на спину, на бок". Данная методическая разработка поможет учителям физической культуры провести ...

Технологическая карта. Тема: "Баскетбол - «Создание условий для качественного освоения учащимися технических приемов баскетбола»" 9 класс

Технологическая карта. Тема: "Баскетбол - «Создание условий для качественного освоения учащимися технических приемов баскетбола»" 9 класс...

Методическая разработка по физической культуре Совершенствование техники верхней передачи и приема мяча снизу 8 кл

Методическая разработка урока по физической культуреКласс: 8Автор УМК: В.И. ЛяхЦель урока: Применять знания и навыки в игре волейболЗадачи урока: Обучающая: обучение технике верхней передачи мяча и те...


 
idназваниессылкадатаразмертип
$i$fileскачать файл$FileData$filesize$filetype