Existencia PHP premennej. Premenné, ak - PHP: skontrolujte, či premenná existuje, ale má aj hodnotu, ktorá sa niečomu rovná

  • 20.06.2020

Materiál je určený hlavne pre začínajúcich programátorov webu.

Úvod.

Často ma oslovujú klienti, ktorí si nainštalovali vlastné CMS alebo moduly napísané začínajúcimi webovými programátormi, ktorí nerozumejú tomu, čo je potrebné na ochranu údajov a často kopírujú funkcie filtrovania bez toho, aby premýšľali o tom, ako fungujú a čo presne je s nimi potrebné urobiť. .

Tu sa pokúsim čo najpodrobnejšie popísať bežné chyby pri filtrovaní dát v PHP skripte a dať jednoduché tipy, ako dáta správne filtrovať.

Na internete je veľa článkov o filtrovaní údajov, no nie sú úplné a bez podrobných príkladov.

Debrífing.

Filtrácia. Chyba #1
Pre číselné premenné sa používa táto kontrola:
$číslo = $_GET["vstupné_číslo"]; if (intval($number)) ( ... spustiť SQL dotaz... )
Prečo to povedie k vstrekovaniu SQL? Ide o to, že užívateľ môže špecifikovať v premennej vstupné_číslo význam:
1"+UNION+SELECT
V takýchto prípadoch bude kontrola úspešne dokončená, pretože funkcia intval dostane celočíselnú hodnotu premennej, t.j. 1, ale v samotnej premennej $číslo sa nič nezmenilo, takže všetok škodlivý kód bude odovzdaný SQL dotazu.
Správne filtrovanie:
$cislo = intval($_GET["vstupne_cislo"]); if ($number) ( ... spustiť SQL dotaz... )
Podmienka sa samozrejme môže zmeniť, napríklad ak potrebujete získať iba určitý rozsah:
if ($číslo >= 32 A $číslo<= 65)

Ak používate začiarkavacie políčka alebo viacnásobné výbery s číselnými hodnotami, vykonajte nasledujúcu kontrolu:
$checkbox_arr = array_map("intval", $_POST["checkbox"]);
array_map
Filtrovanie vidím aj vo forme:
$cislo = htmlspecialchars(intval($_GET["vstupne_cislo"]));
htmlšpeciálne znaky
alebo:
$cislo = mysql_escape_string(intval($_GET["vstupne_cislo"]));
mysql_escape_string

Toto nemôže vyvolať nič iné ako úsmev :)

Filtrácia. Chyba #2.
Pre reťazcové premenné sa používa nasledujúce filtrovanie:
$input_text = addlashes($_GET["vstupný_text"]);
Funkcia lomítka uniká zvláštnosti. znakov, ale neberie do úvahy kódovanie databázy a filtrovanie sa dá obísť. Nebudem kopírovať text autora, ktorý opísal túto zraniteľnosť a jednoducho dám odkaz na Chrisa Shifletta (preklad si môžete vyhľadať v RuNet).

Použite funkciu mysql_escape_string alebo mysql_real_escape_string, príklad:
$vstupny_text = mysql_escape_string($_GET["vstupny_text"]);
Ak neočakávate zahrnutie html značiek, potom je najlepšie vykonať nasledujúce filtrovanie:
$vstupny_text = strip_tags($_GET["vstupny_text"]); $vstupny_text = htmlspecialchars($vstupny_text); $vstupny_text = mysql_escape_string($vstupny_text);
strip_tags - odstráni html značky.
htmlspecialchars - konvertuje špeciálne. znaky v html entitách.
Takto sa okrem SQL injection ochránite aj pred XSS útokmi.
Ak potrebujete html značky, ale iba na zobrazenie zdrojového kódu, použite:
$vstupny_text = htmlspecialchars($_GET["vstupny_text"]); $vstupny_text = mysql_escape_string($vstupny_text);

Ak je pre vás dôležité, aby hodnota premennej nebola prázdna, použite funkciu trim, príklad:
$vstupny_text = trim($_GET["vstupny_text"]); $vstupny_text = htmlspecialchars($vstupny_text); $vstupny_text = mysql_escape_string($vstupny_text);

Filtrácia. Chyba #3.
Ide o vyhľadávanie v databáze.
Na vyhľadávanie podľa čísel použite filtrovanie popísané v prvej chybe.
Na vyhľadávanie podľa textu použite filtrovanie popísané v druhej chybe, ale s výhradami.
Aby používateľ nemohol vykonať logickú chybu, je potrebné odstrániť alebo odfiltrovať špeciál. SQL znaky.
Príklad bez dodatočných spracovanie reťazcov:
$vstupny_text = htmlspecialchars($_GET["vstupny_text"]); // Hľadanie: "%" $input_text = mysql_escape_string($input_text);
Výstupom bude dotaz ako:
... WHERE text_row LIKE "%".$input_text."%" ... // WHERE text_row LIKE "%%%"
Tým sa výrazne zvýši zaťaženie základne.
V mojom skripte používam funkciu, ktorá z vyhľadávania odstraňuje znaky, ktoré nechcem:
function strip_data($text) ( $quotes = pole ("\x27", "\x22", "\x60", "\t", "\n", "\r", "*", "%", "<", ">", "?", "!"); $goodquotes = pole ("-", "+", "#"); $repquotes = pole ("\-", "\+", "\#"); $text = trim(strip_tags($text)); $text = str_replace($quotes, "", $text) $text = str_replace($goodquotes, $repquotes, $text = ereg_replace(" +"); , " ", $text); návrat $text)
Samozrejme, nie všetky vyššie uvedené znaky sú nebezpečné, ale v mojom prípade nie sú potrebné, preto vykonávam vyhľadávanie a nahrádzanie.
Príklad použitia filtrovania:
$vstupny_text = strip_data($_GET["vstupny_text"]); $vstupny_text = htmlspecialchars($vstupny_text); $vstupny_text = mysql_escape_string($vstupny_text);
Tiež vám odporúčam obmedziť počet znakov vo vyhľadávaní, aspoň nie menej ako 3, pretože... ak máte v databáze veľké množstvo záznamov, tak vyhľadávanie 1-2 znakov výrazne zvýši záťaž databázy.
Filtrácia. Chyba #4.
Hodnoty v premennej nie sú filtrované $_COOKIE. Niektorí ľudia si myslia, že keďže táto premenná nemôže prejsť cez formulár, je to záruka bezpečnosti.
Túto premennú je možné veľmi ľahko sfalšovať pomocou ľubovoľného prehliadača úpravou súborov cookie stránok.
Napríklad v jednom známom CMS bola kontrola použitej šablóny stránky:
if (@is_dir (MAIN_DIR . "/template/" . $_COOKIE["skin"]))( $config["skin"] = $_COOKIE["skin"]; ) $tpl->dir = MAIN_DIR . "/šablóna/". $config["skin"];
V tomto prípade môžete nahradiť hodnotu premennej $_COOKIE["koža"] a spôsobiť chybu, kde uvidíte absolútnu cestu k priečinku lokality.
Ak použijete hodnotu cookie na uloženie do databázy, potom použite jeden z vyššie popísaných filtrov, to platí aj pre premennú $_SERVER.
Filtrácia. Chyba #5.
Vrátane smernice register_globals. Nezabudnite ho vypnúť, ak je zapnutý.
V niektorých situáciách môžete odovzdať hodnotu premennej, ktorá nemala byť odovzdaná, napríklad ak má stránka skupiny, potom pre skupinu 2 premenná $group by mala byť prázdna alebo rovná 0, ale stačí na falošné formulár pridaním kódu:

V premennej skriptu PHP $skupina sa bude rovnať 5, ak nebol deklarovaný v skripte s predvolenou hodnotou.
Filtrácia. Chyba číslo 6.
Skontrolujte stiahnuté súbory.
Skontrolujte nasledujúce body:
  1. Rozšírenie súboru. Je vhodné zakázať sťahovanie súborov s príponami: php, php3, php4, php5 atď.
  2. Je súbor nahraný na server move_uploaded_file
  3. veľkosť súboru
Vyšetrenie. Chyba #1.
Stretol som sa s prípadmi, keď na požiadavku AJAX (napríklad: zvýšenie reputácie) bolo odovzdané meno alebo ID používateľa (komu sa reputácia zvyšovala), ale v samotnom PHP nebola žiadna kontrola existencie takéhoto používateľa.
Napríklad:
$user_id = intval($_REQUEST["user_id"]); ... INSERT INTO REPLOG SET uid = "($user_id)", plus = "1" ... ... AKTUALIZÁCIA SADA POUŽÍVATEĽOV reputácia = reputácia+1 WHERE user_id = "($user_id)" ...
Ukazuje sa, že vytvárame záznam v databáze, ktorý je nám úplne zbytočný.
Vyšetrenie. Chyba #2.
Pri vykonávaní rôznych typov akcií (pridávanie, úprava, mazanie) s údajmi nezabudnite skontrolovať práva používateľa na prístup k tejto funkcii a doplnkovým funkciám (pomocou html značiek alebo možnosti publikovať materiál bez overenia).

Už dávnejšie som opravil podobnú chybu v jednom module fóra, kedy mohol ľubovoľný užívateľ upraviť správu do administrácie.

Vyšetrenie. Chyba #3.
Pri použití viacerých súborov php vykonajte jednoduchú kontrolu.
V súbore index.php(alebo v akomkoľvek inom hlavnom súbore) pred pripojením iných súborov php napíšte nasledujúci riadok:
define("READFILE", true);
Na začiatok ostatných súborov php napíšte:
if (! definované ("READFILE")) ( exit ("Chyba, nesprávna cesta k súboru.
Prejdite na hlavnú."); }
Tým sa obmedzí prístup k súborom.
Vyšetrenie. Chyba #4.
Použite hash pre používateľov. Pomôže to zabrániť volaniu tej či onej funkcie cez XSS.
Príklad zostavenia hash pre používateľov:
$tajný_kľúč = md5(strtolower("http://site.ru/" . $člen["meno"] . sha1($heslo) . dátum("Ymd"))); // $secret_key je náš hash
Ďalej vo všetkých dôležitých formulároch nahraďte vstup hodnotou aktuálneho hashu používateľa:

Počas spúšťania skriptu skontrolujte:
if ($_POST["secret_key"] !== $secret_key) ( exit ("Error: secret_key!"); )
Vyšetrenie. Chyba #5.
Pri výstupe chýb SQL urobte jednoduché obmedzenie prístupu k informáciám. Napríklad nastavte heslo pre premennú GET:
if ($_GET["passsql"] == "heslo") ( ... výstup chyby SQL... ) else ( ... Iba informácie o chybe, žiadne podrobnosti... )
To vám umožní pred hackerom skryť informácie, ktoré by mu mohli pomôcť hacknúť stránku.
Vyšetrenie. Chyba #5.
Snažte sa nezahŕňať súbory získavaním názvov súborov zvonku.
Napríklad:
if (isset($_GET["názov_súboru"])) (zahrnúť $_GET["názov_súboru"] .".php"; )
Použite prepínač

Chcem skontrolovať, či existuje premenná. Teraz robím niečo takéto:

Skúste: myVar okrem NameError: # Urobte niečo.

Existujú iné spôsoby bez výnimiek?


2018-05-09 13:10

Odpovede:

Ak chcete skontrolovať prítomnosť lokálnej premennej:

Ak "myVar" v locals(): # myVar existuje.

Ak chcete skontrolovať prítomnosť globálnej premennej:

Ak "myVar" v globals(): # myVar existuje.

Ak chcete skontrolovať, či má objekt atribút:

If hasattr(obj, "attr_name"): # obj.attr_name existuje.


2018-05-09 13:16

Používanie premenných, ktoré neboli definované alebo nastavené (implicitne alebo explicitne), je takmer vždy zlé akýkoľvek pretože to naznačuje, že logika programu nebola správne premyslená a pravdepodobne povedie k nepredvídateľnému správaniu.

Ďalší trik, ktorý je podobný tomu vášmu, zabezpečí, že premenná má niektoré hodnota pred použitím:

Skúste: myVar okrem NameError: myVar = None # Teraz môžete voľne používať myVar bez sťažovania Pythonu.

Stále si však nemyslím, že je to dobrý nápad – podľa môjho názoru by ste mali prefaktorovať svoj kód, aby ste zabránili tejto situácii.


2018-05-09 13:19

Najlepším spôsobom, ako skontrolovať existenciu premennej, je použiť try / okrem. Ale takmer určite existuje lepší spôsob, ako robiť to, čo robíte, ako nastavovanie/testovanie globálnych premenných.

Napríklad, ak chcete inicializovať premennú na úrovni modulu pri prvom volaní nejakej funkcie, bolo by pre vás lepšie s kódom niečo takého:

My_variable = Žiadne def InitMyVariable(): globálna moja_premenná, ak je moja_premenná Žiadna: moja_premenná = ...


2018-05-09 13:27

pre objekty/moduly môžete tiež

"var" v dir(obj)

Napríklad,

>>> trieda Niečo(objekt): ... prejsť ... >>> c = Niečo() >>> c.a = 1 >>> "a" v dir(c) Pravda >>> "b" v dir (c) Nepravdivé


2017-10-28 18:39

Jednoduchý spôsob je najprv ho inicializovať pomocou myVar = None

Potom neskôr:

Ak myVar nie je None: # Urobte niečo


2018-06-04 18:46

Hádam, že test sa použije vo funkcii podobnej odpovedi používateľa 97370 Táto odpoveď sa mi nepáči, pretože znečisťuje globálny menný priestor. Jedným zo spôsobov, ako to vyriešiť, je použiť namiesto toho triedu:

Trieda InitMyVariable(object): my_variable = None def __call__(self): ak self.my_variable je None: self.my_variable = ...

Nepáči sa mi to, pretože to komplikuje kód a otvára otázky, ako napríklad, či to potvrdzuje programovací vzor Singleton? Našťastie Python povolil, aby funkcie mali na chvíľu atribúty, čo nám dáva toto jednoduché riešenie:

Def InitMyVariable(): ak je InitMyVariable.my_variable Žiadne: InitMyVariable.my_variable = ... InitMyVariable.my_variable = Žiadne


2018-03-25 20:31

2018-05-09 13:12

Spôsob, ktorý často funguje dobre pri riešení tohto druhu situácie, je explicitne nekontrolovať, či premenná existuje, ale jednoducho pokračovať a zabaliť prvé použitie možno neexistujúcej premennej do try/okrem NameError.

nulová funkcia (11)

Mám (alebo nemám) premennú $_GET["myvar"] pochádzajúcu z môjho reťazca dopytu a chcem skontrolovať, či táto premenná existuje a či sa hodnota zhoduje s niečím v mojom príkaze if:

To, čo robím a čo si myslím, nie je najlepší spôsob:

if(isset($_GET["myvar"]) && $_GET["myvar"] == "niečo") : urobiť niečo

Toto je jednoduchý prípad, ale predstavte si, že musíte porovnávať mnohé z týchto premenných $myvar.

Odpovede

Je to podobné ako prijatá odpoveď, ale namiesto toho používa in_array. V tejto situácii radšej používam empty(). Odporúčam tiež použiť novú deklaráciu poľa reťazcov, ktorá je dostupná v PHP 5.4.0+.

$povolené = ["niečo","nič"]; if(!empty($_GET["myvar"]) && in_array($_GET["myvar"],$allowed))(..)

Tu je funkcia na kontrolu viacerých hodnôt naraz.

$arrKeys = array_keys($_GET); $povolené = ["niečo","nič"]; function checkGet($arrKeys,$allowed) ( foreach($arrKeys ako $key) ( if(in_array($_GET[$key],$allowed)) ( $values[$key]; ) ) return $values; )

Používam všetky svoje užitočné funkcie exst(), ktorý automaticky deklaruje premenné.

$element1 = exst($arr["key1"]); $val2 = exst($_POST["key2"], "novavale"); /** * Funkcia exst() - Skontroluje, či bola premenná nastavená * (skopírujte/prilepte ju na ľubovoľné miesto kódu) * * Ak je premenná nastavená a nie je prázdna, vráti premennú (bez transformácie) * Ak premenná nie je nastavené alebo prázdne, vráti $predvolenú hodnotu * * @param mixed $var * @param mixed $default * * @return mixed */ function exst(& $var, $default = "") ( $t = "" ; if (!isset($var) || !$var) ( if (isset($default) && $default != "") $t = $default; ) else ( $t = $var; ) if (is_string ($t)) $t = trim ($t);

No, môžete si vystačiť s if($_GET["myvar"] == "niečo"), pretože táto podmienka predpokladá, že premenná tiež existuje. Ak nie, výraz bude mať za následok aj hodnotu false .

Myslím, že je v poriadku to urobiť v podmienkach, ako je uvedené vyššie. Naozaj žiadna škoda.

Moja otázka znie: existuje spôsob, ako to urobiť bez deklarovania premennej dvakrát?

Nie, neexistuje spôsob, ako to urobiť správne bez vykonania dvoch kontrol. Aj ja to neznášam.

Jedným zo spôsobov, ako to obísť, je importovať všetky relevantné premenné GET v jednom centrálnom bode do poľa alebo objektu nejakého typu (väčšina MVC to robí automaticky) a nastaviť všetky vlastnosti, ktoré sú potrebné neskôr. (Namiesto prístupu k premenným dopytu prostredníctvom kódu.)

If (isset($_GET["myvar"]) == "niečo")

Vďaka Mellowsoonovi a Pekkovi som tu urobil nejaký prieskum a prišiel som na toto:

  • Pred použitím skontrolujte a deklarujte každú premennú ako null (ak áno):
!isset($_GET["myvar"]) ? $_GET["myvar"] = 0:0;

*ok, je to jednoduché, ale funguje to skvele, premennú môžete začať používať všade po tomto riadku

  • Použitie poľa pre všetky prípady:
$myvars = array("var1", "var2", "var3"); foreach($myvars ako $key) !isset($_GET[$key]) ? $_GET[$key] =0:0;

*Potom môžete použiť svoje premenné (var1, var2, var3... atď.)

PS: funkcia prijímajúca objekt JSON by mala byť lepšia (alebo jednoduchý reťazec oddelený zhlukom/explóziou);

Lepšie prístupy sú vítané :)

AKTUALIZÁCIA:

Použite $_REQUEST namiesto $_GET, týmto spôsobom pokryjete premenné $_GET a $_POST.

Isset($_REQUEST[$key]) ? $_REQUEST[$key] =0:0;

Riešenie, ktoré som našiel v hre, je urobiť:

If($x=&$_GET["myvar"] == "niečo") ( // robiť veci s $x )

Ako pomôcku môžete zvážiť tento prístup:

Povinné = array("myvar" => "defaultValue1", "foo" => "value2", "bar" => "value3", "baz" => "value4"); $chýba = array_diff($požadované, array_keys($_GET)); foreach($chýba ako $key => $default) ( $_GET[$key] = $default ; )

Nastavíte predvolené hodnoty a neprijaté parametre nastavíte na predvolenú hodnotu :)

Bohužiaľ, je to jediný spôsob, ako to urobiť. Existujú však prístupy k práci s veľkými poľami. Napríklad niečo takéto:

$required = array("myvar", "foo", "bar", "baz"); $chýba = array_diff($požadované, array_keys($_GET));

Premenná $missing teraz obsahuje zoznam hodnôt, ktoré sú povinné, ale chýbajú v poli $_GET. Na zobrazenie správy pre návštevníka môžete použiť pole $missing.

Alebo môžete použiť niečo takéto:

$required = array("myvar", "foo", "bar", "baz"); $chýba = array_diff($požadované, array_keys($_GET)); foreach($chýba ako $m) ( $_GET[$m] = null; )

Teraz má každý požadovaný prvok predvolenú predvolenú hodnotu. Teraz môžete použiť if ($_GET["myvar"] == "niečo") bez obáv, že kľúč nie je nastavený.

Aktualizovať

Ďalším spôsobom, ako vyčistiť kód, by bolo použiť funkciu, ktorá skontroluje, či je hodnota nastavená.

Funkcia getValue($key) ( if (!isset($_GET[$key])) ( return false; ) return $_GET[$key]; ) if (getValue("myvar") == "niečo") ( / /Urob niečo)

prečo na to nevytvoríte funkciu, skonvertujte premennú, ktorú chcete skontrolovať, na skutočnú premennú, napr.

Funkcia _FX($name) ( if (isset($$name)) return $$name; else return null; )

potom urobíte _FX("param") == "123" , len myšlienka

Našiel som (oveľa) lepší kód, ako to urobiť, ak chcete niečo otestovať v .

Ak [[ $1 = "" ]], potom echo "$1 je prázdne", inak echo "$1 je zaplnené" fi

Prečo toto všetko? Všetko v existuje v Bash, ale predvolene je prázdne, takže test -z a test -n vám nemôžu pomôcť.

Ak [ $(#1) = 0 ], potom echo „$1 je prázdne“, inak echo „$1 je zaplnené“ fi

Môžete skontrolovať, či daná premenná existuje (to znamená, či je inicializovaná alebo nie). Ak to chcete urobiť, použite funkciu:

Isset(premenná);

Ak premenná momentálne neexistuje (nikdy predtým nebola nikde priradená hodnota alebo bola vymazaná funkciou odstaviť () ), potom funkcia isset () sa vracia falošný , inak - pravda :

$x = 5;

if (isset($x))

ozvena ‘< BR >Premenná $ X existuje, ‘, „jeho hodnota je $ X < BR >”;

Na obrazovke sa objaví nasledovné:

Premenná $ X existuje, jeho hodnota je 5

Je dôležité si uvedomiť, že v programe nemôžeme použiť neinicializovanú premennú - to vygeneruje varovanie od interpreta PHP .

Ak chcete zistiť, či je hodnota premennou prázdny , používa sa funkcia:

prázdne ( premenná);

Ak je hodnota premennej nula ,“0”, NULOVÝ , prázdny riadok (“” ), false, premenná nie je deklarovaná alebo je prázdne pole , potom sa táto funkcia vráti pravda , inak - falošný .

Skontrolovať typu premenná, používajú sa funkcie:

Je_retazec(premenna);

je _ int (premenné);

je _ plavák (premenné);

je _ nulový (premenné);

je _ pole (premenné);

je _ číselné (premenné); - ak je premenná číselná ( celé číslo , plavák ) alebo reťazec obsahujúci iba čísla.

Tieto funkcie sa vrátia pravda ak je premenná určeného typu.

Dátový výstup

Neformátovaný výstup

Bezformátové Výstup reťazcov alebo hodnôt premenných sa vykonáva pomocou funkcie:

ozvena zoznam premenných;

ozvena linka;

Kde zoznam premenných – názvy výstupných premenných oddelené čiarkami.

Ak pracujeme s webovým prehliadačom, tak táto funkcia smeruje výstup na klientsku stranu prehliadača (do jeho okna).

Ako už bolo povedané, ak sa názvy premenných nachádzajú v reťazci uzavretom v úvodzovkách, na obrazovke sa namiesto týchto názvov zobrazia zodpovedajúce hodnoty. Navyše, ak takýto riadok obsahuje značky HTML (rukoväte v lomených zátvorkách), potom prehliadač zobrazí toto HTML -kód, ako by to malo byť pri interpretácii HTML - dokument:

$rok = 2012;

$message = “ želanie každý šťastie !”;

ozvena “

môj gratulujem !

”;

ozvena “ Prišiel $rok rok !
$správa
”;

?>

Na obrazovke sa zobrazí názov úrovne H 3 a následný pozdrav so slovom „ šťastie!" sa zobrazí tučnou kurzívou:

Gratulujem!

Je rok 2012! prajem všetkým šťastie!

Týmto spôsobom môžete vytvárať dynamické stránky.

Formátovaný výstup

Naformátované výstup umožňuje reprezentovať zobrazené čísla v rôznych číselných sústavách a v desiatkovej sústave - v rôznych formách ( formátov ). Je to podobné ako formátovaný výstup v Si a vykonáva sa pomocou funkcií:

printf („formát“, zoznam výstupov);

sprintf („formát“, zoznam výstupov);

Prvá funkcia zobrazí naformátované údaje v okne prehliadača a vráti ich množstvo.

Druhá funkcia iba formátuje výstupné dáta, ale nevydáva ich.

Formátovať je postupnosť transformačných deskriptorov pre výstupné hodnoty.

Deskriptor transformácie pre každú hodnotu má tvar:

% PlaceholderAlignmentLength.AccuracyType

- Agregátne je symbol, ktorý sa použije na dokončenie výsledku transformácie na danú hodnotu dĺžka (predvolené - priestor ); ak ide o iný znak, predchádza mu jedna úvodzovka ( apostrof ),

- Zarovnanie – predvolene – podľa správny okraj výstupného poľa; ak je tam mínus ( - ), potom podľa vľavo ,

- Dĺžka – šírka výstupného poľa – počet medzier pridelených na výstup tejto hodnoty. Ak výstupná hodnota obsahuje menej znakov ako zadaná hodnota dĺžka , potom sa vyplní zostávajúci priestor priestory alebo výplňové znaky,

- Presnosť – počet desatinných miest v zlomkovej časti čísla,

- Typ – typ výstupnej hodnoty:

b binárne ,

s symbol ,

d celý v desiatkovej číselnej sústave,

e reálny v exponenciálnom tvare (s pohyblivou rádovou čiarkou),

f reálny vo forme pevného bodu,

s riadok ,

O celý v osmičkovej číselnej sústave,

X celý v hexadecimálnej číselnej sústave.

Príklad:

php

$ zarp _1 = 6543.21;

$ zarp _2 = 45321.67;

$ fam _1 = "Balaganov";

$ fam _2 = "Bender";

printf ("< H 1> Mzdy h 1>");

printf("%".-12s%".10.2f rub.", $fam_1, $zarp_1);

ozvena"
";

printf("%".-12s%".10.2f rub.", $fam_2, $zarp_2);

ozvena"
";

?>

Bod ( ‘. ). Priezviská sú zarovnané doľava ( - ) v šírke poľa 12 postavy. Čísla sú znázornené vo forme pevných bodov v šírke poľa 10 znaky a s presnosťou 2 desatinné miesta, zarovnané vpravo.




Stránky pomocníka pre počítače

© Copyright 2024,
rzdoro.ru -Stránka pomocníka pre počítače

  • Kategórie
  • programy
  • Microsoft Office
  • internet
  • Linux
  • programy
  • Microsoft Office
  • internet
  • Linux