PHP: vytvorenie „mini-DB“ v textovom súbore. Htmlspecialchars – Konvertuje špeciálne znaky na HTML entity Vlastný obrázok na pozadí alebo pozadie


ozvena" ";
ozvena" ";
ozvena" ";
echo "Ahoj, dnes je";
echo date("l, F jS, Y"); // ďalší php kód tu echo "

";
ozvena"";
?>

Toto však ovplyvní voľbu HTML Code Coloring vo väčšine HTML/PHP editorov, ktorá umožňuje jednoduché pochopenie úlohy HTML tagov. Každú dvojitú úvodzovku v kóde HTML by ste mali ukončiť spätnou lomkou.

PHP v HTML - prípony súborov

Ak daný súbor obsahuje kód PHP, musí mať príponu PHP. Vo väčšine prípadov je to .php, ale môžete tiež nakonfigurovať súbor .htaccess na čítanie kódu PHP v súbore HTML bez toho, aby ste ho premenovali alebo zmenili jeho príponu. Nižšie si môžete pozrieť "obslužné nástroje", ktoré bude potrebné pridať, aby ste to dosiahli

Pre normálne nakonfigurovaný webový server:

AddHandler cgi-script .html .htm

Webový server so systémom FastCGI:

AddHandler fcgid-script .html .htm Poznámka: toto je testované a funguje s webhostingovými servermi NTC. Ak používate iného poskytovateľa hostingu, požiadajte ho o pomoc. Okrem toho, ak tam čelíte neustálym problémom, môžete zvážiť prechod na NTC Hosting, aby ste získali stabilné servery optimalizované pre PHP, ktoré potrebujete.

HTML v PHP

HTML kód môžete použiť aj v PHP skripte. To môže byť veľmi užitočné, ak ste si celú stránku vytvorili v PHP, ale chcete napríklad zahrnúť vlastný HTML formulár. Všetko, čo musíte urobiť, je obrátiť poradie otváracích značiek HTML a PHP a otvoriť stránku pomocou PHP:

Použitie HTML v PHP:


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


Osobné informácie



Krstné meno:

Priezvisko:


echo "Dobrý deň, ".$Fname." ".$Lname.".
";
?>

Aj keď to vyzerá trochu komplikovane, v skutočnosti vám to ušetrí veľa kódu. Tu používame superglobálnu hodnotu $PHP_SELF, ktorá nám umožňuje použiť hodnotu polí špecifikovaných pod ňou v rovnakom súbore. Zvyčajne sa pre takéto formuláre vytvoria dva súbory - prvý je samotný HTML formulár a druhý je backendový PHP súbor, ktorý vykonáva všetku prácu.

Ak už máte komplikovanú PHP aplikáciu, ktorá sa spolieha na veľké množstvo súborov, a chcete mať všetko čo najjednoduchšie, môže vám to veľmi pomôcť.

PHP s NTC hostingom

NTC Hosting ponúka svojim klientom dokonalé riešenie webhostingu. Všetky naše plány webhostingu poskytujú podporu pre HTML a dávajú vám možnosť vybrať si medzi

Ako v každom remesle, aj v PHP existuje množstvo rôznych trikov, ktoré výrazne pomáhajú uľahčiť život jednoduchého programátora. Tu sú niektoré z týchto trikov.

Trik 1: odovzdávanie polí z formulára.

Z formulára HTML môžete prenášať nielen hodnoty (premenné), ale aj polia. Povedzme, že máme formulár s nasledujúcim poľom:

Pri odosielaní údajov z formulára dostane PHP skript hodnotu z poľa nákladu ako premennú $cargo. Ak však zadáte „cargo“ namiesto „cargo“, pole už nebude odosielať premennú do skriptu, ale pole $cargo, ktorého jediný prvok bude mať kľúč jeden a obsah poľa hodnota. Pri automatickom generovaní formulára (povedzme pri generovaní cenníka s mnohými položkami) je tento trik skutočne nenahraditeľný a spracovanie poľa pomocou skriptu je oveľa jednoduchšie organizovať ako analyzovať kopu premenných s názvami ako tovar1, tovar2 atď. .

Trik 2: skrátený formulár na písanie podmienky v PHP.

Dizajn...

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

Je oveľa jednoduchšie (a kratšie) uviesť to v skrátenej forme:

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

Trik 3: analýza tlačidiel HTML „odoslať“.

Tlačidlo „odoslať“ HTML, ako viete, odošle údaje formulára HTML na server (v našom prípade na spracovanie pomocou skriptu PHP). Čo ak však formulár vyžaduje niekoľko tlačidiel, ktoré poskytujú rôzne možnosti spracovania údajov? Keď čelia tejto úlohe, z nejakého dôvodu si len málo ľudí pamätá, že tlačidlá „odoslať“ majú svoj vlastný atribút „hodnota“. Nie, samozrejme, každý vie, že tento atribút zobrazuje nápis na tlačidle, ale spravidla sa mu nepripisuje žiadny iný význam. Medzitým, ak tlačidlá typu „odoslať“ majú atribút „name“, text štítkov na tlačidlách sa odošle z formulára na server spolu s ďalšími údajmi a môže byť analyzovaný skriptom, ktorý umožní rôzne spracovanie údajov, ktoré sa má vykonať stlačením rôznych tlačidiel typu „odoslať“ tak, ako si vaše srdce želá. Výhodou tohto triku je, že v tomto prípade nie sú potrebné žiadne „skryté“ polia.

Trik 4: neexistujúce parametre funkcie PHP.

Je dobre známe, že pri volaní funkcií v PHP musíte zadať presne rovnaký počet premenných, aký má funkcia akceptovať:

$hour=16;~^~$minute=35;~^~echo today_is($hour,$minute);~^~...~^~funkcia today_is($hour,$minute);~^~(~ ^~...~^~)

Menej známe je, že v hlavičke funkcie môžete zadať predvolené hodnoty pre premenné (na použitie v prípade chýbajúcich hodnôt premenných alebo samotných premenných pri prístupe zvonku), čo vám umožňuje pristupovať k funkcii ľubovoľným počet premenných alebo ich nešpecifikujte vôbec:

funkcia today_is($hour=16,$minute=0)~^~(~^~...~^~)

Trik 5: Zabráňte ukladaniu skriptov JS a štýlov CSS do vyrovnávacej pamäte.

Koľko ľudí každý deň nadáva po zmene obsahu JS skriptu alebo CSS štýlov a zistení, že prehliadač pevne uložil starú verziu do vyrovnávacej pamäte a nechce zobraziť výsledky novej. Najmä tí, ktorí majú vo svojej firme prístup na internet cez proxy server. Čo sa v takýchto prípadoch nerobí: do sekcie meta sa umiestňujú hlavičky s vypršanou platnosťou, anti-caching atď. Medzitým niekedy stačí zadať pseudoparameter po spomenutí príslušného súboru vo forme náhodného čísla generované krátkym kúskom PHP kódu:

Aby sa pri otvorení stránky vždy načítala len najnovšia verzia súboru.

Trik 6: úvodzovky, apostrofy a interpretácia textu.

Často je zvykom pristupovať k výberu kontajnera pre reťazcové (textové) hodnoty trochu neopatrne. Ale márne: veľa ľudí zabúda, že interpret PHP vždy analyzuje obsah dvojitých textových úvodzoviek (") na prítomnosť premenných, pričom je absolútne ľahostajný k obsahu kontajnerov jednoduchých úvodzoviek (apostrofov) a priraďuje ich presne k znaku. postava bez výkladu.

Preto je vhodnejšie uzatvárať texty s premennými do nerozbitných dvojitých úvodzoviek:

$text="Dobrý deň, $(klient)!";

Ale nečitateľný kód s apostrofmi beží výrazne rýchlejšie, najmä v slučkách:

$text=Dobrý deň, .$klient.!;

Trik 7: Okamžitý výber.

Ďalším skvelým spôsobom, ako urýchliť vykonávanie skriptu, je namiesto okamžitého a zakaždým zobraziť všetko, čo príde s príkazom pod ruku ozvena, zhromažďujte obsah testu v premennej a potom túto premennú vytlačte raz:

$mytext="variant 1";~^~$mytext.=" kódovať";~^~$mytext.=" prístup";~^~echo $mytext;

Upozorňujeme, že operácia zreťazenia je napísaná v skrátenej forme: $mytext.=, ale nie $mytext=$mytext.. Úspora času – až desaťnásobné skrátenie výstupného času. Pôsobivé?

Trik 8: Odovzdanie poľa typových polí začiarkavacie políčko.

Trik #1 nám umožňuje odovzdávať polia z HTML formulára. A v tomto triku analyzujme inú situáciu: predpokladajme, že potrebujeme odovzdať pole z formulára, ktorý má iba polia ako začiarkavacie políčko(ide o malý štvorec, v ktorom sa po kliknutí objaví začiarknutie). Máme napríklad zoznam miest, z ktorého si používateľ môže vybrať mestá, ktoré potrebuje, no pri odosielaní údajov chceme zaslať nielen identifikátory používateľom vybraných miest, ale aj mená tých druhých. A skryté polia ako skryté Naozaj nechceme robiť nič vedľa začiarkavacích políčok (aby sme nezaťažili kód stránky a množstvo údajov odosielaných na server). Čo mám robiť?

Riešenie je veľmi jednoduché. Ako viete, predvolene pole typu začiarkavacie políčko(takto, môžete na to dokonca kliknúť: ) môže mať zvyčajne hodnotu „on“ (pole je vybraté, to znamená, že je v ňom začiarknuté) alebo „off“ (pole nie je vybraté). Pre pole môžete zadať aj alternatívnu hodnotu, napríklad 1. Nie každý si však myslí, že pre toto pole môžete zadať akúkoľvek hodnotu, dokonca aj text románu Vojna a mier. A táto hodnota bude starostlivo prenesená do serverových skriptov na analýzu a spracovanie:

Používateľ vyberie požadované položky, klikne na tlačidlo „Odoslať“ a na server sa odošle pole vybraných začiarkavacích políčok, v ktorých je možnosť názov checkbox je názov premennej a možnosť hodnotu- jeho význam. Aplikovaný na PHP toto je ekvivalentné s riadkom:

$id548=Toyota Landcruiser;

Teraz si opäť pripomeňme trik číslo 1 Povedzme, že nechceme analyzovať veľa premenných, ale namiesto toho chceme analyzovať jedno pole. Je to tiež jednoduché:

A ako výsledok výskytu dvoch hranatých zátvoriek okolo čísla v argumente opcie názov zaškrtávacie políčko, už to nie je premenná, ktorá sa odosiela na server id 548 dolárov a prvok poľa $id s kľúčom 548.

Výsledok? Celkom dobre: ​​z jedného zaškrtávacieho políčka sme odovzdali serveru až tri parametre – názov poľa, kľúč prvku a jeho hodnotu, bez akýchkoľvek ďalších skrytých polí a zbytočného HTML kódu.

(PHP 4, PHP 5, PHP 7)

htmlšpeciálne znaky — Konvertuje špeciálne znaky na HTML entity

Popis

Reťazec htmlšpeciálne znaky (string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]])

V HTML majú niektoré znaky špeciálny význam a musia byť reprezentované ako HTML entity, aby sa zachoval ich význam. Táto funkcia vráti reťazec, ktorý prešiel týmito konverziami. Ak potrebujete previesť všetky možné entity, použite htmlentities().

Ak vstupný reťazec odovzdaný tejto funkcii a výsledný dokument používajú rovnaké kódovanie znakov, potom táto funkcia postačuje na prípravu údajov na vloženie do väčšiny častí HTML dokumentu. Ak však údaje obsahujú znaky, ktoré nie sú definované v kódovaní znakov výsledného dokumentu, a očakávate, že tieto znaky budú uložené (ako číselné alebo pomenované entity), potom toto a htmlentities() funkcie (ktoré transformujú iba podreťazce so zodpovedajúcimi entitami). Je potrebné použiť funkciu mb_encode_numericentity().

Vykonajú sa tieto transformácie:

  • "&" (ampersand) sa skonvertuje na "&"
  • """ (dvojité úvodzovky) sa v režime skonvertuje na """. ENT_NOQUOTES nie je nastavená.
  • """ (jednoduché úvodzovky) sa skonvertuje na """ (alebo ") iba v režime ENT_QUOTES.
  • "<" (знак "меньше чем") преобразуется в "<"
  • ">" (znamienko väčšie ako) sa skonvertuje na ">"

Zoznam parametrov

Reťazec na konverziu ( reťazec).

Bitová maska ​​nasledujúcich príznakov, ktoré určujú spôsob spracovania úvodzoviek, nesprávne kódovanie a použitý typ dokumentu. Predvolená hodnota je ENT_COMPAT | ENT_HTML401.

Dostupné hodnoty parametrov príznakov
Konštantné meno Popis
ENT_COMPAT Skonvertuje dvojité úvodzovky, jednoduché úvodzovky ponechá nezmenené.
ENT_QUOTES Konvertuje dvojité aj jednoduché úvodzovky.
ENT_NOQUOTES Ponechá nezmenené dvojité aj jednoduché úvodzovky.
ENT_IGNORE Bez akýchkoľvek upozornení zahodí neplatné kódové sekvencie namiesto vrátenia prázdneho reťazca. Použitie tohto príznaku sa neodporúča, pretože môže viesť k » negatívnym bezpečnostným dôsledkom.
ENT_SUBSTITUTE Nahrádza nesprávne sekvencie kódu náhradným znakom Unicode U+FFFD pri použití UTF-8 a FFFD; pri použití iného kódovania namiesto vrátenia prázdneho reťazca.
ENT_DISALLOWED Nahradí neplatné kódy znakov pre daný typ dokumentu náhradným znakom Unicode U+FFFD (UTF-8) alebo FFFD; (pri použití iného kódovania) namiesto ponechania všetkého tak, ako je. To môže byť užitočné napríklad na zabezpečenie toho, aby dokumenty XML s vloženým externým obsahom boli formálne správne.
ENT_HTML401 Spracovanie kódu v súlade s HTML 4.01.
ENT_XML1 Spracovanie kódu v súlade s XML 1.
ENT_XHTML Spracovanie kódu v súlade s XHTML.
ENT_HTML5 Spracovanie kódu v súlade s HTML 5.
kódovanie

Voliteľný argument, ktorý určuje kódovanie použité pri konverzii znakov.

Ak nie je zadané, predvolená hodnota pre kódovanie závisí od používanej verzie PHP. V PHP 5.6 a starších je predvolená hodnota nastavená na konfiguračnú voľbu default_charset. V PHP 5.4 a 5.5 sa používa UTF-8 predvolená. Používajú sa staršie verzie PHP ISO-8859-1.

Aj keď je tento argument technicky voliteľný, dôrazne sa odporúča zadať správnu hodnotu pre váš kód, ak používate PHP 5.5 alebo vyššie, alebo ak vaša konfiguračná možnosť default_charset môže byť pre vstup nesprávne nastavená.

Na účely tejto funkcie kódovania ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252 A KOI8-R sú prakticky ekvivalentné, za predpokladu, že samotný reťazec obsahuje platné znaky v špecifikovanom kódovaní, potom sa znaky upravujú htmlspecialchars(), zostane na rovnakých miestach vo všetkých týchto kódovaniach.

Podporované sú nasledujúce kódovania:

Podporované kódovania
Kódovanie Prezývky Popis
ISO-8859-1 ISO8859-1 Západoeurópska latinčina-1.
ISO-8859-5 ISO8859-5 Zriedkavo používané kódovanie cyriliky (latinka/azbuka).
ISO-8859-15 ISO8859-15 Západoeurópska latinčina-9. Pridá znak eura, francúzske a fínske písmená do kódovania Latin-1 (ISO-8859-1).
UTF-8 8-bitový Unicode, kompatibilný s ASCII.
cp866 ibm866, 866 Kódovanie cyriliky používané v systéme DOS.
cp1251 Windows-1251, win-1251, 1251 Kódovanie cyriliky používané v systéme Windows.
cp1252 Windows-1252, 1252 Západoeurópske kódovanie používané v systéme Windows.
KOI8-R koi8-ru, koi8r Ruské kódovanie.
VEĽKÁ5 950 Tradičná čínština, používaná hlavne na Taiwane.
GB2312 936 Zjednodušená čínština, štandardná národná sada znakov.
BIG5-HKSCS Rozšírený Big5 používaný v Hong Kongu.
Shift_JIS SJIS, SJIS-win, cp932, 932 Japonské kódovanie.
EUC-JP EUCJP, eucJP-win Japonské kódovanie.
MacRoman Kódovanie používané v systéme Mac OS.
"" Prázdny riadok aktivuje režim na určenie kódovania zo súboru skriptu (Zend multibyte), default_charset a aktuálneho miestneho nastavenia (pozri. nl_langinfo() A setlocale()), v uvedenom poradí. Neodporúča sa používať.

Komentujte: Iné kódovania nie sú podporované; namiesto toho sa použije predvolené kódovanie a vygeneruje sa varovanie.

double_encode

Ak je možnosť double_encode zakázaná, PHP neprevedie existujúce html entity. V predvolenom nastavení sa všetko konvertuje bez obmedzení.

20,6 tis

PHP je vstavaný programovací jazyk na strane servera. Veľká časť jeho syntaxe je prevzatá z jazykov C, Java a Perl. Pribudlo aj niekoľko jedinečných funkcií špecifických pre PHP. Hlavným účelom tohto jazyka je vytvárať dynamicky generované PHP HTML stránky.

PHP do HTML

Pri vytváraní zložitých webových stránok budete čeliť potrebe kombinovať PHP a HTML, aby ste splnili špecifické úlohy. Na prvý pohľad sa to môže zdať komplikované, keďže PHP a HTML sú dve nezávislé disciplíny, ale nie je to tak. PHP je navrhnuté na interakciu s HTML a jeho kód môže byť zahrnutý do označenia stránky.

PHP kód je súčasťou HTML stránok pomocou špeciálnych značiek. Keď používateľ otvorí stránku, server spracuje kód PHP a potom odošle výsledok spracovania (nie PHP kód) do prehliadača.

HTML a PHP sa dajú celkom jednoducho skombinovať. Akákoľvek časť skriptu PHP mimo značiekje ignorovaný kompilátorom PHP a odovzdaný priamo prehliadaču. Ak sa pozriete na príklad nižšie, môžete vidieť, že úplný PHP skript môže vyzerať takto:

Ahoj dnes.

Vyššie uvedený kód je obyčajný HTML s malým kúskom PHP, ktorý tlačí aktuálny dátum pomocou vstavanej funkcie dátumu. V tomto prípade budú všetky HTML ignorované kompilátorom PHP a prenesené do prehliadača nezmenené.

Integrácia PHP do HTML je naozaj veľmi jednoduchá. Pamätajte, že skript je stránka HTML s nejakým PHP kódom. Môžete vytvoriť skript, ktorý bude obsahovať iba HTML (bez značiek), a bude to fungovať dobre.

Pokročilejšie metódy:

  • Položka menu


a výsledok:

PHP na HTML pomocou short_open_tag

Ak potrebujete pred vložením HTML do PHP skrátiť kód čo najkratšie, môžete použiť short_tags. V dôsledku toho nebudete musieť zadávaťshort_tags"s" Vypnuté"zapnuté" Zapnuté". Aj keď väčšina serverov už má túto možnosť povolenú, vždy je najlepšie to skontrolovať manuálne. Problém, ktorý môže nastať pri používaní krátkych značiek, je konflikt pri používaní XML. Vo výraze syntaxe XML

PHP na HTML pomocou short__tag

Dobrý deň, dnes je.

Majte na pamäti, že ak chcete vytvoriť web, ktorý je kompatibilný s čo najväčším počtom platforiem, nemali by ste sa pri vkladaní PHP do HTML spoliehať na short_tags.

HTML do PHP pomocou echo

Ďalším spôsobom, ako integrovať HTML do súboru PHP, je príkaz echo:.

To ovplyvní zvýraznenie značiek vo väčšine editorov. Preto je potrebné zvýrazniť všetky dvojité úvodzovky v rámci HTML kódu pomocou spätnej lomky.

PHP na HTML - prípony súborov

Pre štandardne nakonfigurovaný webový server:

AddHandler cgi-script .html .htm

Pre webový server so systémom FastCGI:

AddHandler fcgid-script .html .htm

HTML do PHP

HTML kód môžete použiť aj v PHP skriptoch. Všetko, čo musíte urobiť, je pri otváraní stránky pomocou PHP zmeniť poradie otvárania značiek HTML a PHP.

Prenos údajov cez pole $_SESSION je povolený raz; To môže byť užitočné napríklad pri „vracaní“ údajov zadaných v inom module do formulára.

Je dobré, keď sú všetky servisné funkcie spojené do jedného modulu, ktorý hlavné moduly spájajú cez direktívu require_once. Náš modul obslužných funkcií nazveme function.php a okrem spomínaných trimálnych a magických metód tam zaradíme tieto funkcie:

  • read() - prečíta aktuálnu databázu a vráti pole záznamov;
  • write($a) - zapíše pole záznamov $a do súboru;
  • get_index_by_name ($a,$name) - vyhľadá zodpovedajúcu položku podľa mena $name a vráti jej číslo (od nuly) alebo hodnotu -1, ak sa položka nenájde. Je to užitočné na rozlíšenie medzi pridaním nového záznamu a úpravou existujúceho záznamu.

Okrem toho súbor funkcií bude obsahovať konfiguračný súbor a spustí reláciu – tieto schopnosti môže potrebovať ktorýkoľvek modul, ktorý ho pripája.

súbor function.php
$item) ( zoznam ($myname,$moječíslo) = rozložiť (DIV, $item); if ($name == mb_strtolower(trimall($myname),"UTF-8")) return $index; ) return -1 ; ) ?>

Všimnite si, že funkcia read dodatočne filtruje pole záznamov z prázdnych reťazcov (pre prípad, že by sa vo všeobecnosti nemali vyskytovať) a trimall najskôr nahradí akýkoľvek neprázdny reťazec oddeľovačov jednou medzerou (druhá preg_replace) a potom odstráňte prípadné ďalšie oddeľovače na začiatku a konci zostávajúceho riadku (prvý preg_replace).

Existuje tiež nuansa s funkciou čítania z hľadiska kompatibility kódu. Keďže jeho jediný riadok obsahuje anonymnú funkciu, predpokladá sa, že je použitá verzia PHP nie nižšia ako 5.3. Ak je to potrebné, nahraďte nižšie uvedený kód kódom, kde je funkcia filtrovania pomenovaná alebo sa vôbec nepoužíva, ako napríklad tu:

Funkcia read () ( $str=@file_get_contents (FILENAME); $a=explode("\n",$str); return $a; )

Dôležité je aj správne pretypovanie reťazca Unicode na malé písmená (pozri mb_strtolower v kóde). Nepoužívame tu miestne nastavenie.

Zdá sa, že je čas napísať hlavný súbor index.php. Bude riešiť nasledujúce úlohy:

  • zobraziť formulár na pridanie nového záznamu, ktorý spracuje modul add.php;
  • vedľa pridávacieho formulára zobrazíme ďalšie príkazy - vymazanie formulára „samovolaním“ skriptu bez parametrov (tlačidlo sa sem nezmestí, pretože neprenáša dáta na server) a odkaz na prístup k modulu triedenia záznamov s názvom sort.php ;
  • prijímať výsledky svojej práce z iných modulov vo forme číselnej premennej $status a zobrazovať príslušné správy (pole $status_msg). Predvolene bude akceptovaná hodnota $stav rovnajúca sa nule, zodpovedá výstupu stručnej pomoci o činnosti programu;
  • ak databáza nie je prázdna, zobrazte jej záznamy a poskytnite prechod na úpravu alebo vymazanie.

Aby sme nepreťažili tabuľku ďalšími tlačidlami a odkazmi, kliknime podľa názvu tak, že prejdete na úpravu záznamu pomocou modulu edit.php a kliknete podľa poľa "Číslo" bude zodpovedať vymazaniu záznamu modulom del.php.

Takto to vyzerá s niekoľkými pridanými položkami:

Vzhľad skriptu "Mini-DB v textovom súbore"

súbor index.php
Názov: číslo: Vymazať triedenie"; $status_msg = pole ("Kliknutím na Názov upravíte alebo na Číslo vymažete položku", "Položka už existuje, hodnota v nej bola opravená", "Položka so zadaným číslom sa nenašla ", "Údaje na pridanie neboli prenesené") ; if (empty($status)) $stav = 0; echo "

".$status_msg[$status]."

"; if (count($a)>0) ( echo " "."\n". " "."\n"; foreach ($a ako $index=>$item) ( echo " "."\n"; zoznam ($meno, $číslo) = rozložiť (DIV,$položka); echo " "."\n". " "."\n". ""."\n"; ) echo "
názovčíslo
".htmlspecialchars(trimall($name)). "".intval(trimall($číslo)). "
"."\n"; ) zahrnúť "foot.php"; ?>

Teraz prejdime k chýbajúcim modulom. Zdá sa, že add.php má jednoduchú úlohu – získajte premenné $name a $number z index.php a zapíšte ich do súboru. Modul však musí kontrolovať, či sa mu odovzdávajú neprázdne údaje, a tiež musí vedieť rozlíšiť situáciu, keď je zadané meno, ktoré už v databáze existuje, od zápisu nového záznamu (pozri ak ($id>- 1) ( ... ) inak ( ... ) v kóde). V druhom prípade sa záznam vždy pridáva na koniec, pretože tam bude modul na abecedné triedenie reťazcov.

Je tiež dôležité, aby reťazec $name, ktorý „prešiel“ cez obslužný program parametra, už neobsahoval „kritické“ značkovacie znaky ako „, „,< и >a v poli $a načítanom z dátového súboru sú všetky riadky „tak, ako sú“ a<>123 sa nenájde, ak sa $name po spracovaní otočí<>123. Preto je funkcii vyhľadávania záznamov, ktorú nazývame get_index_by_name , odovzdaný reťazec skonvertovaný „späť“ do pôvodnej podoby pomocou štandardnej funkcie htmlspecialchars_decode (dostupná od PHP 5.1). V rovnakej forme sa reťazec vráti späť do index.php cez pole $_SESSION. To poskytne určité pohodlie - po zadaní nového záznamu jeho údaje zostanú vo formulári a bude možné zadať iný záznam, mierne odlišný v názve ("Ivanova" po "Ivanov").

No návrat z modulu do modulu je úplne štandardný – prostredníctvom štandardnej funkcie hlavičky. Pamätajte, že ho možno použiť iba vtedy, ak modul ešte nič nevypísal do prehliadača.

add.php súbor
-1) ( zoznam ($name,$number0) = rozložiť (DIV,$a[$id]); $a[$id] = $nový_string;; $stav=1; ) else ( $id = count($ a)+1 pole_push ($a,$novy_string) zapis ($a); $_SESSION["id"] = intval($id); ) inak $stav=3; $_SESSION["meno"] = htmlspecialchars_decode($name); $_SESSION["číslo"] = intval($číslo); header("Location: index.php".($status==0?"":"?status=".$status)); ?>

Teraz o editácii, bude implementovaná v edit.php. Editačný formulár je takmer rovnaký ako pridávanie, len sme boli leniví vytvoriť samostatnú funkciu na zobrazenie formulára. Ešte dôležitejšie je, že samotný modul bude spracovateľom dát prenášaných cez editačný formulár, a preto musí rozlíšiť situáciu, kedy je práve volaný, od toho, keď používateľ klikol na „Uložiť“. Poslednou úlohou je kontrola

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

určenie, či bolo stlačené tlačidlo a boli prenesené všetky údaje. Druhá vetva -

Else if (isset($a[$id])) (

je určený pre situáciu, keď sa v poli $a nachádza záznam, ktorého číslo sa odovzdá skriptu a treba ho upraviť. Číslo položky je uložené v skrytom poli HTML .

Súbor edit.php
Názov: číslo: späť"; include "foot.php"; exit (0); ) else $status = 2; header ("Location: index.php".($status==0?"":"?status=".$status) ?>

Modul na odstraňovanie záznamov del.php bude celkom jednoduchý, všetko, čo potrebuje, je získať platný záznam $id (číslo prvku v poli $a), odstrániť zodpovedajúci prvok z poľa, prepísať súbor a vrátiť sa do hlavného modulu stránku.

Súbor del.php

Nakoniec triediaci modul sort.php predstaví nový problém – ako triediť Unicode reťazce podľa abecedy bez rozlišovania medzi veľkými a malými písmenami? „Priame“ triedenie pomocou štandardnej funkcie triedenia je sotva vhodné – malé a veľké písmeno považuje za rozdielne znaky. Nenastavili sme miestne nastavenie, najmä preto, že neexistuje jediný formulár na inštaláciu pre všetky operačné systémy.

Obmedzme sa na výber usort z celej palety funkcií na triedenie polí s vlastnou funkciou na porovnávanie prvkov.

Zdá sa, že použité „priame“ porovnanie jednoznakových reťazcov Unicode nie je úplne správne, ale strcmp porovnáva reťazce bajt po byte a nie je pre nás vhodné, ale vo všeobecnosti je porovnanie správne akýkoľvek strings v Unicode je veľmi náročná úloha... Všetko mi fungovalo v systéme pre ruštinu a angličtinu, napríklad po zoradení som dostal prirodzené slovosledy, ako napr.

Abba, Avka, avklit, basya, Bobi, Bobik, bobik, Bobina

Súbor sort.php
$cb) návrat 1; ) ak ($alen<$blen) return -1; else if ($alen>$blen) návrat 1; inak vráti 0; ) usort($a,"cmp"); písať ($a); header("Umiestnenie: index.php"); ?>

Stačí, ak vytvoríme súbor v priečinku s názvom .htaccess , kde nastavíme predvolené kódovanie na Unicode a uvedieme smernice pre nastavenie úvodzoviek pre stránku, takže...

V tom istom priečinku vytvorte prázdny (0 bajtov) súbor data.txt (voliteľné, ak sú nakonfigurované všetky práva).

Súbor.htaccess
AddDefaultCharset utf-8 php_flag magic_quotes_gpc vypnuté php_flag magic_quotes_runtime vypnuté php_flag magic_quotes_sybase vypnuté

Môžete vidieť, čo sa stalo, a dajte mi vedieť o problémoch, ktoré ste našli, scenár som napísal veľmi rýchlo, v 2 krokoch a možno som niečo nepremyslel :)



Súvisiace publikácie