Мини-чат
Наш опрос
Статистика
Онлайн всего: 3
Гостей: 3
Пользователей: 0
Поиск
Новое на форуме
Название : Способ отправки файлов с TClientSocket & TServerSocket | |
Название : Как получить список логических дисков? | |
Название : Как добавить приложение в автозагрузку | |
Название : Сохранение странички в файл из TWebBrowser | |
Название : Как програмно отключить и включить мышь | |
Календарь
« Январь 2025 » | ||||||
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Друзья сайта
Главная »
И теперь сформируем внешний вид гостевой книги:
css/main.css Code *{ margin:0; padding:0; } body { background-color:#fff; color:#fff; font:14px/1.3 Arial,sans-serif; } footer { background-color:#212121; bottom:0; box-shadow: 0 -1px 2px #111111; display:block; height:70px; left:0; position:fixed; width:100%; z-index:100; } footer h2{ font-size:22px; font-weight:normal; left:50%; margin-left:-400px; padding:22px 0; position:absolute; width:540px; } footer a.stuts,a.stuts:visited{ border:none; text-decoration:none; color:#fcfcfc; font-size:14px; left:50%; line-height:31px; margin:23px 0 0 110px; position:absolute; top:0; } footer .stuts span { font-size:22px; font-weight:bold; margin-left:5px; } .container { background: transparent url(../images/book_open.jpg) no-repeat top center ; color: #000000; height: 600px; margin: 20px auto; overflow: hidden; padding: 35px 100px; position: relative; width: 600px; } #col1, #col2 { float: left; margin: 0 10px; overflow: hidden; text-align: center; width: 280px; } #col1 { -webkit-transform: rotate(3deg); -moz-transform: rotate(3deg); -ms-transform: rotate(3deg); -o-transform: rotate(3deg); } #records form { margin:10px 0; padding:10px; text-align:left; } #records table td.label { color: #000; font-size: 13px; padding-right: 3px; text-align: right; } #records table label { font-size: 12px; vertical-align: middle; } #records table td.field input, #records table td.field textarea { background-color: rgba(255, 255, 255, 0.4); border: 0px solid #96A6C5; font-family: Verdana,Arial,sans-serif; font-size: 13px; margin-top: 2px; padding: 6px; width: 190px; } #records table td.field input[type=submit] { background-color: rgba(200, 200, 200, 0.4); cursor: pointer; float:right; width: 100px; } #records table td.field input[type=submit]:hover { background-color: rgba(200, 200, 200, 0.8); } #records_list { text-align:left; } #records_list .record { border-top: 1px solid #000000; font-size: 13px; padding: 10px; } #records_list .record:first-child { border-top-width:0px; } #records_list .record p:first-child { font-weight:bold; font-size:11px; } |
Шаг 1. SQL Для работы нашего приложения требуется создать таблицу: Code CREATE TABLE IF NOT EXISTS `s178_guestbook` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(255) default '', `email` varchar(255) default '', `description` varchar(255) default '', `when` int(11) NOT NULL default '0', `ip` varchar(20) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Шаг 2. PHP Основной файл будет содержать следующий код: guestbook.php ... Читать дальше » |
вы можете воспользоваться нашим примером, в котором реализована отправка писем с использованием smtp-сервера, для которого требуется авторизация. Поэтому не забудьте добавить в скрипт соответствующие реквизиты доступа
Например: Code function authSendEmail($from, $namefrom, $to, $nameto, $subject, $message) { $smtpServer = "smtp.domain.tld"; $port = "25"; $timeout = "30"; $username = "postmaster@domain.tld"; $password = "YouPassword"; $localhost = "localhost"; $newLine = "\r\n"; //Connect to the host on the specified port $smtpConnect = fsockopen($smtpServer, $port, $errno, $errstr, $timeout); $smtpResponse = fgets($smtpConnect, 515); if(empty($smtpConnect)) { $output = "Failed to connect: $smtpResponse"; return $output; } else { $logArray['connection'] = "Connected: $smtpResponse"; } //Request Auth Login fputs($smtpConnect,"AUTH LOGIN" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['authrequest'] = "$smtpResponse"; //Send username fputs($smtpConnect, base64_encode($username) . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['authusername'] = "$smtpResponse"; //Send password fputs($smtpConnect, base64_encode($password) . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['authpassword'] = "$smtpResponse"; //Say Hello to SMTP fputs($smtpConnect, "HELO $localhost" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['heloresponse'] = "$smtpResponse"; //Email From fputs($smtpConnect, "MAIL FROM: $from" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['mailfromresponse'] = "$smtpResponse"; //Email To fputs($smtpConnect, "RCPT TO: $to" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['mailtoresponse'] = "$smtpResponse"; //The Email fputs($smtpConnect, "DATA" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['data1response'] = "$smtpResponse"; //Construct Headers $headers = "MIME-Version: 1.0" . $newLine; $headers .= "Content-type: text/html; charset=windows-1251" . $newLine; $headers .= "To: $nameto <$to>" . $newLine; $headers .= "From: $namefrom <$from>" . $newLine; fputs($smtpConnect, "To: $to\nFrom: $from\nSubject: $subject\n$headers\n\n$message\n.\n"); $smtpResponse = fgets($smtpConnect, 515); $logArray['data2response'] = "$smtpResponse"; // Say Bye to SMTP fputs($smtpConnect,"QUIT" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['quitresponse'] = "$smtpResponse"; } //new function $to = "postmaster@domain.tld"; $nameto = "Demo User"; $from = "postmaster@domain.tld"; $namefrom = "Postmaster"; $subject = "Hello World Again!"; $message = "World, Hello!"; authSendEmail($from, $namefrom, $to, $nameto, $subject, $message); |
Добрый день Задача: создать архив в PHP и упаковать в него файл. Когда мне нужно было написать скрипт- архиватор, первым делом я открыл мануал по классу Pclzip, но он очень тяжел для сервера, при большой посещаемости, и этот вариант отпал. Потом достаточно долго кавырял мануалы, статьи, пока не увидел один очень хороший класс для работы с архивами. Итак, ближе к делу. Качаем класс: CreateZipFile.txt Как же его применять? Code <?php |
Давай те напишем код, который будет накладывать одну картинку на другую. В данном случае водяной знак(копирайт). Сам код: Code ini_set('display_errors', '1'); |
В последнее время вижу многие хотя написать свой Mail агент на Delphi 7. Но не у всех это получается, потому что они что-то не понимают. Итак, приступим. Для начала нам нужно скомпилировать сам компонент MailClient. Качаем архив: mail-client-src.zip (27 Кб) (компонент работает только в Delphi 7). Затем в Delphi в меню Component / Install Component указываем путь к файлу client.pas, жмем ОК. ... Читать дальше » |
Какая версия php у меня установленах Прежде чем работать с php было бы неплохо узнать установлин ли у вас php и узнать какая именно версия. Выполнять поставленную задачу будем с помощью встроенной функции phpinfo(), которая кроме версии php покажет нам детальный отчёт о всех его настройках. Посмотрите пример вывода информации данной функции, чтобы вывести подобное на своём сайте, создайте страницу с расширением .php и вставьте туда следующий код: Code <?php phpinfo(); ?> Время на сервере С помощью php легко узнать текущее время на сервере, например, во время загрузки на сервере было 20:21:33 25.12.2011, но в отличии от javascript это время не меняется онлайн, т.е. отображается то время, которое было на сервере в момент загрузки данной страницы. Чтобы вывести дату на сайте нужно воспользоваться функцией date(). Code <?php echo date('H:i:s d.m.Y'); ?> Маленькая хитрость: обычно в конце страницы ставят копирайт так Copyright © Computerlessons.ru, 2007 - 2011. Обратите внимание на вторую дату, она выводится с помощью php и в этом случае не нужно каждый год вручную подправлять число. Как определить IP-посетителя При написании скрипта для добавления комментариев неплохо бы кроме вводимых пользователем данных писать в базу данных ещё и его IP-адрес, мало ли пригодится. Узнать IP адрес пользователя можно с помощью функции etenv('REMOTE_ADDR') Code <?php echo getenv('REMOTE_ADDR'); ?> Вычисляем время выполения php-скрипта (загрузки страницы) При программировании на php немаловажно уделить внимание скорости загрузки срипта. Слишком долго выполняющиеся скрипты могут сильно грузить сервер, при высокой посещаемости ресурса будут происходить сбои всего сайта из-за таких скриптов. Чтобы узнать сколько времени работает скрипт (грузится страница), воспользуйтесь таким примером php-кода: Code <?php define('ST_T', microtime());//начало echo '<p>Контент страницы, скрипты и т.п.</p>'; printf('Страница сгенерирована за %.5f сек.', microtime()-ST_T);//конец ?> Подсветка php-кода Вы наверное уже обратили внимание, что на этой странице я привожу примеры php-кодов в цветном варианте. Цветной код удобно читать, нежели чёрно-белый. Например, я мог бы показывать вам коды так: Code <?php echo highlight_file('color_code.php', true); ?> Но всё же согласитесь, цветной код лучше! Выше я привожу вам пример функции highlight_file(), с её помощью можно выводить на страницу php-код из другого файла. Ниже посмотрите функцию highlight_string(), где можно раскрашивать код непосредственно на странице. Code <?php echo highlight_string("#тут вводим код, который станет цветным#"); ?> Маленькая поправочка: следите за ковычками внутри этих функций, если используете двойную ковычку ", то внутри используйте только одинарные ', если нужно использовать двойную ковычку, то её необходимо экранировать обратным слешем \". То же касается и одинарыных ковычек. http://computerlessons.ru/lessons/php/14.html |
Скрипт написан на PHP, для хранения информации о пользователях мы использовали базу данных MySQL.
Для удобства создадим файл, в котором будет осуществляться подключение к БД. Этот файл мы будем инклудить ко всем остальным скриптам, где требуется связь с БД. Содержимое файла «connectdb.php»: Code < ? //данные о хосте, пользователе и базе данных $host = 'localhost'; $user = 'root'; $pass = 'pass'; $dbname = 'test'; // подключаемся и выбираем бд, которую указали выше if(!mysql_connect($host,$user,$pass)) die('Не удалось подключиться к серверу MySql!'); elseif(!mysql_select_db($dbname)) die('Не удалось выбрать БД!'); ?> ... Читать дальше » |
1 Работа с текстом
1. Вывод текста с помощью MessageBox Code MessageBox.Show("текст", "название"); Code [b]2. Вывод текста с помощью Label [/b] label.Text = "текст"; §2 Работа с файлами 1. Чтение текста с файла в строку ... Читать дальше » |
Если кому будет нужна реализация обновления ПО через Интернет — привожу код простого класса для обновления. Как всегда рекомендации и ругань — приветсвуются . В принципе ничего не мешает оформить этот класс как компонент или сделать классу обвязку. Code unit BDSInetUpdater; interface Uses Classes,UrlMon,Windows,IniFiles; type // событие, сигнализирующее о том, что есть обновленная версия TOnStartUpdate=procedure (Sender:TObject; var StartUpdate:boolean) of object; // событие при проверке обновленнной версии TOnAddUpdateInfoCheck=procedure (Sender:TObject; Inf:TIniFile; var CheckResult,ContinueCheck:boolean; var DownloadURL:string) of object; // событие при проверке версии TOnUpdateVersionInfo=procedure (Sender:TObject; Version:string) of object; TInetUpdater=class private FUpdateInfoFile: string; FUpdateResultFile: string; FOnUpdateComplete: TNotifyEvent; FProductVersion:string; FProductName: string; FOnUpdateExists: TNotifyEvent; FOnStartUpdate: TOnStartUpdate; FOnAddUpInfoCheck: TOnAddUpdateInfoCheck; FOnUpdateVersionInfo: TOnUpdateVersionInfo; FInetResult:HRESULT; public Constructor Create; virtual; Destructor Destroy; override; // проверить обнвления и обновится при возможности function UpdateFile:boolean; virtual; // только проверить обновления function CheckUpdate(var DownloadURL:string):boolean; virtual; // получение кода при операциях с Инетом для разбора полетов property InetResult:HRESULT read FInetResult; // ссылка на файл с информацией об обновлениях property UpdateInfoFileURL:string read FUpdateInfoFile write FUpdateInfoFile; // временный файл для записи загруженного обновленного файла property UpdateResultFile:string read FUpdateResultFile write FUpdateResultFile; // наименование продукта property ProductName:string read FProductName write FProductName; // версия property ProductVersion:string read FProductVersion write FProductVersion; // событие, которое позволяет проверить дополнительныую информацию, используется для пользовательской проверки property OnAddUpdateInfoCheck:TOnAddUpdateInfoCheck read FOnAddUpInfoCheck write FOnAddUpInfoCheck; // событие при старте обновлений property OnUpdateStart:TOnStartUpdate read FOnStartUpdate write FOnStartUpdate; // событие при завершении обновления property OnUpdateComplete:TNotifyEvent read FOnUpdateComplete write FOnUpdateComplete; // событие о существовании обновления (т.е. информация об обновлениях загружена и новая версия найдена) property OnUpdateExists:TNotifyEvent read FOnUpdateExists write FOnUpdateExists; // событие при проверке версии property OnUpdateVersionInfo:TOnUpdateVersionInfo read FOnUpdateVersionInfo write FOnUpdateVersionInfo; end; implementation Uses SysUtils; // получить временное имя файла (тут возможна оптимизация, вместо времени можно например использовать GetTickCount()) Function GetTmpFileName:String; begin Result:=FormatDateTime('ddmmyyyyhhmmss',Now)+'.tmp'; end; { TInetUpdater } function TInetUpdater.CheckUpdate(var DownloadURL:string): boolean; var S1,TmpFileName:string; Res:HRESULT; Inf:TIniFile; CheckResult,ContinueCheck:boolean; begin Result:=False; // проверим, есть ли адрес для файла с информацией об обновлениях if Trim(FUpdateInfoFile)='' then exit; // будем файл с информацией сохранять во временный файл TmpFileName:=ExtractFilePath(ParamStr(0))+ChangeFileExt(GetTmpFileName,'.ini'); // пытаемся получить информацию об обновлениях FInetResult:=UrlDownloadToFile(nil,PChar(FUpdateInfoFile),PChar(TmpFileName),0,nil); if FInetResult=S_OK then begin // ОК, файл с информацией получили, пробуем проверить новую версию if Assigned(FOnUpdateExists) then FOnUpdateExists(Self); // предполагается, что файл с информацией об обновлениях представляет собой обычный INI файл Inf:=TIniFile.Create(TmpFileName); try CheckResult:=False; ContinueCheck:=True; // здесь мы должны проверить информацию о версии, вызывая обработчик для OnAddUpInfoCheck(). // если ContinueCheck TRUE мы должны проверить версию сами в этом классе //(в ином случае получим результат в переменной CheckResult и не будем проверять версию самостоятельно) // Если файл с информацией НЕ INI файл - можем использовать свойство Inf.FileName // для получения имени временного файла и попробовать получить данные другим методом // в обработчике OnAddUpInfoCheck() if Assigned(FOnAddUpInfoCheck) then FOnAddUpInfoCheck(Self,Inf,CheckResult,ContinueCheck,DownloadURL); // Проверяем версию самостоятельно if ContinueCheck and Inf.SectionExists(FProductName) then begin // Читаем версию S1:=Trim(Inf.ReadString(FProductName,'Version',FProductVersion)); // событие о получении информации о версии if Assigned(FOnUpdateVersionInfo) then FOnUpdateVersionInfo(Self,S1); // Если версия не такая, как у нас => есть обновления Result:=(S1<>Trim(FProductVersion)); // соответсвенно, получим URL для обновленного файла if Result then DownloadURL:=Inf.ReadString(FProductName,'File',DownloadURL); end else Result:=CheckResult; finally Inf.Free; end; end; // временный файл нам уже не нужен - удаляем его if FileExists(TmpFileName) then SysUtils.DeleteFile(TmpFileName); end; // первоначальная инициализация constructor TInetUpdater.Create; begin FUpdateInfoFile:='http://www.websitename.com/updates/verinfo.ini'; // URL к файлу с данными об обвлениях FUpdateResultFile:=''; // результирующий файл FProductName:=''; // имя продукта FProductVersion:='1.0.0.0'; // версия FOnUpdateComplete:=nil; FOnStartUpdate:=nil; FOnUpdateExists:=nil; FOnAddUpInfoCheck:=nil; FOnUpdateVersionInfo:=nil; FInetResult:=S_OK; end; destructor TInetUpdater.Destroy; begin inherited; end; // собственно обновление function TInetUpdater.UpdateFile; var Flag:boolean; DownloadURL:string; Res:HRESULT; begin Result:=False; // если мы не знаем, в какой файл сохранять обновления - они нам не нужны, уходим if Trim(FUpdateResultFile)='' then exit; DownloadURL:=''; // пробуем проверить обновления и получить URL для скачивания if CheckUpdate(DownloadURL) then begin if Trim(DownloadURL)='' then exit; // обновления есть, но вот URL для скачивания не получили - уходим Flag:=True; if Assigned(FOnStartUpdate) then FOnStartUpdate(Self,Flag); // сигнализируем, что начали процесс обновления // в переменной Flag - согласие на закачку ответ пользователя if Flag then // если закачка разрешена - качаем begin FInetResult:=UrlDownloadToFile(nil,PChar(DownloadURL),PChar(FUpdateResultFile),0,nil); Result:=FInetResult=S_OK; // если закачка обновления прошла нормально - сигнализируем, что все прошло удачно if Result and Assigned(FOnUpdateComplete) then FOnUpdateComplete(Self); end; end; end; end. Пример использования: 1) размещаем на своем сайте обычный Ini файл updates.ini со следующей информацией:
...
Читать дальше »
|