PHP: създаване на „мини-DB“ върху текстов файл. Htmlspecialchars - Преобразува специални знаци в HTML обекти Персонализирано фоново изображение или фон


ехо " ";
ехо " ";
ехо " ";
echo "Здравей, днес е ";
ехо дата ("l, F jS, Y"); //друг php код тук ехо "

";
ехо "";
?>

Това обаче ще засегне опцията за оцветяване на HTML кода в повечето HTML/PHP редактори, което позволява лесно разбиране на ролята на HTML таговете. Трябва да избягвате всяка двойна кавичка в HTML кода с обратна наклонена черта.

PHP в HTML - файлови разширения

Когато даден файл съдържа PHP код, той трябва да има PHP разширение. В повечето случаи това е .php, но можете също да конфигурирате файла .htaccess да чете PHP кода в HTML файла, без да го преименувате или да променяте разширението му. По-долу можете да видите "обработчиците", които трябва да се добавят, за да се постигне това

За нормално конфигуриран уеб сървър:

AddHandler cgi-script .html .htm

Уеб сървър, работещ с FastCGI:

AddHandler fcgid-script .html .htm Забележка:това е тествано и работи с NTC уеб хостинг сървърите. Ако използвате друг хостинг доставчик, консултирайте се с него за помощ. Освен това, ако се сблъсквате с постоянни проблеми там, можете да обмислите преминаване към NTC хостинг, за да получите оптимизираните за PHP стабилни сървъри, от които се нуждаете.

HTML в PHP

Можете също да използвате HTML код в PHP скрипт. Това може да бъде много полезно, ако сте изградили цялата си страница в PHP, но искате да включите персонализиран HTML формуляр, например. Всичко, което трябва да направите, е да обърнете реда на отварящите тагове HTML и PHP, отваряйки страницата с PHP:

Използване на HTML в PHP:


$Fname = $_POST["Fname"];
$Lname = $_POST["Lname"];
?>


Лична информация



Първо име:

Фамилия:


echo "Здравей, ".$Fname." ".$Lname.".
";
?>

Въпреки че това изглежда малко сложно, всъщност ви спестява много код. Тук използваме $PHP_SELF super global, което ни позволява да използваме стойността на полетата, посочени под него, в същия файл. Обикновено за такива форми се създават два файла - първият е самата HTML форма, а вторият е backend PHP файлът, който върши цялата работа.

Ако вече имате сложно PHP приложение, което разчита на голям брой файлове и просто искате всичко да е възможно най-просто, това може да бъде от голяма помощ.

PHP с NTC хостинг

NTC Hosting предлага на своите клиенти най-доброто решение за уеб хостинг. Всички наши уеб хостинг планове осигуряват поддръжка за HTML и ви дават възможност да избирате между

Както във всеки занаят, в PHP има много различни трикове, които значително улесняват живота на обикновен програмист. Ето някои от тези трикове.

Трик 1: предаване на масиви от формуляр.

От HTML формуляр можете да прехвърляте не само стойности (променливи), но и масиви. Да кажем, че имаме формуляр със следното поле:

При подаване на данни от формуляра, PHP скриптът ще получи стойността от полето cargo като променлива $cargo. Но ако посочите „cargo“ вместо „cargo“, тогава полето вече няма да изпраща променлива към скрипта, а масив $cargo, единственият елемент от който ще има един като ключ и съдържанието на полето като стойността. Когато автоматично генерирате формуляр (да речем, когато генерирате ценоразпис с много артикули), този трик е наистина незаменим и обработката на масив със скрипт е много по-лесна за организиране, отколкото анализирането на куп променливи с имена като tovar1, tovar2 и т.н. .

Трик 2: съкратена форма за писане на условие в PHP.

Дизайн...

echo "param=";~^~if($a==1)~^~( echo "1"; )~^~else ( echo "2"; )

Много по-лесно (и по-кратко) е да го поставите в съкратена форма:

echo "param=".($a==1?"1":"2");

Трик 3: анализиране на HTML бутони за „изпращане“.

Бутонът „изпращане“ на HTML, както знаете, изпраща данни от HTML формуляр към сървъра (в нашия случай за обработка от PHP скрипт). Но какво ще стане, ако формулярът изисква няколко бутона, които предоставят различни опции за обработка на данни? Когато се изправят пред тази задача, по някаква причина малко хора си спомнят, че бутоните „изпращане“ имат свой собствен атрибут „стойност“. Не, разбира се, всеки знае, че този атрибут показва надписа върху бутона, но по правило не му се дава друго значение. Междувременно, ако бутоните от типа „изпращане“ имат атрибут „име“, текстът на етикетите върху бутоните се изпраща от формуляра към сървъра заедно с други данни и може да бъде анализиран от скрипт, който ще позволи толкова много различна обработка на данни, която да се извършва чрез натискане на различни бутони от типа „изпращане“. , колкото ви душа иска. Предимството на трика е, че в този случай не са необходими „скрити“ полета.

Трик 4: несъществуващи параметри на PHP функция.

Добре известно е, че когато извиквате функции в PHP, трябва да посочите точно същия брой променливи, колкото функцията трябва да приеме:

$hour=16;~^~$minute=35;~^~ехо днес_е($час,$минута);~^~...~^~функцията днес_е($час,$минута);~^~(~ ^~...~^~)

Това, което е по-малко известно, е, че можете да посочите стойности по подразбиране за променливи в заглавната част на функцията (за използване в случай на липсващи стойности на променлива или самите променливи при достъп отвън), което ви позволява да получите достъп до функцията с произволен брой променливи или изобщо да не ги посочвате:

функция днес_е($час=16,$минута=0)~^~(~^~...~^~)

Трик 5: Предотвратете кеширането на JS скриптове и CSS стилове.

Колко хора псуват всеки ден, след като променят съдържанието на JS скрипт или CSS стилове и откриват, че браузърът е кеширал твърдо старата версия и не иска да показва резултатите от новата. Особено тези, които имат достъп до Интернет във фирмата си чрез прокси сървър. Какво не се прави в такива случаи: в раздела мета се поставят изтекли заглавки, мета тагове против кеширане и т.н.. Междувременно понякога е достатъчно да поставите псевдопараметър след споменаване на съответния файл под формата на произволно число генериран от кратка част от PHP код:

Така че при отваряне на страница винаги се зарежда само най-новата версия на файла.

Трик 6: кавички, апострофи и тълкуване на текст.

Често е обичайно да се подхожда малко небрежно към избора на контейнер за низови (текстови) стойности. Но напразно: много хора забравят, че интерпретаторът на PHP винаги анализира съдържанието на двойните текстови кавички (") за наличието на променливи, докато е абсолютно безразличен към съдържанието на контейнерите с единични кавички (апострофи), съпоставяйки ги точно с символи характер без тълкуване.

Следователно е по-удобно текстовете с променливи да се затварят в неразбиваеми двойни кавички:

$text="Здравей, $(клиент)!";

Но нечетливият код с апостроф се изпълнява значително по-бързо, особено в цикли:

$text=Здравей, .$client.!;

Трик 7: Незабавно теглене.

Друг страхотен начин за ускоряване на изпълнението на скрипта е вместо незабавно и всеки път да показвате всичко, което дойде под ръка с командата ехо, натрупвайте съдържанието на теста в променлива и след това отпечатайте тази променлива веднъж:

$mytext="вариант 1";~^~$mytext.=" encode";~^~$mytext.=" достъп";~^~echo $mytext;

Моля, обърнете внимание, че операцията за конкатенация е написана в съкратена форма: $mytext.=, но не $mytext=$mytext.. Спестяване на време – до десетократно намаляване на изходното време. Впечатляващо?

Трик 8: Предаване на масив от полета от тип отметка.

Трик №1 ни позволява да предаваме масиви от HTML формуляр. И в този трик нека анализираме друга ситуация: да предположим, че трябва да предадем масив от формуляр, който има само полета като отметка(това е малък квадрат, в който при щракване се появява отметка). Например, имаме списък с градове, от които потребителят може да избере градовете, от които се нуждае, но когато изпращаме данни, искаме да изпратим не само идентификаторите на градовете, избрани от потребителя, но и имената на последните. И скрити полета като скритНаистина не искаме да правим нищо до квадратчетата за отметка (за да не натоварваме кода на страницата и масата от данни, изпратени до сървъра). Какво трябва да направя?

Решението е много просто. Както знаете, по подразбиране поле от тип отметка(като това, можете дори да щракнете върху него: ) обикновено може да има стойност „включено“ (полето е избрано, т.е. има отметка в него) или „изключено“ (полето не е избрано). Можете също така да посочите алтернативна стойност за полето, например 1. Въпреки това, не всеки смята, че за това поле можете да посочите всяка стойност, дори текста на романа „Война и мир“. И тази стойност ще бъде внимателно прехвърлена към сървърните скриптове за анализ и обработка:

Потребителят избира необходимите елементи, натиска бутона „Изпращане“ и масив от избрани квадратчета за отметка се изпраща на сървъра, в който опцията имеквадратчето за отметка е името на променливата и опцията стойност- значението му. Приложено към PHPтова е еквивалентно на реда:

$id548=Toyota Landcruiser;

Сега нека си припомним отново трик номер 1. Да кажем, че не искаме да анализираме куп променливи, а вместо това искаме да анализираме единичен масив. Освен това е лесно:

И в резултат на появата на две квадратни скоби около числото в аргумента опция имеотметка, вече не е променлива, която се изпраща на сървъра $id548и елемента на масива $idс ключ 548.

Резултатът? Доста добре: от едно поле за отметка подадохме цели три параметъра на сървъра - името на масива, ключа на елемента и неговата стойност, без никакви допълнителни скрити полета и ненужен HTML код.

(PHP 4, PHP 5, PHP 7)

htmlspecialchars — Преобразува специални знаци в HTML обекти

Описание

низ htmlspecialchars (низ $низ [, int $flags = ENT_COMPAT | ENT_HTML401 [, низ $encoding = ini_get("default_charset") [, bool $double_encode = вярно ]]])

В HTML някои знаци имат специални значения и трябва да бъдат представени като HTML обекти, за да запазят значението си. Тази функция връща низа, който е претърпял тези преобразувания. Ако трябва да конвертирате всички възможни обекти, използвайте htmlentities().

Ако входният низ, предаден на тази функция, и полученият документ използват едно и също кодиране на знаци, тогава тази функция е достатъчна, за да подготви данни за вмъкване в повечето части на HTML документа. Ако обаче данните съдържат знаци, които не са дефинирани в символното кодиране на получения документ, и очаквате тези знаци да бъдат съхранени (като числови или наименувани обекти), тогава това и htmlentities()функции (които трансформират само поднизове със съответните обекти). Необходимо е да използвате функцията mb_encode_numericentity().

Извършват се следните трансформации:

  • "&" (амперсанд) се преобразува в "&"
  • """ (двойни кавички) се преобразува в """ в режим ENT_NOQUOTESне е зададено.
  • """ (единични кавички) се преобразува в """ (или ") само в режим ENT_QUOTES.
  • "<" (знак "меньше чем") преобразуется в "<"
  • ">" (знак за по-голямо) се преобразува в ">"

Списък с параметри

Низ за конвертиране ( низ).

Побитова маска на следните флагове, които определят режима на обработка на цитати, неправилно кодиране и използвания тип документ. По подразбиране е ENT_COMPAT | ENT_HTML401.

Налични стойности на параметрите на флаговете
Постоянно име Описание
ENT_COMPAT Преобразува двойните кавички, оставяйки единичните непроменени.
ENT_QUOTES Преобразува двойни и единични кавички.
ENT_NOQUOTES Оставя двойните и единичните кавички непроменени.
ENT_IGNORE Без никакви уведомителни съобщения, отхвърля невалидни кодови последователности, вместо да връща празен низ. Използването на този флаг не се препоръчва, тъй като може да доведе до » отрицателни последици за сигурността.
ENT_SUBSTITUTE Заменя неправилни кодови последователности със заместващия символ на Unicode U+FFFD, когато използвате UTF-8 и FFFD; когато използвате различно кодиране, вместо да връщате празен низ.
ENT_DISALLOWED Заменя невалидните кодове на знаци за даден тип документ със заместващия символ на Unicode U+FFFD (UTF-8) или FFFD; (когато използвате различно кодиране), вместо да оставите всичко както е. Това може да бъде полезно, например, за да се гарантира, че XML документите с вградено външно съдържание са формално правилни.
ENT_HTML401 Обработка на кода в съответствие с HTML 4.01.
ENT_XML1 Обработка на код в съответствие с XML 1.
ENT_XHTML Обработка на кода в съответствие с XHTML.
ENT_HTML5 Обработка на кода в съответствие с HTML 5.
кодиране

Незадължителен аргумент, който указва кодирането, използвано при конвертиране на знаци.

Ако не е посочено, стойността по подразбиране за кодиране зависи от използваната версия на PHP. В PHP 5.6 и по-стари версии стойността по подразбиране е зададена на конфигурационната опция default_charset. В PHP 5.4 и 5.5 се използва UTF-8по подразбиране. Използват се по-ранни версии на PHP ISO-8859-1.

Въпреки че този аргумент е технически незадължителен, силно се препоръчва да посочите правилната стойност за вашия код, ако използвате PHP 5.5 или по-висока версия или ако вашата опция за конфигуриране default_charset може да е зададена неправилно за входа.

За целите на тази функция за кодиране ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252И KOI8-Rса практически еквивалентни, като се приеме, че самият низ съдържа валидни знаци в указаното кодиране, тогава знаците се променят htmlspecialchars(), ще останат на същите места във всички тези кодировки.

Поддържат се следните кодировки:

Поддържани кодировки
Кодиране Псевдоними Описание
ISO-8859-1 ISO8859-1 Западноевропейска латиница-1.
ISO-8859-5 ISO8859-5 Рядко използвано кодиране на кирилица (латиница/кирилица).
ISO-8859-15 ISO8859-15 Западноевропейска латиница-9. Добавя знака за евро, френски и финландски букви към кодирането Latin-1 (ISO-8859-1).
UTF-8 8-битов Unicode, ASCII съвместим.
cp866 ibm866, 866 Кодиране на кирилица, използвано в DOS.
cp1251 Windows-1251, win-1251, 1251 Кодиране на кирилица, използвано в Windows.
cp1252 Windows-1252, 1252 Западноевропейско кодиране, използвано в Windows.
KOI8-R koi8-ru, koi8r Руско кодиране.
BIG5 950 Традиционен китайски, използван главно в Тайван.
GB2312 936 Опростен китайски, стандартен национален набор от знаци.
BIG5-HKSCS Разширен Big5, използван в Хонг Конг.
Shift_JIS SJIS, SJIS-win, cp932, 932 Японско кодиране.
EUC-JP EUCJP, eucJP-win Японско кодиране.
Макроман Кодиране, използвано в Mac OS.
"" Празен ред активира режима за определяне на кодирането от скриптовия файл (Zend multibyte), default_charset и текущия локал (вижте. nl_langinfo()И setlocale()), в показания ред. Не се препоръчва за употреба.

Коментирайте: Други кодировки не се поддържат; вместо това ще се приложи кодирането по подразбиране и ще се генерира предупреждение.

двойно_кодиране

Ако опцията double_encode е деактивирана, тогава PHP няма да конвертира съществуващи html обекти. По подразбиране всичко се конвертира без ограничения.

20,6K

PHP е вграден език за програмиране от страна на сървъра. Голяма част от неговия синтаксис е заимстван от C, Java и Perl. Добавени са и няколко уникални функции, специфични за PHP. Основната цел на този език е да създава динамично генерирани PHP HTML страници.

PHP към HTML

Когато създавате сложни уеб страници, ще се сблъскате с необходимостта да комбинирате PHP и HTML, за да изпълните конкретни задачи. На пръв поглед това може да изглежда сложно, тъй като PHP и HTML са две независими дисциплини, но това не е така. PHP е проектиран да взаимодейства с HTML и неговият код може да бъде включен в маркирането на страницата.

PHP кодът се включва в HTML страниците с помощта на специални тагове. Когато потребител отвори страница, сървърът обработва PHP кода и след това изпраща резултата от обработката (не PHP код) към браузъра.

HTML и PHP са доста лесни за комбиниране. Всяка част от PHP скрипт извън таговесе игнорира от PHP компилатора и се предава директно на браузъра. Ако погледнете примера по-долу, можете да видите, че пълен PHP скрипт може да изглежда така:

Здравейте днес.

Горният код е обикновен HTML с малка част от PHP, която отпечатва текущата дата с помощта на вградената функция за дата. В този случай всички HTML ще бъдат игнорирани от PHP компилатора и предадени на браузъра непроменени.

Интегрирането на PHP в HTML наистина е много лесно. Не забравяйте, че скриптът е HTML страница с включен PHP код. Можете да създадете скрипт, който ще съдържа само HTML (без тагове), и ще работи добре.

По-усъвършенствани методи:

  • Елемент от менюто


и резултата:

PHP към HTML с помощта на short_open_tag

Ако трябва да направите кода си възможно най-кратък, преди да вмъкнете HTML в PHP, можете да използвате short_tags. В резултат на това няма да е необходимо да влизатекъси_тагове"с" Изкл" На " На". Въпреки че повечето сървъри вече имат активирана тази опция, винаги е най-добре да проверите това ръчно. Проблем, който може да възникне при използване на кратки тагове, е конфликт при използване на XML. В XML синтаксисен израз

PHP към HTML с помощта на short__tag

Здравейте, днес е.

Имайте предвид, че ако искате да създадете сайт, който е съвместим с възможно най-много платформи, не трябва да разчитате на short_tags, когато вмъквате PHP в HTML.

HTML към PHP с помощта на ехо

Друг начин за интегриране на HTML в PHP файл е командата echo:.

Това ще засегне осветяването на маркирането в повечето редактори. Следователно е необходимо да се маркират всички двойни кавички в HTML кода с помощта на обратна наклонена черта.

PHP към HTML - Разширения на файлове

За стандартно конфигуриран уеб сървър:

AddHandler cgi-script .html .htm

За уеб сървър, работещ с FastCGI:

AddHandler fcgid-script .html .htm

HTML към PHP

Можете също да използвате HTML код в PHP скриптове. Всичко, което трябва да направите, е когато отваряте страница с PHP, да промените реда на отварящите HTML и PHP тагове.

Прехвърлянето на данни чрез масива $_SESSION е разрешено веднъж; прехвърлените данни се изтриват незабавно. Това може да бъде полезно, например, когато „връщате“ във формуляр данни, въведени в друг модул.

Добре е, когато всички сервизни функции са комбинирани в един модул, който основните модули свързват чрез директивата require_once. Ще наречем нашия модул от сервизни функции function.php и в допълнение към споменатите trimall и магически методи, ще включим следните функции там:

  • read() - ще прочете текущата база данни и ще върне масив от записи;
  • write($a) - ще запише масив от записи $a във файл;
  • get_index_by_name ($a,$name) - ще търси съответния запис по име $name и ще върне неговия номер (от нула) или стойността -1, ако записът не бъде намерен. Това е полезно за разграничаване между добавяне на нов запис и редактиране на съществуващ.

В допълнение, функционалният файл ще включва конфигурационния файл и ще стартира сесията - тези възможности може да са необходими на всеки модул, който го свързва.

файл Function.php
$item) (списък ($myname,$mynumber) = разрушаване (DIV, $item); if ($name == mb_strtolower(trimall($myname),"UTF-8")) върне $index; ) върне -1 ; ) ?>

Обърнете внимание, че функцията за четене допълнително филтрира масива със записи от празни низове (за всеки случай, като цяло, те не трябва да се появяват) и trimall първо ще замени всеки непразен низ от разделители с един интервал (вторият preg_replace) и след това премахнете възможните допълнителни разделители в началото и края на оставащия ред (първата preg_replace).

Има и нюанс с функцията за четене по отношение на съвместимостта на кода. Тъй като единственият му ред съдържа анонимна функция, се предполага, че се използва версия на PHP не по-ниска от 5.3. Ако е необходимо, заменете кода по-долу с такъв, където функцията за филтриране е наименувана или изобщо не се използва, като тук:

Функция read () ( $str=@file_get_contents (FILENAME); $a=explode("\n",$str); return $a; )

Правилното преобразуване на Unicode низа в малки букви също е важно (вижте mb_strtolower в кода). Ние не използваме локал тук.

Изглежда, че е време да напишем основния файл index.php. Той ще решава следните задачи:

  • показване на форма за добавяне на нов запис, която се обработва от модула add.php;
  • до формуляра за добавяне ще покажем допълнителни команди - изчистване на формата чрез „самоизвикване“ на скрипт без параметри (бутон няма да се побере тук, защото не предава данни към сървъра) и връзка за достъп до модула за сортиране на записи с име sort.php;
  • получават резултатите от работата си от други модули под формата на числова променлива $status и показват съответните съобщения (масив $status_msg). Стойността $status, равна на нула, ще бъде приета по подразбиране, тя съответства на изхода на кратка помощ за работата на програмата;
  • ако базата данни не е празна, покажете нейните записи и осигурете преход към редактиране или изтриване.

За да не претоварваме таблицата с допълнителни бутони и връзки, нека щракнем по имекато отидете да редактирате записа с помощта на модула edit.php и щракнете върху по поле "Число"ще съответства на изтриване на запис от модула del.php.

Ето как изглежда с няколко добавени записа:

Външен вид на скрипта "Mini-DB на текстов файл"

файл index.php
Име: Номер: Изчистване на сортирането"; $status_msg = масив ("Щракнете върху името за редактиране или върху номера за изтриване на запис", "Записът вече съществува, стойността в него е коригирана", "Записът с посочения номер не може да бъде намерен ", "Данните за добавяне не бяха прехвърлени") ; if (empty($status)) $status = 0; echo "

".$status_msg[$status]."

"; if (count($a)>0) ( echo " "."\н". " "."\n"; foreach ($a като $index=>$item) ( echo " "."\n"; списък ($име, $номер) = експлозия (DIV,$елемент); ехо " "."\н". " "."\н". ""."\n"; ) ехо "
ИмеНомер
".htmlspecialchars(trimall($name))."".intval(trimall($номер))."
"."\n"; ) включват "foot.php"; ?>

Сега да преминем към липсващите модули. add.php изглежда има проста работа - вземете променливите $name и $number от index.php и ги запишете във файл. Модулът обаче трябва да провери дали към него се подават непразни данни и също така да може да различи ситуацията, когато име, което вече съществува в базата данни, е въведено от въвеждането на нов запис (вижте дали ($id>- 1) ( ... ) else ( ... ) в кода). Във втория случай записът винаги се добавя в края, защото ще има модул за сортиране на низове по азбучен ред.

Също така е важно низът $name, „прекаран“ през манипулатора на параметри, вече да е лишен от „критични“ знаци за маркиране като „, “,< и >, а в масива $a, прочетен от файла с данни, всички редове са „както е“, и<>123 няма да бъде намерен, ако $name се обърне след обработка<>123. Следователно, на функцията за търсене на запис, която наричаме get_index_by_name, се предава низ, преобразуван „обратно“ в оригиналната му форма с помощта на стандартната функция htmlspecialchars_decode (достъпна от PHP 5.1). В същата форма низът се връща обратно към index.php чрез масива $_SESSION. Това ще осигури известно удобство - след въвеждане на нов запис данните за него ще останат във формата и ще може да се въведе друг запис, малко по-различен по име ("Иванова" след "Иванов").

Е, връщането от модул на модул е ​​абсолютно стандартно - чрез стандартната хедър функция. Не забравяйте, че може да се използва само ако модулът все още не е извел нищо към браузъра.

add.php файл
-1) (списък ($име,$номер0) = разрушаване (DIV,$a[$id]); $a[$id] = $нов_низ;; $статус=1; ) else ( $id = брой($ a)+1; array_push ($a,$new_string); ) запис ($a); $_SESSION["id"] = intval($id); ) иначе $status=3; $_SESSION["име"] = htmlspecialchars_decode($име); $_SESSION["номер"] = intval($номер); header("Местоположение: index.php".($status==0?"":"?status=".$status)); ?>

Сега относно редактирането, то ще бъде внедрено в edit.php. Формата за редактиране е почти същата като тази за добавяне, просто ни мързеше да създадем отделна функция за показване на формуляра. По-важното е, че самият модул ще бъде процесор на данни, предавани чрез формата за редактиране, и следователно трябва да разграничи ситуацията, когато току-що е извикан от тази, когато потребителят е щракнал върху „Запазване“. Последната задача е да проверите

If (!empty($_POST["submit"]) && !empty($name) && isset($number) && isset($id)) (

определяне дали бутонът е натиснат и всички данни са прехвърлени. Втори клон -

Иначе ако (isset($a[$id])) (

е предназначен за ситуация, когато в масива $a има запис, чийто номер се предава на скрипта и трябва да се редактира. Входящият номер се съхранява в скрито HTML поле .

Файл edit.php
Име: Номер: обратно"; включете "foot.php"; изход (0); ) else $status = 2; заглавка ("Местоположение: index.php".($status==0?"":"?status=".$status) ); ?>

Модулът за премахване на записи del.php ще бъде доста прост, всичко, от което се нуждае, е да получи валиден запис $id (номер на елемент в масива $a), да премахне съответния елемент от масива, да пренапише файла и да се върне към основния модул страница.

Файл del.php

И накрая, сортиращият модул sort.php ще въведе нов проблем - как да сортирате Unicode низове по азбучен ред, без да правите разлика между главни и малки букви? "Директното" сортиране с помощта на стандартната функция за сортиране едва ли е подходящо - то счита малката и главната буква за различни знаци. Не сме задали локала, особено след като няма единна форма за въвеждане за всички операционни системи, за да го инсталирате.

Нека се ограничим до избора на usort от цялото разнообразие от функции за сортиране на масиви с персонализирана функция за сравняване на елементи.

Използваното „директно“ сравнение на едносимволни Unicode низове изглежда не е напълно правилно, но strcmp сравнява низовете байт по байт и не е подходящо за нас, но като цяло сравнението е правилно всякаквинизове в Unicode е много трудна задача... Всичко ми вървеше в системата за руски и английски например след сортиране получих естествен словоред като напр.

Абба, Авка, авклит, бася, Боби, Бобик, бобик, Бобина

Файл sort.php
$cb) връща 1; ) ако ($alen<$blen) return -1; else if ($alen>$blen) връща 1; иначе върне 0; ) usort($a,"cmp"); запис($a); заглавие ("Местоположение: index.php"); ?>

Всичко, което трябва да направим, е да създадем файл в папката с име .htaccess, където ще зададем кодирането по подразбиране на Unicode и ще посочим директивите за настройка на кавички за сайта, така че...

В същата папка създайте празен (0 байта) файл data.txt (по избор, ако всички права са конфигурирани).

Файл.htaccess
AddDefaultCharset utf-8 php_flag magic_quotes_gpc изключен php_flag magic_quotes_runtime изключен php_flag magic_quotes_sybase изключен

Можете да видите какво се случи и да ме уведомите за проблемите, които сте открили, написах сценария много бързо, в 2 стъпки и може да не съм обмислил нещо :)



Свързани публикации