Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 90.176.141.–

peter
.NET › Morseova abeceda
2. 1. 2022   #389484

Namespace se pouzivalo kdysi u funkcionalniho programovani.
Dneska se to resi spis pres objektove programovani pomoci trid.

peter
.NET › Morseova abeceda
30. 12. 2021   #389442

#2 peter beru zpet, spatne jsem to pochopil
Ale, zkus se zeptat googlu? google = net convert char to string

peter
.NET › Morseova abeceda
30. 12. 2021   #389441

   


            for (int i = 0; i < input.Length; i++)
            {
                if (i > 0)
                    Console.Write('/');

                char c = input[i];-----------------------------------
                if (morse.ContainsKey(c))
                    Console.Write(morse[c]);
            }
            for (int i = 0; i < input.Length; i++)
            {
                if (i > 0)
                    Console.Write('/');

                string c = input[i]; --------------------------------
                if (morse1.ContainsKey(c))
                    Console.Write(morse1[c]);
            }

tohle je cast tveho kodu. Pomuze ti to?

peter
HTML / XHTML › Hypertext na pozadí webu
29. 12. 2021   #389430

Budes sledovat, zda ma nejaky element class?
Budes sledovat, zda sirka, offsetwidth nejakeho elementu ma nejakou sirku? Body?
 

peter
.NET › Panák & budík.
26. 12. 2021   #389377

Mne se treba libi zavorkovaci system zavorky pod sebou. Jak se psal v pascalu begin-end. Tusim jsem to videl oznacovat jako praporkovy system.

class Budik
    {
    public event Zvoneni =  (CallClass ProbusSe && Console.WriteLine("Budík zvoní")); // zavolá třídu probuď se && a konzole vypíše hlášku "Budík zvoní"
    neco...
    neco...
    }

----+-------+
    +       +
    +       +
    +-------+
pripomina to praporek jako na zavodech F1

Mimochodem, mas tam nejak moc zavorek. Snad mas editor, ktery obarvuje kod, tam by to melo byt videt.

peter
.NET › Panák & budík.
26. 12. 2021   #389376

Ja jako amater programator, ktery C nezna, nepouziva, ti muzu jen rict, zvol si pojmenovani takove, aby ses v tom vyznal. Nejlepe zkoukni par zdrojaku na giltab, jak to delaji ostatni. kdyz neco googlujes, tak google sem tam vyhodi neco z gitlabu. A tam se prave snazi lidi dodrzovat ty moderni trendy. Ja si to treba delam po svem v jazycich, ktere pouzivam :)A take vol nazvy tak, abys je mohl snadno nahrazovat, opravovat pres hledej "text1" a nahrad za "text2"
 

peter
.NET › is the pointer to the array
24. 12. 2021   #389345

 mala oprava, doplneni...

vanocka = -50
cukrovi = 0
if (vanocka>0) # pokud je vanocka>0, tak je pridej k cukrovi
    {
    cukrovi = cukrovi + vanocka
    }
# a protoze je zaporne, tak bude cukrovi stale 0
peter
.NET › is the pointer to the array
24. 12. 2021   #389344

 ... pouziji jiny jazyk, lae na ukazku by to mohlo stacit...

promena = 123
pole[3] = 123; # reference = 3
pole['vanocka'] = 123 # reference = 'vanocka'

vanocka = 50
cukrovi = 0
cukrovi += vanocka
cukrovi = 0
cukrovi = cukrovi + vanocka # cukrovi = 0 + 50 = +50

vanocka = -50
cukrovi = 0cukrovi = cukrovi + vanocka # cukrovi = 0 + -50 = -50

vanocka = -50
cukrovi = 0
if (vanocka>0)
    {
    cukrovi = cukrovi + vanocka # cukrovi = 0 + 50 = +50
    }

---

pole_cukrovi = []

pole_cukrovi['vanocka'] = 50

moje_reference = 'vanocka'
pole_cukrovi[moje_reference] = 30

Jakekoliv vypocty probihaji, kdyz je provedes. Todle neni excel, ze vypocitava vsechny bunky naraz. tady pises program, radek po radku.

Treba, kdyz mas databazi pracovniku, tak pouzivas jako referenci cislo radku a jmeno sloupce.

pracovnici = [
  [0, 'jenda', 'praha'],
  [1, 'tomas', 'brno']
];

vypis( pracovnici[1][1] ) # 'tomas'

row_id = 0
col_id = 2
vypis( pracovnici[row_id][col_id] ) # 'praha'

---
pracovnici = [
  ['row_id': 0, 'jmeno': 'jenda', 'mesto': 'praha'],
  ['row_id': 1, 'jmeno': 'tomas', 'mesto': 'brno']
];

row_id = 0
col_id = 'jmeno'
vypis( pracovnici[row_id][col_id] ) # 'jenda'
peter
.NET › Panák & budík.
24. 12. 2021   #389342

Jo, je treba si precist dokumentaci a zkusit si to napsat. Mas neco, kde to muzes spustit, testovat? Jestli ne, tak zkus najit googlem online nastroj.
Ano, kdyz je zadani napsane jako program, tak obrazek je totez. Dela se proto, ze to tak nekdo chce. Zvlast pro zacatecniky je to vhodne. Jestli chces jine zadani, tak zkus napsat kalkulacku, zavorky, plus, minus, krat, deleno. A ted uz si to zadani musis doplnit sam :) Zadavam text a pocita mi prubezny vysledek. Jenze, to je pro zacatecniky naprd, kdyz nemaji vyzkousene ty objekty. Proto se pisi tak navodna zadani, ktera te navadi primo, co mas delat.

ostatni: Nevim, proc ho urazite. A kdyz, nejak rozumne. Programovat se uci male deti, nevim, proc by to nezvladl. A vzdy si muze zaplatit skoleni pro zacatecniky. Nebo si najit na youtube video pro zacatecniky.

peter
Visual Basic › matematický problém
24. 12. 2021   #389341

Neni zadny problem.

Windows neumi pocitat. Tohle si muzes otestovat i ve win kalkulacce, ta ti da malokdy spravny vysledek. A tusim i zavorkovani tam je rozbite.

Programovaci jazyky pouzivaji casove usporne mat. algoritmy, ktere pocitaji floaty na hodne des. mist. Pocita se s tim, ze vysledek budes zaokrouhlovat a ze nepotrebujes 100% presnost pro ty ostatni mista.
Je spoustu algoritmu, muzes treba pro deleni a nasobeni pricitat a odcitat cisla cyklem. Ale 1000 opakovani nebo jeden logaritmus je rozdil.

 

peter
HTML / XHTML › Hypertext na pozadí webu
23. 12. 2021   #389325

"Kdybych byl v programování chytrý jako ty,"
A co mu je to platne? Jeho rodina hladovi, protoze lide, jako ty mu za praci nezaplati? Misto, aby si ho najali, tak z neho tahaji moudra zadarmo.
Proti dotazum na forku ale nic nemam. Spis, jako, jestli toho mas vic, tak by pro tebe bylo vyhodnejsi komunikovat s nejakym programatoerm primo, ktery bude mit o tvych problemech pak vetsi prehled a umi lepe poradit. Nahodily clovek proste hodi nahodile reseni, ktere se ti treba zrovna nehodi a jsou lide, kteri ti jeste pak nadaji.
Treba, spoustu veci se da najit i googlem. To zas drbou mne, ze delam z lidi voly, kdyz je odkazuji na tisice reseni z google a musi se v tom starat a vybirat, ktere se jim hodi. Ale, zabralo by jim to 5 minut. Na forku dotaz muze viset bez odpovedi i mesic :)

A mimochodem, tvuj dotaz jako moc nechapu, jak je to mysleno obrazek na pozadi? 

Odkaz je <a href=...></a> https://www.jakpsatweb.cz/…/odkazy.html#a

V pozadi mas obrazek pres img?
<a href="url"><img src="url_obrazek"></a>

V css?
<body style="background-image:url" onclick="location.href='url'">
No, jenze, to pak muze odkazovat klik na cokoliv.
Takze by bylo nutne tam napozicovat dva divy pres sebe.

<body style="background-image:url">
<div onclick="location.href='url'" style="height:1000px; width:100px; position absolute"></div>
<div> text </div>

Ten prvni vytvari falesny obdelnicek nad pozadim.
Ten druhy je pak stranka preplacnuta pres to.

Jak rikam, mnohem snadneji by se to resilo, kdyby clovek znal presne tvou situaci, co tam mas ci nemas, jak to funguje nebo si to mohl primo testovat. Takhle proste je asi 1000 moznosti a jako nahodne nejakou tipovat na forku, no :)

peter
MySQL › MySQL INSERT pokud něco
21. 12. 2021   #389290

Vyznam, mno... Otazkou je, jak k tem zapornym hodnotam doslo, jak vznikaji.
Pokud jsou to hodnoty z mereni, ok, pokud to muze takove hodnoty generovat.
Pokud je generuje program na zaklade neceho, a ty hodnoty tam nemaji byt, tak je to chyba, ktera by se mela spravit, aby tam program takove hodnoty nedaval.

Jako, kdyz parsujes csv, tak se da ledaco smazat. Ale, myslim, ze je mozna lepsi do toho nevrtat, kdyz nepotrebujes. Aspon budes mit original a muzes porovat, zda se to vlozilo spravne.
 

peter
.NET › Použití ternárního výrazu
15. 12. 2021   #389246

Nevim, zda je samouk, ale tez souhlasim s tim, ze mu schazi predstavivost, co prave jeho kod dela. Pripadne, zatim neprisel na to, jakym zpusobem to sledovat.

Ja osobne treba programuji v necem jako notepad++ (far manager). Uplne nesnasim jine prostredi, protoze ma pomalou odezvu na klavesnici, mys a neumi kopirovat bloky znaku, jen radky. Podstatne je, ze kdyz chci sledovat kod (php/js), tak pouzivam vypis na obrazovku do nejakeho textoveho policka (innerHTML) nebo alerty. Na kriticka mista si dam neco vypsat nebo obsah promenne. console.log je nespolehlive, protoze array vypisuje jako handle (pointer) na promennou, takze vypise jen posledni hodnotu, ktera neodpovida casovemu razitku v dobe porizeni. Tam se bohuzel musi pouzit JSON.stringify. Zadny debuger, nic,

Napovidani nazvu promenych v programemi mi ne uplne vzdy prijde vhodne. Ale, neni uplne spatne. Treba v Delphi (paslac) jsem to pouzival casto.

Dal ty moderni prostredi maji furu peknych vychytavek, hlidaji nazvy promenych. Zda byla pouzta nebo ne. Je mozne funkce zbalit. Maji vychytavky s predprogramovanymi objekty, kde pak staci doplnit OnClick. To vubec neni spatne. Ale, mne to proste moc nebere, kdyz reakce na zmacknuti klavesy trva nenapise se pismenko ihned. A mezitim treba prudi jeste s doplnovanim nazvu.

Far ma tez nejake doplnovani nazvu a spis mne tim stve :) Kdyz mam treba podobne nazvany text pri vyhledavani a on mi tam dopise zbytek a ja to pak musim mazat. Nebo si nevsimnu a napise mi 0 nalezeno.
---
No, takze jako, schazi mu schopnost sledovat, co napsal. Ja to kdysi, u pascalu ve skole resil tak, ze jsem si kod programu psal na papir a i to, co mel v dane casti delat a co tam bylo Na obrazovce jsem to nevidel. Debuger tusim jeste nebyl, jen pro ASM.
Mne spis mrzi, ze se ani nepokusi sam vypsat si na obrazovku obsah te promene v danem miste a hned se tu pta, co s tim ma. A to je teda ta rada, co chci napsat :)

peter
.NET › Ceasarova šifra
14. 12. 2021   #389204

Mimochodem...
- jestli znas ascii tabulku, tak se znak 'a' prevadi jako dekadicke cislo 65.
- a funkce int obvykle v jazycich prevadi string na cislo, pokud se v nem vyskytuje cislo int("65") = 65, int("a") = false;
 

peter
.NET › Ceasarova šifra
14. 12. 2021   #389203

#9 Montezo
https://pastebin.com/uhDBvYK2 - protoze to obarvuje kod

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace vzor2
{
   class Program
   {
      static void Main(string[] args)
      {
 
         char c; // znak
         int i; // ordinální (ASCII) hodnota znaku
               // převedeme znak na jeho ASCII hodnotu
         c = 'a';
         i = (int)c;
         Console.WriteLine("Znak {0} jsme převedli na ASCII hodnotu {1}", c, i);
         // Převedeme ASCII hodnotu na znak
         i = 78;
         c = (char)i;
         Console.WriteLine("ASCII hodnotu {1} jsme převedli na znak {0}", c, i);
         Console.ReadKey();
         //začátek druhé fáze
         string s = "gaiusjuliuscaesar";
         Console.WriteLine("Původní zpráva: {0}", s);
         string zprava = "";
         int posun = 1;
 
         // cyklus projíždějící jednotlivé znaky
         foreach (char cq in s)
         {
            int iq = (int)cq;
            iq += posun;
            // kontrola přetečení
            if (iq > (int)'z')
               iq -= 26;
            char znak = (char)i;
            zprava += znak;
         }
 
         // výpis
         Console.WriteLine("Zašifrovaná zpráva: {0}", zprava);
         Console.ReadKey();
      }
   }

    }

---
Caesar pouzival to, ze zamenoval pismenka, ne? Tak by bylo asi prehlednejsi pouzivat kodovani pres neco jako mapu nebo indexovani stringu 

text = "ahoj"
i = 0
char = text[i]

x = array(
 'a' : 'f',
 'b' : 'x', ...
)
kod = x[char]
out += kod
---

text = "ahoj"
i = 0
char = text[i]

from = "abcdef..."
to = "fx..."
index = index(char, from) // a = 0, h = 8 ...
kod = to[index]
out += kod

ale c# neznam, musel bych googlovat a zjistovat, jak se to pise. Takze to povazuj za pseudo kod.

peter
Pascal › Základní numerická metoda
8. 12. 2021   #389123

Trochu jsem si s tim hral a prevedl to na javascript, ne pascal. A pocita to teda neco jineho, prusecik. Ale tak jako priklad to muze byt pouzitelne.

https://mlich.zam.slu.cz/js-numericke-metody.htm

zdrojovy kod si zobrazis pres kliknuti pravym tlacitkem - zobrazit zdrojovy kod. Nebo si stranku uloz a otevri v notepadu (poznamkovy blok).

pouzil jsem rovnici, priklad, primo z wolframu https://www.wolframalpha.com/input/?i=x%5E3+-+6x%5E2+%2B+4x+%2B+12

0 = x^3 - 6x^2 + 4x + 12	

ocekavane vysledky:
x1 = -1.0514
x2 = 2.5173
x3 = 4.5341
peter
Pascal › Základní numerická metoda
8. 12. 2021   #389122

jo, samozrejme tam ma byt vsude absolutni hodnota

abs(L-P) < presnost
peter
Pascal › Základní numerická metoda
8. 12. 2021   #389121

Ono, zkopirovat uciteluv priklad nestaci, kdyz zmeni zadani :)
Zkus to napsat sam uplne od zacatku a uvazuj o tom, ze chces vice korenu. My ti samozrejme muzeme kod upravit, ale to je splneni ukolu za tebe a neumel bys to pak uciteli vysvetlit, na coz si oni potrpi, kdyz maji pochyby o tvych schopnostech.
---

Numericke metody spocivaji v tom, ze vyuzivaji rovnosti leve a prave strany rovnice.

0 = 5*x*odm(x) - 2*y - 11
L = 0
P = 5*x*odm(x) - 2*y - 11

To bys mohl resit matematicky. Ale programove to mas rychlejsi, pokud vis, kde zhruba je vrchol nebo vic vrcholu. Prepises si to treba takto 

0 = 5*x*odm(x) - 2*y - 11
2*y + 11 = 5*x*odm(x)
L = 2*y + 11
P = 5*x*odm(x)
L = P ... a, protoze rovnice zachovava rovnost leve a 
prave strany, tak se vysledky musi rovnat nebo byt priblizne stejne

---
To sem odbocil, aby bylo jasne, co se snazis docilit.
Cili, pokud to ma najit vic vrcholu, tak musis pokracovat v hledani. Mel bys mu zadat interval od-do, aby vedel, kdy skoncit. Takze, bud upravis stavajici cyklus, aby prosel vsechny moznosti a nebo mozna jednodussi, udelat dalsi cyklus, co uz zminil Gai. 

presnost = 0.3;
x_start = 1;
x_end = 100;
x_step = 0.1;
cyklus (x_start<x_end)
    x_vysledek = hledej_koren(x_start, x_end, x_step, presnost)
        x = x_start
        L = vypocet_leva(x) // ty vypocty bych dal take jako funkce
        P = vypocet_prava(x)
        cyklus(x<x_end and L-P<presnost)
            x = x + x_step
            L = vypocet_leva(x)
            P = vypocet_prava(x)
        if(L-P<presnost)
            return x
        return 'stop'
    vypis(x_vysledek)
    if (x_vysledek=='stop')
        break;
    x_start = x_vysledek + x_step
peter
CSS › Rozdíl mezi dvěma příkazy
8. 12. 2021   #389120

#1 Montezo
Zkousel jsi googlovat?

1 = zoom 1, webove prohlizece umi stranky zoomovat (ctrl + pohnuti koleckem mysi)

cover = spocita zoom podle rozmeru sirky a vysky
To je trochu slozitejsi na vysvetleni. Porovna sirku obrazovky a sirku stranky (kterou vygeneruje podle kodu). Totez s vyskou. A roztahne/zmensi to tak, aby se to tam cele veslo.

Kdyz das v css width:100%, tak se stranka roztahne na 100% sirky. Vyska se roztahne, jak potrebuje.
Kdyz das u obrazku 100%, tak obrazek zachovava pomer stran a roztahne se i sirka ve stejnem pomeru (delas zoom).
Kdyz delas nahled obrazku, tak potrebujes obrazek napasovat do obdelnicku treba 320x200. Takze ho zmensis tak, aby se aspon dvema stranami dotykal okraje a druha strana byla kratsi. ale zachoval se pomer stran. Tomu se rika cover.

Nebo, vem si televizi, kdyz davaji film v jinem formatu, tak mas po strane nebo nahore cerne pruhy.
Nektere tv umi roztahnout film tak, ze cernych pruhu je mene, ale ztratis cast obrazu. To uz cover neni. Ale stale dela zoom, protoze zachovava stejny pomer stran. A ty same tv umi obraz i roztahnout, nezachova pomer stran. Pak jsou tlusti i ti nejstihlejsi lide, treba :)

peter
Offtopic › WINDOWS 11 :) wooooooooooooo…
4. 9. 2021   #388538

Posledni funkcni win jsou xp, pred nimi nt, w95. S ostatnimi win jsem zazil tolik problemu, ze to az pekne neni.
S W7-w8-w10 asi nejvic. A to se mi zdaly taky w10, jake budou skvele. Nebyly. Jsem zvedavy na W11. Ale fakt, ze pro pristi nb zvazuji linux.

Fakt, jako, takove peklo, jako zazivam ted s aktualizacemi za poslednich 10 let, jsem z oboru it hrozne nestastny. Jakoze resim uzivatelum pocitace. Jako, lepsi jit delat do reklamy.

peter
Software › Nastavení Windows 10 se neot…
3. 9. 2021   #388537

Jo, to se stava bezne. Zkus restartovat.

Oni totiz chytre pri updatu vypnou nastaveni, aby jim do toho nekdo nesahal a obcas se stane, ze to nenaskoci nebo dratovy inet.

peter
CSS › úprava webovek
31. 8. 2021   #388501

V tom dreamwebu mozna bude treba nekde nastavit spravnou znakovou sadu. Ms programy maji sklon otevirat soubor jako kodovani win-1250. Mozna potrebujes prepnout na utf-8 nebo latin-1. Nebo prave naopak :)

Kazdopadne, super pokrok, ze to zkousis sam.

Obrazek, to je potiz. Totiz, nektere prohlizece, treba i ten dream ma svuj prohlizec, tak si moc nerozumi s modernimi fotkami. ty obrahuji informaci o natoceni fotaku. Kdyz nekdo foti vzhuru nohama, tak raw-data se ulozi vzhuru nohava a do infa o obrazku se ulozit, ze se ma otocit o 180 stupnu. A ted je samozrejme na prohlizeci, zda s takovou informaci umi pracovat nebo ti zobrazi raw-data, ktera jsou otocena :)
Zkus si tu stranku ulozit jako a-pokus.htm (html) a nahrat na web. Treba, kdyz si to otevres pres webovy prohlizec a ne prohlizec v dreamu, ta to bude ok.
Nicmene, existuji css finty, jak otocit objekt. Zas ale, aby se ti nestalo, ze to na nekterem prohlizeci je spatne, protoze s tim info textem v obrazku umi pracovat :) google = css rotate image
No, a jako uplne nejschudnejsi je ten obrazek otevrit v malovani. A ted muzes zkusit rotaci doprava, doleva, ulozit obrazek jako... s jinym nazvem. Nebo oriznout o 1 pixel na sirku a opet ulozit. Malovani by to mohlo uz ulozit do noveho obrazku spravne otocene, po upravach, treba rotaci nebo orezani.

peter
Offtopic › Kolejné :)
31. 8. 2021   #388500

To je skoda, ze anonym nemuze hlasovat pluska pro gna :)

250 kc? To je nekdy za prvni republiky, ne?
2500-3000 kc je takova bezna cena pro 1 cloveka
12.000 a vic, to je zas takova bezna cena najmu jen za byt, bez energii a mimo prahu. Ale, je to cely byt, Muzete v nem bydlet po dvou v pokoji, 4-6 lidi a dostavas se zpet k 3000-2000. Energie rozpocitane mezi lidi ti daji 500-1000, rekneme.

Ekonomika je takova, ze ceny najmu rostou. Penez maji lide vic, tak si muzou dovolit vic nakupovat. Lidi je tez vic. Tak je logicke, ze na tom chteji vydelat i prodejci, tak zdrazuji. Tudiz, hodnota 1 kc klesa.

peter
C / C++ › C# výpis čísel dělitelné urč…
29. 8. 2021   #388493

Mozna by se misto deleni dalo pouzivat nasobeni a odcitani.

c = 1;
(cyklus)
if (c *= a && c < b) {}
else if (b+a-c == 0) {...}

peter
CSS › úprava webovek
28. 8. 2021   #388488

Mimochodem, muzes si tam dat redakcni system typu doku-wiki. Pro editaci stranky pouziva textove znaky misto tagu. Teda, jestli tam bezi nejake php, asp.

peter
CSS › úprava webovek
28. 8. 2021   #388487

Zazalohuj si soubory a zmen si to sam, ne?
jakpsatweb.cz/html
jakpsatweb.cz/css

Jestli, pridat par poloze znamena pridat tam nejake zbozi, tak staci zkopirovat tu cast, ktera to vykresluje a zmenit text. Pripadne nahrat obrazek. V tom se snadno vyznas. 

Obvykla struktura je takova
<tag> text </tag>

<jinytag>
    <tag> text </tag>
    <tag> text </tag>
    <tag> text </tag>
</jinytag>

Vsechno to mas na tom jakpsatweb, vpravo v menu je seznam tau a na strance bude vzdy ukazka, co vsechno k nim jeste patri.

peter
MS SQL › Hledání chybějících záznamů
4. 12. 2020   #387019

Jako, to me reseni by slo pouzit, ale bylo by nutne udelat si pomocnou tabulku, kterou pak pouzije pro SELECT. Ale pak nemuze vybirat vetsi interval, treba u prechodneho rok nebo tak neco. Videl jsem to na nejakem forku s tou pomocnou tabulkou, tak mi to prislo jako zajimave.

peter
PHP › Zabezpečení htmlspecialchars…
11. 9. 2020   #386600

Jasne. Ja ted pouzivam v praci system s vlastni validaci, kde reknu jakeho typu je promenna pro sql, html, validaci a jake podminky ma splnit a pak uz si to resi funkce. Takze plytvam uplne vsim :) A casto potrebuji nastavit nejake min. a max. hodnoty, treba pro strankovani nebo pro seznamy, ciselniky, abych se s tim pak nemusel drbat v dalsich funkcich a overovat, zda key existuje v array.

 

peter
PHP › Zabezpečení htmlspecialchars…
10. 9. 2020   #386597

Viz kluci, motas to.

1. htmlspecialchars - je funkce, ktera ve stringu prevede znaky, ktere by html zobrazil jako html kod, jedna se o tagove znacky vetsi a mensi, uvozovky jednoduche, dvojite, ampersand. Popis najdes v manualu, php.net/htmlspecialchars . Zalezi, jake pouzijes parametry. A pouziva se to k tomu, aby ti to nerozhodilo html kod. 

Example #1 htmlspecialchars() example

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo '<pre>'.$new.'</pre>';
echo '<span title="'.$new.'">Toto je span a v title je text escapovany pomoci htmlspecialchars</span>';

echo '<input value="'.$new.'">';
?>

Ano, lze to pouzit jako bezpecnostni opatreni proti hackovani, kdyz se nemuzes spolehnout na to, ze je vystup $new v poradku. Napriklad, kdyz ti tam neco vklada uzivatel.

2. Pokud ziskavas text od uzivatele, tak jej ziskavas jako napr $_GET['album'] . Ale, hacke vyrobi program, ktery ti odesle v vlastni data, napriklad: " 

$album = "1 OR 1=1";
$query = "SELECT * FROM albumy WHERE album=" . $album;

SELECT * FROM albumy WHERE album=
SELECT * FROM albumy WHERE album=1 OR 1=1
-- a tento sql prikaz ti zobrazi celou tabulku albumy, protoze 1=1 je true
--  za vsech okolnosti
SELECT * FROM albumy WHERE album=1 OR (TRUNCATE albumy)
-- a tento prikaz ti smaze albumy
SELECT * FROM albumy WHERE album=1 OR (TRUNCATE users)
-- a tento prikaz ti smaze vsechny uzivatele, pokud tam mas tabulku users

Tak, proti tomu se lze branit tak, ze data od uzivatele vyfiltrujes. A take nez je predas do sql prikazu. V tomto pripade by stacilo

$album = $_GET['album'];
$album = (int) $album; // prevede na integer
$album = $album * 1; // nebo to prevedes na cislo, integer nebo float

A kdyz to posilas do sql, tak bys mel hodnotu escapovat i pro sql. Pokud do prikazu vkladas cislo, tak odstranit z hodnoty znaky, ktere cisla nebo desetinna carka, nejsou. Pokud ji pouzivas jako string, tak nahradit vsechny uvozovky, A pokud ji pouzivas jako key, tak nahradit vsechny zpetne uvozovky. K tomu jsou php/sql prikazy podle typu databaze.

SELECT * FROM albumy WHERE album=1 -- cislo
SELECT * FROM albumy WHERE album_name='fotky' -- string
SELECT * FROM albumy WHERE album_name='fo'tky' -- string, ktery obsahuje apostrof a tim narusuje sql prikaz, chyba!
SELECT * FROM albumy WHERE album_name='fotky' -- sql nazev album_name
SELECT * FROM albumy WHERE `album_name`='fotky' -- sql nazev album_name se zpetnymi apostrofy, spravneji zapsany
SELECT * FROM albumy WHERE `albu`m_name`='fotky' -- sql nazev album_name se zpetnym apostrofem uprostred, chyba!

$album_name = "albu`m_name" -- kdyz ti to uzivatel nebo hacker posle takhle, tak ti sql prikaz skonci chybou
"SELECT * FROM albumy WHERE `". $album_name ."`='fotky'
SELECT * FROM albumy WHERE `albu`m_name`='fotky'

3. url php/html
 

$album = $_GET['album']; // 1
$url   = '../galerie.php?album='.$album;

header("Location: ".$url); 
// ted si nejsem jisty, zda to udela spravne, ale pravdepodobne bude ignorovat ../
header("Location: http://localhost/meet2eat/".$url);
// tohle presmeruje na adresu http://localhost/galerie.php?…, coz muze byt chyba, hacker se dostal mimo povolenou strukturu, takze bys mu nemel dovolit zadavat adresu s ../ na zacatku nebo ../../../ uprostred adresy

echo '<a href="'.$url.'">odkaz</a>';
// <a href="../galerie.php?album=1">odkaz</a>  // $album = 1
// <a href="../galerie.php?album="</a><a href="seznam.cz">odkaz</a>  // $album = "</a><a href="seznam.cz
// uzivateli se zobrazi <a></a><a href="seznam.cz">odkaz</a>
// takze, kliknutim na odkaz se dostane na jinou stranku

echo '<a href="'.htmlspecialcharcs($url).'">odkaz</a>';
// <a href="../galerie.php?album="&lt;/a&gt;&lt;a href="seznam.cz">odkaz</a>  // $album = "</a><a href="seznam.cz
// to je lepsi, nenarusi se html kod, adresa je spravne, ikdyz nic nezobrazi

$album = $_GET['album'];
$album = urlencode($album); // hodnova pro url pouziva pro escapovani funkci
 urlencode, ktera odstranuje z hodnoty znaky, ktere tam nemaji byt
$url   = '../galerie.php?album='.$album;

pr: 
$album = "0&userid=2";
$url   = '../galerie.php?album='.$album;
../galerie.php?album=0&userid=2 // tak to treba je take chybna adresa pro odkaz, kdyz nepouzijes urlencode
peter
JavaScript, AJAX, jQuery › Neustálý reload funkce po 1s
16. 7. 2020   #386327

Tipnu si mozne chyby: setinterval misto settimeout, undefined refreshtime, page reload.
Bud mas refreshtime jako undefined, protoze to chybne definujes v ajaxu.
Nebo spoustis setinterval. Casovac zustane viset a opakovane spousti totez. Nemas ho zruseny pres clearInterval. Kdyz napises interval 1000, a 1000x to spustis, tak je v pameti 1000 casovacu, ktere jsou s rozdilem par ms. Po urcite dobe je mezi prvnim a poslednim i sekundovy rozdil.

peter
Návrhy na vylepšení › Obrázková Captcha je hrozná
8. 8. 2018   #381151

Ja v nekterych programech mam js, ktere skryje a predvyplni input. Bez js se zobrazi input a treba textova otazka typu kolik je dva plus pet a pod. Zatim jsem nemel problem se spamem.
Jestli chces komplikovanejsi, tak vygenerovat base64 hash z casoveho razitka a ip, ktery se meni kazdych 5 min.

Mam FF, nejsem registrovany. Ted tady captcha funguje tak, ze se objevi zaskrtavatko, staci na nej kliknout. Zadne obrazky ani nic se neobjevuje.

peter
MySQL › Jakou používat strukturu tab…
3. 8. 2018   #381102

Pro monitorovani site, teploty pouzivame ve firme zabbix. Netusim, jak to vnitrne resi.
Umi udelat grafy po 10 min a zoomovat to po 30 min, 1h ... Kazdy zoom bych resil extra tabulkou, kde bych vypocital prumer. Hlavne se to pak rychleji nacita.

U tvych zarizeni nevim. 800.000 radku je docela dost a jestli to ma byt casem 50x.
50 sloupcu... Neslo by treba mit tabulku aktualni stav, kam ukladas aktualni data do X sloupcu, zvysujes v jednom sloupci n+1? Az bude n==X, tak zaznam zkopirujes do tabulky2 a v tabulce1 smazes. A ted, otazka je, potrebujes se k tem floatum dostat hned? Nebo by stacilo to ulozit do stringu jako csv. Uvazuji o tom, pridat tam treba dalsi sloupce 50+50+50 (vic radku do jednoho)... aby se zmensil pocet radku. A jestli ty data nevyuzivas nejak aktivne, jestli by bylo ci nebylo lepsi to zapsat jako string. Jako, urcite je asi lepsi to mit ve float sloupcich. Ale nevim, kolik sloupcu sql zkousnou. Nejvic jsem mel v tabulce asi 30. je fakt, ze v programu na vedecke publikace je jich 130 a neni s tim problem.

Cili, asi bych to resil tak, jak to mas vymyslene. A az pokud by nastal nejaky problem, tak to zkusil zmenit.
Jestli s temi daty aktivne pracujes, tak bych si resil bokem jeste tabulku aktualni stav, kde bych udrzoval treba 30 poslednich hodnot. Pocital inserty a pri pocet>Y spustil promazani starsich hodnot (podle casu), treba.

peter
PHP › Xml práce s kategoriemi
1. 8. 2018   #381091

PS. Parser se nazyva ta cast kodu, ktera xml parsuje. Tahle funkce je az takovy post proces, kteremu predavas uz jakasi data, ktera dal zpracovavas. No, slo by to nazvat asi tez parsovani. Ale, myslim si, ze pro nas zajimavejsi by byla ta cast pred touto funkci, v hierarchii.

peter
PHP › Xml práce s kategoriemi
1. 8. 2018   #381090

To se velmi tezko odhaduje. Jako obvykle davas jakysi slozity kousek kodu misto jednoducheho funkcniho celku. Treba tvuj parser, kod, ktery jsi tu nedal, ani atributy nevytahuje.

php.net/xml
http://php.net/…ml-parse.php
Parser uvedeny v prikladu od "lz_speedy at web dot de - 9 years ago" vytahuje atributy do $result['attr'][$attr]. Mozna echo $item['attr'] ? Mozna neco pod itemem. Kdyz ty pouzivas i takove nestandartni znaceni :) Ztezuje to orientaci v kodu. Coz muze byt dobra obrana vuci hackerum, ale ted je to spis ke skode.
 

php.net/dom
DOMElement::getAttribute — Returns value of attribute

peter
PHP › PHP - náhodný výběr z databáze
1. 8. 2018   #381088

$result = mysql_query
mysql_query vraci resource. Naklonuje radek nebo radky db tak, jak jsou ulozene v db. Echo takoveho balicku dat nema vyznam. Zkus na ten balicek zpracovat jeste funkci fetch a pak dej echo nebo var_dump().

Priklady na to mas primo v online dokumentaci.

php.net/mysql
php.net/mysql_query

peter
PHP › rmdir() a unlink()
1. 8. 2018   #381087

S tim otevrenym adresarem mne napada, u wordu dela to, ze si zamyka otevreny soubor, dokud word neukoncis. Kdo vi, co se deje u XP.

Ja bych zkusil adresar vytvorit, pak smazat. Pak vytvorit, pridat soubor, smazat soubor, smazat adresar. To by melo projit, jak popisujes, protoze v prubehu toho kodu nic dalsiho neoteviram. Pokud to neprojde, pak je neco hrozne spatne. Mozna mas zapnute nejake zalohovani souboru (klonovani na server) nebo antivir nebo neco soubor zablokuje. Mozna jen docasne.
Tak bych to mazani mozna pustil pres cron hromadne jednou za pul dne nebo tak a provedl nejaky test, jestli mi to vse smazal a kdyz ne, tak asi rucne dohledal problem a smazal to sam. Teda, kdyby se mi nechtelo zjistovat, co presne mi smazani toho souboru nedovoluje.

Celkem oblibeny trik hackera je podstrcit vir.exe jako vir.jpg. Pak to treba blokne antivir.

peter
MySQL › Promazání tabulky, nechat ka…
1. 8. 2018   #381085

'Zkoušel jsem několik možností' - vypsat moznost, vypsat text chyby. Pak je mozne diskutovat o tom, co tam mas spatne.

peter
PHP › Session a uživatelská skupina
30. 7. 2018   #381061

Lepe pocitat s tim, ze je mozne vsechno a mit zalozni plan :) Pokud ti jde fakt o bezpecnost. Neco necekaneho. Treba nejakou past. Jako, do linku pridat admin=1, ale v programu to ignorovat. Vypsat uzivateli treba jakoze je prihlasen jako admin (aby mel pocit, ze to funguje), ale v programu mu pridelit user prava nebo dokonce guest.

A vubec, nebudu ti psat, ze treba neco nedelam nebo, jak to resim, nikdy nevis, kdo to cte. Nepotrebuji, aby vedel nekdo tak moc informaci o tom, jak moc nebo malo zabezpecuji :)

peter
HTML / XHTML › automatické skrytí fotogalerie
27. 7. 2018   #381042

<span class=ccc>| ccc fotka |</span> *oprava radku
 

peter
HTML / XHTML › automatické skrytí fotogalerie
27. 7. 2018   #381041

Aha. Opet nic moc, co se kodu tyce. Ale, tak tohle snad pokryje zakladni myslenku: 

<style>
.aaa {color:#f00;}
.bbb {color:#0B0;}
.ccc {color:#08F;}
#galerie {}
#galerie.aaa .bbb, #galerie.aaa .ccc {display:none;}
#galerie.bbb .aaa, #galerie.bbb .ccc {display:none;}
#galerie.ccc .aaa, #galerie.ccc .bbb {display:none;}
</style>

<script>
function $(id) {return document.getElementById(id)}
function zmen(odkaz)
{
var vse, hodnota;
vse     = odkaz.href=='#' ? true : false;
hodnota = odkaz.innerHTML;
$('galerie').className = vse==false ? hodnota : '';
return false;	// prerusit odkaz
}
</script>

<a href="#" onclick="return zmen(this)">vse</a> |
<a href="#filtrAAA" onclick="return zmen(this)">aaa</a> |
<a href="#filtrBBB" onclick="return zmen(this)">bbb</a> |

<div id=galerie>
<span class=aaa>| aaa fotka |</span>
<span class=bbb>| bbb fotka |</span>
<span class=bbb>| bbb fotka |</span>
<span class=aaa>| aaa fotka |</span>
<span class=ccc>| aaa fotka |</span>
<span class=aaa>| aaa fotka |</span>
</div>
peter
CSS › nejde označit obrázek divem
27. 7. 2018   #381038

'Na obrazku jen vime, jak to vypada.'
Chci jen rici, ze mame obrazek a nevime, co je jinak a jak melo byt a co na nem vlastne si mame vlastne prohlizet.
Napr, foto z fotbaloveho stadionu a k tomu koment, je to spatne. Co je spatne? No, ze tam mava cervenou vlajeckou a sedi na tribune s bilym tymem. A to nemuzes rici hned?! Jak si mame vsimnout v tom davu lidi jednoho s jinou vlajeckou. nebo, ze nekdo ji vlastni burger misto toho, aby si koupil parecek od prodavace a ze prichazis o zisk, tak...

peter
CSS › nejde označit obrázek divem
27. 7. 2018   #381037

Pokud chces hledat chybu, udelej si jednoduchou testovaci stranku s minimalnim kodem. Pripadne kompletni a postupne odmazavej, dokud nenarazis na problem.

Tvuj kod nemame, html, css, pripadne js. Ani z kodu ani textu neni uplne jasne, co by se melo stat. Ani z obrazku. Na obrazku jen vime, jak to vypada. Ale, ceho e ma docilit, uz neni jasne.
Auto mas v garazi, v dilne automechanika je prazdno. Nebo jsi prinesl urvanou kliku. Takze ti ji muze prisroubovat leda k bote.

Tohle je podobne tvemu kodu, text je zelene. Nic se neignoruje. Takze to mas nejspis spravne?

<style>
    span .yyy {
color:#f00;
    }
      .xxx span .yyy {
color:#0f0;
  }
</style>

<div class="xxx">
<span><span class="yyy">aaa</span></span>
<span><span class="yyy">bbb</span></span>
<span><span class="yyy">ccc</span></span>
</div>

Podle mne selhava ten ostatni css kod nebo je problem v html kodu.
Mas nastavene aside na z-index:5. Nevim, zda z-index pro img bude mit nejaky vliv, snad ano.
Pokud se jedna o rotaci, take se chova spravne. Spany se otoci na vysku, o 90 stupnu.

<style>
span {border:2px solid #f00;}
    span .yyy {
display:block;
color:#f00;
transform: rotate(43deg);
    }
      .xxx span .yyy {
display:block;
color:#0f0;
transform: rotate(90deg);
  }
</style>

Tezko rici. Muzu tipnout, ze ti to prebiji jina class, kde pouzivas stejnou vlastnost. Nerekl jsi jakou, takze zkus pouzit vyhledavani v kodu a najit jeji nazev a do kazde takove class napro pripsat border:2px solid #f00, pokazde jinou barvu.
A nemas tam nekde zapomenuty strednik nebo preklep v pismenku nebo neco takoveho?
Mas v html class 'logo'? A je ta class u nadrazeneho prvku? Protoze, jestli je jinde, tak se to pise takto:

.logo aside img
aside.logo img
aside img.logo

 

peter
PHP › Session a uživatelská skupina
27. 7. 2018   #381035

S bezpecnosti se neda prehanet. V podstate zadnou nemas, jak to popisujes. Potrebujes tak 75% a mas tak 5% :) Admin=1 zkusi hacker na prvni pokus. Az pak zacne zkouset hesla a tak.

Ted mne jeste napadlo, ze u db je vlastne dobre udelat uzivatele admin, uzivatel, moderator. Pokud muzes delat vlastni uzivatele. Kazdemu dat jina prava pro konkretni tabulky. Pokud bude sql dotaz nad tabulkou, kde nema bezny user prava, tak mu nastaveni admin=1 nebude nic platne, pokud bude v sql prihlaseny jako user z predchozi stranky.  A mas dalsich 10% navic, treba :)

peter
PHP › Session a uživatelská skupina
23. 7. 2018   #381008

Spravne bys mel overovat login a opravneni uzivatele pokazde, kdyz je to kriticky dulezite. Zmeny udaju (UPDATE, DELETE, INSERT) nebo cteni udaju (SELECT), ktere nema jiny uzivatel videt. Idealne vzdy, vsechno.
Napr, aby bezny uzivatel nemohl zjistit prihlasovaci jmeno admina, takze vsechny dotazy, co pristupuji do tabulky uzivatele, napr. Ale mene dulezite muze pro tebe byt, ze se uzivatel dostane k pripravovanemu nezverejnenemu clanku. Ikdyz, tohle by mohlo zas zajimat konkurencni casopis, mohl by clanek vydat driv a ziskat vic prodeju.

Otazkou je, co do session davat.
Muzes tam dat login, psw. Ale, kdyz to bude prohlizet hacker, bude vedet primo login.
Muzes tam davat pseudo-hash, ktery si ulozis do tabulky id_uzivatel, pseudo-hash. To je o neco lepsi, platnost potrva jen dokud je uzivatel prihlasen, nebo das limit 5 min a bud se vygeneruje novy nebo ho to auto-odhlasi. Ale, pokud nekdo sleduje linku, muze stejne podvrhovat akce. Takze by hashe mohla byt soucasti ip a nejake dalsi identifikacni udaje, rozmery okna a jine.

Ja to resim v kazdem programu jinak. Do session davam loginy, hashe. Delam si v php promenou $UZIVATEL. Ale neni to spravne reseni. Spravne by ses mel pokazde zeptat sql. To uz mam take v kritickych programech. Jde o to, ze, pokud se hackerovi podari pres formular obejit nejake kontroly a nastavi si v $UZIVATEL login na admin, skupinu na admin, tak, pokud neoveris i heslo uzivatele, tak mu dovolis treba vytvaret administratory nebo zmenit jinemu uzivateli prava na admina.

Jeste se da udelat superadmin uzivatel. Nekdo, kdo ma login zapsany v externim souboru a vubec ne v db. Pokud nekdo zcizi db, tak tam by mel jen loginy beznych uzivatelu s beznymi pravy.

peter
HTML / XHTML › automatické skrytí fotogalerie
23. 7. 2018   #381007

Mam auto v garazi. Je rozbite. Co mu je? My taky nevime, co je tvemu programu :)

V js se da aktvovat odkaz pomoci elOdkaz.click();
V te galerii bude nejspis moznost nacitat na pozadi. A kdyz ne, muzes pres css nastavit visibility:false. A tu zmenit rekneme po 5s na true. Nastaveni od zacaku prazdneho filtru by nenacetlo obrazky, ne? Kdyz nema nic nacist, nebude nic nacitat. Neco jineho je mit tam jakesi tlacitko, ktere spoustis po nakesovani obrazku.

peter
PHP › include_once '' špatně odkaz…
19. 7. 2018   #380987

Konkretne se jedna o tyto 2 radky, kdyz si je napises pod sebe, realne cesty k obema souborum:
> c:\xamp\htdoc\Link-Ads\Login\index.php include mas
> c:\xamp\htdoc\Link-Ads\Source%20Files\partials/headers.php

peter
PHP › include_once '' špatně odkaz…
19. 7. 2018   #380986

Kit - Firefox a nb nema s obrazky zadny problem. Zkus problem reklamovat a lepe popsat na prislusnem foru Navrhu :) Tak, aby to pochopila i 7 leta holcicka, kdyz to ted nepochopi 40 lety chlap :)


Filip
soubor index.php ma cestu:
> c:\xamp\htdoc\Link-Ads\Login\index.php include mas
> partials/headers.php , cili
> c:\xamp\htdoc\Link-Ads\Login\partials/headers.php ale na obrazku mas
> c:\xamp\htdoc\Link-Ads\Source%20Files\partials/headers.php
Jake je tedy spravna odpoved?
- musis se dostat do links-add, to je '../'
- musis z links-ads otevrit Source%20Files, takze jeste 'Source%20Files/'
Neni to tezke, kdyz si cele ty cesty napises pod sebe.

peter
PHP › upload nefunguje v PHP5
19. 7. 2018   #380985

Pokud mas dotaz, zaloz si vlakno. Pridej tam link na toto vlakno, treba.

Myslim, ze tohle docilit normalne nejde.

Resil bych to zachytavanim inputu pres js. Prekodovanim na base64 v js a poslanim do php jako data. Pripadne to poslat httprequestem (ajaxem). Ale nevim, zda ti tohle umozni web-prohlizec, protoze je to tak jaksi hackovani.
Tam by pak slo vytvorit si i vlastni upload request, kde si to prejmenujes. Ale fakt si nejsem moc jisty, zda to vubec pujde a jak.

A zkousel jsi ten soubor ZIPnout pred poslanim? Ikdyz, nektere scripty stouraji i do zipu...

FF umoznuje takovou vec, ze pomoci 'drag' (uchopeni) souboru z plochy, presunuti do okna do urcite oblasti a 'drop' (pusteni) ti ho uploaduje. Tam to prave pouziva base64.
Nebo, do content=editable divu to jde podobne s obrazky.

https://html5demos.com/dnd-upload/

peter
Návrhy na vylepšení › Zruště programujte.com
17. 7. 2018   #380977

:) Jen chci rici, ze zbytecne delas ze sebe cil i pro nekoho, kdo je jinak cestny. Prilezitost, dela zlodeje, pripadne i vraha. Zlodej obvykle nechce, aby se o jeho jednani vedelo verejne. Vi, ze jedna protipravne. Coz jej stavi do zoufale situace v pripade mozneho odhaleni a muze jednat az vrazedne.

peter
MySQL › Ako sa ukladá viacero hodnôt…
17. 7. 2018   #380976

Moznosti je vicero, ale obvykle se to resi extra tabulkou. id_uzivatel, id_skupina

Pokud je pocet skupin predem znamy, muzes tam dat, tusim, ENUM typ a urcovat to po bitech 100110..., ve ktere je skupine. Ale, je tam tusim nejake omezeni velikosti. Pripadne by tam slo dat integer, ale pak v dotazech na konkretni skupinu bys musel mit policko & 0x01 a pod, pro konkretni bit. Nevim, jak rychle by to bylo.

peter
Návrhy na vylepšení › Zruště programujte.com
13. 7. 2018   #380971

O to zajimavejsi se stava zcizeni takove penezenky, kdyz vis, ze ma ten clovek na karte pin. Nebo si to jen myslis :)

peter
Návrhy na vylepšení › Zruště programujte.com
13. 7. 2018   #380967

Takze, na jinem pc, pokud treba mas pc a 2 nb jako ja, tak jsi uplne ztraceny, ze? Pripadne, pokud zrovna jsi na ucebne, kde ani 1 z tech 3 nemas... :)

peter
JavaScript, AJAX, jQuery › Problém s odesláním formulář…
13. 7. 2018   #380965

Aha. Kdyz on nevyrobi jednoduchy nefunkcni kod a udela copy paste neco uprostred, co treba ani s tim nesouvisi. Nicmene, v tom kodu ma ty chyby, co jsem napsal. Return false nebo event.preventDefault mu zastavi submitovani. Cili, v tomhle pripade se mu vymstilo copy-paste z jineho kodu, kdyz se nesnazil pochopit, jak tech 5 radku vlastne funguje. Ale zas chapu, ze neni jednoduche zrovna submitovani pochopit, jak se propojuje s js. A ani nejsem dobrej ve vysvetlovani, tak snad neco malo z toho pochopi :)

peter
JavaScript, AJAX, jQuery › Editor do redakčního systému
13. 7. 2018   #380964

Ha, ted jsem narazil na tento editor. Take vypada celkem slusne. Ale asi nebude free, kdyz je to pod domenou .com, comercial
https://wordhtml.com/

peter
JavaScript, AJAX, jQuery › problém s prohozením obrázků
13. 7. 2018   #380963

Viz MilanL
<img src="aa.jpg" onclick="changeImage(this)" > - tady je IMG jako tag, do funkce predavas objekt tohoto tagu pres 'this'
<span onclick="changeImage(this)"></span> - do funkce predavas SPAN tez pomoci this
<span><span onclick="changeImage(this.parentNode)" /></span> - do funkce predavas SPAN nad aktualnim objektem, cili ten prvni
 

function changeImage(img) { - tady je img tebou pojmenovana promena
function changeImage(rakosnicek) {
if (rakosnicek.src.endsWith("aa.jpg"))
rakosnicek.src = "bb.jpg";
else rakosnicek.src = "aa.jpg"; }

To bude delat porad totez. Ale lepsi je si promenou pojmenovat tak, aby odpovidala obsahu, ktery prenasi. cili zvolil img. Jeste by bylo pouzitelne el, elem, tag, el_img, obj a podobne. Ale img je asi pro tebe srozumitelnejsi.

<span><span onclick="changeImage(this)" /></span>  <!-- kdyz misto this.parentNode pouziji jen this... -->
function changeImage(rakosnicek) {
span = rakosnicek.parentNode // na ten nadrazeny span muzu dostat uvnitr funkce
 

peter
PHP › Nefunkčný <div>
13. 7. 2018   #380962

Doplneni

html: <form id=a> <span id=b> <div id=c>
css: #a, #b, #c
css: form#a, span#b, div#c /* jeste by to slo psat takhle */

html: <form class=a> <span class=b> <div class=c>
css: .a, .b, .c
css: form.a, span.b, div.c

a kdyz mas vic tagu, tak muzes pracovat se zanorenym, pokud je nad nim konretni tag nebo class nebo id

html: <form class=a> <span class=b> <div class=c>
css: .a, .b, .c {}
css: .a .b {} .a .c {} .b .c {}
css: form.a span.b {} ...
css: form .b {} ...
...

To muzes ruzne kombinovat. Bacha, ale jsou tam urcite priority pri prepisovani. tag, id ma prednost pred class, ... Osobne se snazim pouzivat pro hlavni layout class. Pokud s tim pracuji pres js, tak i id. Pro vsechny dalsi malickosti uz jen class. Jakoze mam na strance blok zpravy
<div id=zpravy class=zpravy> a pak mam jednotlive zpravicky uz jen jako
<div class=zpavicka><div class=nadpis> text </div> ... </div> (css: .zpravy .zpravicka {} .zpravy .zpravicka .nadpis {})
Navic, se snazim maximalne vyuzit prednastavene vlastnosti tagu, abych nemusel pouzivat classy
<div class=zpavicka><h1> text </h1> ... </div> (css: .zpravy .zpravicka {} .zpravy .zpravicka h1 {})
Ale, to je na tobe, jakou si zvolis cestu.

 

peter
PHP › Nefunkčný <div>
13. 7. 2018   #380961

'keď som chcel pridať orámovanie cez css pridaným novinkám'
Co to znamena? V css news {} nemaji zadny border, oramovani. Navic, v html kodu nemas tag news.

spravny zapis

html: <form> <span> <div>
css: form, span, div

html: <form id=a> <span id=b> <div id=c> <!-- pozor, idecka se nesmi opakovat! -->
css: #a, #b, #c

html: <form class=a> <span class=b> <div class=c> <!-- classy se v html kodu opakovat muzou, proto se take vic pouzivaji -->
css: .a, .b, .c

html: <form name=a> <input name=b> <textarea name=c></textarea>
css: form[name=a], input[name=b], textarea[name=c] /* tohle nemusi fungovat ve vsech, prevazne starsich, prohlizecich */

atd...

Www prohlizec ma moznost zobrazit si html kod. Firefox napr.kod soucasne validuje, doplnuje o schazejici tagy. Tam vidis, co ti to vyplodi. Tvuj php kod to vygeneruje uplne spatne. Takze, pak se to ani spravne neoramuje, jestli slo o ten tag table. Struktura tabulky je v html presne dana.
<table> text </table> je spatne (to delaji tve echa)
<table> <tr> <td> text </td> </tr> </table> je povolena varianta
Zkus si html zapisy zkouknout zde:
https://www.jakpsatweb.cz/…tabulky.html

U tabulky je jeste problem, ze ten ramecek nemusi projit. Ona ma vlastni rameckovat.
Misto toho vych tam dal spis
<div class="prispevek"> text </div>
a do css: .prispevek {border: 2px solid #F00;}
https://www.jakpsatweb.cz/css/border.html

peter
Návrhy na vylepšení › Zruště programujte.com
13. 7. 2018   #380960

To propojeni s fb ma prave itnetwork a mozna by to slo vyresit i tady.

peter
Návrhy na vylepšení › Zruště programujte.com
13. 7. 2018   #380959

- s itnetwork.cz zatim nemam zadny problem, adblock funguje dobre
- s programujte.com take ne
- builder.cz je vicemene mrtvy (tam to podelali s updatem forka, ktery trval asi 2-3 mesice, komunita proste odesla)
- jakpsatweb.cz ted ovlada jakasi skupinka prazaku s obchodni politikou, tam nema vubec smysl psat (Pokud se jim znelibite, koncite. Staci zkritizovat par jejich webu v kritice. Pokud to precte zakaznik, muze to poskodit jejich zajmy, coz se jim sakra nelibi. Puvodni svobodne forko proste padlo. Vydrzel jsem tam dost dlouho, co spustili ten terror, ale bylo mne lito kazdeho cloveka, ktereho bloknuli. Najednou prestal treba mesic psat nebo i dele...)

A pak jsou ruzna dalsi forka, ktera jsou uzavrena pres registraci. Hej, nechci si pamatovat login. Jeste bych souhlasil se propojenim s fb uctem.

peter
.NET › Zjednodušení algoritmu
10. 7. 2018   #380934

n - cisel (kod delka)
m - znaku, znaky = string "1234' (kod pocet znaku)

 Pseudokod by mohl vypadat nejak takto:

kod = []
cyklus (i = 0 az n delka)
	{
	next = 1;
	cyklus (j = 0 az n delka) // zkotroluj vsechny znaky
		{
		next = vyhodnot(j, next) // x = kod[j]; x++; if (x<m) {kod[j] = x; return 0;}; kod[j] = 0; return 1;
		if (next==0) break;
		}
        // vypis kod...
	}
peter
JavaScript, AJAX, jQuery › Editor do redakčního systému
10. 7. 2018   #380932

TinyMCe bych doporucil.

Nevim, jaky problem mas s uploadem. Mozna to ocekava nejaky plugin, ta free verze.

Aspon stary FCK nemel defaultne nastaveny upload. Pokud tam tedy v adresarich ty soubory na upload jsou (find text = move_uploaded_file), tak to treba nejspis jen nastavit v configu na php upload a zadat spravne cesty root adresarum. V fck jsem odnekud ten plugin ziskal, ale musel jsem ho cely prepsat. Pocital tam s cestou k webu, kdy je primo / = root = /editor/. Kdezto na hostingu je root adresar / nastaveny jen jako root hostingu. cili, ty mas stranky pod /var/www/moje/editor/. Coz potom je cesta blbe. Mno, nakonec jsem tam udelal asi 3 ruzne cesty misto 1 a v celem pluginu to poprepisoval

Jinak, vypis souboru mas  

$skip = array();
	$dirhandle = opendir($path);
	while (($name=readdir($dirhandle)) !== false)	// adresar name='0'
		{
		if (in_array($name,$skip))
			{
			continue;
			}
		if (is_dir($path.$name))
			{
			$out['dirs'][] = $name;
			continue;
			}
		$out['files'][] = $name;
		}
	closedir($dirhandle);
//var_dump($out['files']);

Upload je trochu slozitejsi. Mam to provazane na nekolik class, tak to sem davat nebudu cele. A tahle cast je jeste netetovana. Zrovna ty odzkousene verze mam na jinem pc...

class classFileUpload
{
var $cfg, $lock_status, $input_all, $file_all;

function __construct()
	{
	$this->cfg = array(
		'root'      => '',
		'lock_path' => './actual/', 
		'lock_file' => 'lock.txt',
		'log_file'  => 'log.txt'
		);
	$this->lock_status = array(
		'locked'   => 'locked',
		'unlocked' => 'unlocked'
		);
	$this->tmp_all  = array();
	$this->file_all = array();
	}


public function errFn($name)
	{
	return 'classFileUpload::'.$name.': ';
	}

public function fileClearPath($path)
	{
	return preg_replace('~^\.+\/+()|\.+(\/)+|(\/)\/+~',"$2",$path);	// odstran ./ ../ ///
	}

public function inputRead($input_name='')
	{
	$err_fn = $this->errFn('inputRead');
	$input_field = isset($_FILES[$input_name]) ? $_FILES[$input_name] : (isset($HTTP_POST_FILES[$input_name]) ? $HTTP_POST_FILES[$input_name] : '');
	if (isset($input_field['tmp_name']) && is_uploaded_file($input_field['tmp_name']))
		{
		$file = $input_field['tmp_name']
		$this->input[] = $file;
		return $file;
		}
	fce_notice($err_fn.'No file is uploaded!','error');
	return false;
	}

public function fileCopy($path_from, $path_to)
	{
	$fp1   = fopen($path_from, "r");
	$data1 = fread($fp1, filesize($path_from));
	fclose($fp1);
	$this->fileWrite($path_to, $data1);
	}

public function fileWrite($file_name, $data, $opt=array())	//, $file_pos_line=0
	{
	$err_fn = $this->errFn('fileWrite');
	$opt = array(
		'end_time'   => 5000,	// 5000 ms
		'type'       => 'w',	// !!! ZMENIT na w nebo w+
		'dir_chmod'  => 0777,
		'file_chmod' => 0755
		);
	$old = umask(0);	// https://www.tutorialspoint.com/…rmission.htm
//	@chmod($dir,$opt['dir_chmod']);		// !!! UPRAVIT kod, pokud budes chtit pouzit | nastav prava adresare na 0777
	$fp  = fopen($file_name, $opt['type']);
	if ($fp === false)
		{
		umask($old);
		fce_notice($err_fn.'Cannot open file '.$file_name.'.', 'error');
		return false;
		}
	// cekej na locknuti 5000 ms, zkousej to kazdych 0 - 100 ms
	$can_write = false;
	$i     = microtime();
	$i_end = $i + $opt['end_time'];
	while (!$can_write && microtime()<$i_end);
		{
		$can_write = flock($fp, LOCK_EX);	// lock
		if (!$can_write)
			{
			usleep(round(rand(0,100)*1000));	// micro-second
			}
		}
	if ($can_write === false)
		{
		umask($old);
		fclose($fp); 
		fce_notice($err_fn.'Cannot unlock file '.$file_name.'.', 'error');
		return false;
		}
//	fseek($fp, $file_pos_line);	// !!! zakomentovat
	fwrite($fp, $data);
	flock($fp, LOCK_UN);				// unlock
	fclose($fp); 
	@chmod($file_name, $opt['file_chmod']);	// !nastavit prava k zapisu souboru, 0755 (rwx r.x r.x) nebo 644 (rw. r.. r..) (owner-vlastnik, group-skupina, other-ostatni, r-read, w-write, x-execute; umask, mkdir)
	umask($old);
	return true;
	}

public function fileRead($name)
	{
	if (file_exists($name))
		{
		$data = file_get_contents($name);
		return $data;
		}
	return false;
	}

public function fileMove($path_from='', $path_to='', $rewrite=false)
	{
	$err_fn = $this->errFn('fileMove');
	if ($rewrite==true || !file_exists($path_to))
		{
		$old  = umask(0);
		@chmod($file_path,0777);	// nastav prava adresare na 777 !nebezpecne
		$bool = move_uploaded_file($path_from, $path_to) || copy($path_from, $path_to) || $this->fileCopy($path_from, $path_to);
		if ($bool!==false)
			{
			fce_notice($err_fn.'Soubor uploadovan.','');
			}
		else	{
			fce_notice($err_fn.'Cannot move file from "'. $path_from .'" to "'. $path_to .'". Check file permitions.', 'error');
			}
		@chmod($to,0444);		// https://www.tutorialspoint.com/…rmission.htm
		umask($old);
		return $bool;
		}
	fce_notice($err_fn.'Cannot move file. File "'.$path_to.'" is exist!', 'error');
	return false;
	}

public function upload($input_name, $file_path, $rewrite=false)		// NORMAL UPLOAD
	{
	$err_fn    = $this->errFn('upload');
	$path_from = $this->inputRead($input_name);
	if ($path_from===false)
		{
		return false;
		}
	return $this->fileMove($path_from, $path_to);
	}
peter
JavaScript, AJAX, jQuery › Problém s odesláním formulář…
10. 7. 2018   #380931

Na nevyznam se odpovidat, tak se ho nauc :) A vzhledem k tomu, ze tve dotazy tu vidam neco pres rok... Opet zadarmo a opet zadna vlastni snaha. Nekdo by to mohl oznacit za zlodejinu :)

$(".validate-form").submit --- tohle nejspis nahrazuje zapis <form onsubmit="return mojefunkce();" action="posli.php">
Pokud je return uvnitr v 'mojefunkce' true, tak se formular odesila do action.
Pokud false, formular se neodesila.

Puvodni kod tedy funguje tak, ze
1. check = true
2. cyklus, projdi vsechna policka a kdyz je neco spatne, nastav check = false (jakasi validace)
3. return check

var noValidate = $(this).find('[clicked="true"][formnovalidate]').length !== 0;
if (noValidate) { return true; }

Tady si nejsem jisty, co to presne udela ten jquery zapis. Prijde mi, ze je to nejaky nesmysl. Tezko hadat bez html kodu, co jsi chtel docilit. Takze, dalsi krok je google.
google = jquery find examples // nebo mozna
google = jquery find examples by name checkbox

https://stackoverflow.com/questions/4870494/jquery-find-child-checkbox

Cili, bych tam ocekaval spis neco takoveho

$tc = $(this).parent().find('input:checkbox:first'), // nebo ('input[name="nevalidovat"'),
if ($tc.attr('checked')) {...}


https://api.jquery.com/…ox-selector/

event.preventDefault(); // to je asi neco, co tam strasne moc nechces, zkopiruji ti celou cast z dokumentace... 

// Prevent the form from submitting
$( "form" ).submit(function( event ) {
    event.preventDefault();
});

Prelozeno do cestiny: Zabran odeslani formulare za kazdou cenu. Ok, tak jen bez poslednich slov s cenou :)
1. Jde o to, ze kdyz kliknes na <input type=submit>, tak udalost click se ulozi do objektu event. Bylo kliknuto, bylo kliknuto na element button.
2. Nekde na pozadi bezi program sledovac udalosti elementu. Zjisti, ze bylo kliknuto na element, ktery ma zpusobit odeslani formulare. Spusti funkci form onsubmit a ceka na jeji vysledek.
3. Pokud tam mas navazavou vlastni funkci, to muzes. Ale, onsubmit je samostatna funkce, pseudokod by vypadal nejak takto:

onsubmit=funkce(event){ mojefunkce(event){ return neco; }}

Default je kazda funkce nastaveny return na true, cili

onsubmit=funkce(event){ mojefunkce(event){ return neco; } return true;}

4. Cili, vykona se tva funkce mojefunkce a onsubmit vrati defaultne true. A pokud ano, tak se pokracuje dal v odesilani formulare pomoci adresy action, neco jako odesli(url=action, data=inputy).

Takze, pokud nechces formular odeslat, tak vratis returnem false.
onsubmit=funkce(event){ mojefunkce(event){ return neco; } return false;}

Pokud je tva funkce validacni a ma rozhodovat o odeslani nebo ne, tak by pseudokod vypadal takto
onsubmit=funkce(event){ return mojefunkce(event){ return neco; } }
A nebo muzes pouzit zastaveni sledovace udalosti event.preventDefault();
onsubmit=funkce(event){ mojefunkce(event){ if (!neco) event.preventDefault(); } }

Tak, jak to mas ted napsane, se to chova podle mne takto (za predpokladu, ze spravne funguje to novalidate = checkbox...)
- pokud je zaskrtnuty, ukonci se funkce 'return true;' a formular se odesle
- pokud neni zaskrtnuty, ukonci odesilani e.preventDefault();
- a dalsi casti uz nemaji na samotne odesilani (submit) vliv :)

peter
XML / XSL(T) › XML_DITA
8. 1. 2017   #214413

Zkousel jsi to dat do google?

https://docs.oasis-open.org/dita/v1.2/os/spec/langref/bibliolist.html

<bookmap>
  <!-- ... -->
  <backmatter>
    <amendments href="updatesToTheBook.dita"/>
    <booklists>
      <trademarklist href="listoftrademarks.dita"/>
      <bibliolist href="bibliography.dita"/>
      <indexlist/>
    </booklists>
  </backmatter>
</bookmap>
peter
JavaScript, AJAX, jQuery › Prihlásenie cez ajax alebo r…
6. 1. 2017   #214392

Html / javascript je treba odesilat pres https. Jde o to, aby nikdo nemohl prihlaseni napodobit, kdyz sedi vedle v pokoji a vidi celou tvou bezdratovou komunikaci, vidi html / js, kdyz si tu stranku take otevre.

Cili, jestli udelas html formular nebo to resis na pozadi pres javascript, je uplne jedno. A na tu otazku se neda odpovedet.

peter
PHP › Parser z M Onlajny
2. 1. 2017   #214345

Tu stranku davam proto, ze je mozne si na ty funkce kliknout a pise tam, co delaji a semtam byva i nejaky pouzitelny priklad.

peter
PHP › Parser z M Onlajny
2. 1. 2017   #214344

 class je attribut, vsechny attributy muzes vytahovat takto

example 1 posledni radky xml:

  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
</movies>

example 5 posledni radky php: <?php

foreach ($movies->movie[0]->rating as $rating) {
    switch((string) $rating['type']) { // Get attributes as element indices
    case 'thumbs':
        echo $rating, ' thumbs up';
        break;
    case 'stars':
        echo $rating, ' stars';
        break;

funkce, ktere class objekt dale obsahuje jsou...
http://php.net/…tor.php ;

/* Methods */
public mixed current ( void )
public SimpleXMLIterator getChildren ( void )
public bool hasChildren ( void )
public mixed key ( void )
public void next ( void )
public void rewind ( void )
public bool valid ( void )
/* Inherited methods */
final public SimpleXMLElement::__construct ( string $data [, int $options = 0 [, bool $data_is_url = false [, string $ns = "" [, bool $is_prefix = false ]]]] )
public void SimpleXMLElement::addAttribute ( string $name [, string $value [, string $namespace ]] )
public SimpleXMLElement SimpleXMLElement::addChild ( string $name [, string $value [, string $namespace ]] )
public mixed SimpleXMLElement::asXML ([ string $filename ] )
public SimpleXMLElement SimpleXMLElement::attributes ([ string $ns = NULL [, bool $is_prefix = false ]] )
public SimpleXMLElement SimpleXMLElement::children ([ string $ns [, bool $is_prefix = false ]] )
public int SimpleXMLElement::count ( void )
public array SimpleXMLElement::getDocNamespaces ([ bool $recursive = false [, bool $from_root = true ]] )
public string SimpleXMLElement::getName ( void )
public array SimpleXMLElement::getNamespaces ([ bool $recursive = false ] )
public bool SimpleXMLElement::registerXPathNamespace ( string $prefix , string $ns )
public string SimpleXMLElement::__toString ( void )
public array SimpleXMLElement::xpath ( string $path )
}

Tohle je nejaky nesmysl, ktery se ani neodvazim komentovat. Mozna v php7, ale v php, ktere znam ja, takhle zapisovat nelze
$time = $domPhpDocument->document.getElementByClass('time');
 

peter
PHP › CMS v PHP, mySQL - test
1. 1. 2017   #214335

Mno, bylo by fajn to prepsat na pdo a php 7.

https://github.com/BluesatKV/CMS-Bluesat/blob/master/admin/template/newcat.php
Tady bych se treba vyhnul michami html, js, php dohromady. Napr vypsani selectu cyklem uprostred php pri nespravnem nastaveni php muze delat potiz. Navic to proste nema pres funkci, ale ma tam furu ifu. Snadno udelas chybu.
select name="jak_permission[]"
Osobne mam funkce
html_selectlist($params, $list, $selected) nebo
html_checklist($params, $list, $selected) pro checkboxy
$params = array (id=>..., name=>..., onclick=>)
list = (1=>auto,2=>motorka, ...)
selected = (2, 5)

Testovat to nejdu. Pokud ti to vyhovuje, tak to pouzij :)

peter
PHP › Parser z M Onlajny
1. 1. 2017   #214334

http://php.net/manual/en/simplexml.examples-basic.php 
(xml soubor je v example 1)

Example #5 Using attributes

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

/* Access the <rating> nodes of the first movie.
 * Output the rating scale, too. */
foreach ($movies->movie[0]->rating as $rating) {
    switch((string) $rating['type']) { // Get attributes as element indices
    case 'thumbs':
        echo $rating, ' thumbs up';
        break;
    case 'stars':
        echo $rating, ' stars';
        break;
    }
}
?>
peter
PHP › č prepíše na ?
1. 1. 2017   #214333

:)
Podivej, otevres si phpmyadmina.
1. Podivas se, jak mas nastavene pripojeni nebo zkusis vytvorit novou tabulku. Tam ti nabizi, jake ma pouzit colation.
2. Rozklikas tabulku a podivas se na strukturu pripadne jestli najdes nekde kodovani. Tam by mel ukazovat stejne kodovani, idealne. cili to utf8.
3. A ted, kdyz delas import, tak musis vedet v jakem kodovani mas soubor. Ted to zacne byt hrozne zajimave. Kdyz soubor udelas ve win, tak kodovani je win-1250 pro header() pro echo na obrazovku, ale i SET NAMES pro sql musis dat na win-1250. Db by si to pak mela spravne prekodovat do tabulky s utf8.

Vetsinou u prevodu starych db do novych pc je soubor v latin-swedish a db maji tabulky tez latin, SET NAMES je tez latin. Takze je dobre tam vzdycky vnutit vlastni prikaz nez spolehat na default nastaveni.

Kdyz treba delas SELECT z db a navic vypisujes soubor z win-1250, tak muzes pred SELECT pouzit SET NAMES pro utf8, php header pro uft8, ale soubor musis prekonvertovat pres iconv() nebo neco jako mb_conv() z w1250 na utf8. jinak se na obrazovce zobrazi nesmysly.

Spatne se to popisuje, udelat to je otazka asi minuty :) Tak je fajn, ze se ti to nejak podarilo.
Jeste se ti muze stat, ze to prave naimportujes se spatnym kodovani. Jakoze soubor mas w1250, ale das SET NAMES latin1 a tabulka bude utf8. Tak to pak uz z ni ve spravnem kodovani nikdo nedostane a je treba to pres php nejak opravit :)

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý