Akihabara.cz

Ostatní => Počítače => Téma založeno: Hito 28. Březen 2013 - 15:08:02

Název: Pomoc s webovými stránkami
Přispěvatel: Hito 28. Březen 2013 - 15:08:02
Ahoj, jsem v tomhle úplný amatér, potřebuju udělat webovky kde by bylo pozadí jeden veliký GIF a přes odkazy na něm by se dalo dostat do daných sekcí, jak by to šlo nejlépe udělat ? diky
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Aurielle 28. Březen 2013 - 15:31:18
Gif na pozadí je dost špatná věc, imagemapa taky.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: kvacm 28. Březen 2013 - 15:39:41
Obrázek udělej v *.jpg a odkazy pomocí boxů. U nich můžeš nastavit velikost a pojede ti to rychleji, a hlavně to budeš mít v docela slušné kvalitě.

Avšak nejspíše to chceš mít dynamické, aby se ty gifka hýbaly. To je lepší vytvořit to pomocí flash, což s tím ti neporadím, nebo ty gifka dát až pod hover.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 28. Březen 2013 - 15:44:27
Jsem laik :D ale díky, skusím to někde vygooglit
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 28. Březen 2013 - 21:50:24
Ahoj, jsem v tomhle úplný amatér, potřebuju udělat webovky kde by bylo pozadí jeden veliký GIF a přes odkazy na něm by se dalo dostat do daných sekcí, jak by to šlo nejlépe udělat ? diky
No moc informací si nepodal. Měli by mít ty odkazy nějaké patvary? Či mít pouze tvar čtverce nebo obdélníku? Proč ses rozhodl zrovna pro gif.? Co od toho očekáváš?
Gif rozhodně není vhodným formátem, který bys měl použít, ten rovnou zavrhni.
Pokud by ti šlo o patvary, tak se můžeš nechat inspirovat tímto na co jsem kdysi narazil
Kód: [Vybrat]
http://winstonwolf.pl/clickable-maps/europe.html (hezký nápad :-) ) je to dělaný za pomocí Css a Jquery, ale řekl bych že jako laikovy ti to asi moc užitečný nebude, už to vyžaduje nějaké znalosti.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 28. Březen 2013 - 23:53:21
Ahoj, jsem v tomhle úplný amatér, potřebuju udělat webovky kde by bylo pozadí jeden veliký GIF a přes odkazy na něm by se dalo dostat do daných sekcí, jak by to šlo nejlépe udělat ? diky

http://www.jakpsatweb.cz/
Název: Re:Pomoc s webovými stránkami
Přispěvatel: kvacm 29. Březen 2013 - 09:03:06
Ano, chtělo by to více informací o tvém projektu. Co a jak to má vypadat. Zhruba o čem to má být, co tam má být a možná udělat nějaký nákres.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 29. Březen 2013 - 15:18:48
Bude to jednoduchý web pro kamarádovi a moje překlady, pozadí http://2i.cz/89ca4963b0 a jen pár tlačítek, přeloženo, nějaký ten questbook
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 29. Březen 2013 - 16:29:34
Bude to jednoduchý web pro kamarádovi a moje překlady, pozadí http://2i.cz/89ca4963b0 a jen pár tlačítek, přeloženo, nějaký ten questbook
Aha zdá se, že jsem se nechal ovlivnit reporty nade mnou a přitom tobě šlo asi jen o primitivní stránku, tohle fouknout na pozadí a dát přes to klasické menu, chápu to teď správně?

Tohle jde jednoduše, třeba takhle:
Kód: [Vybrat]
body {
background:orange url('slecna.gif') no-repeat right bottom;
}
Barvu sem netrefil, ale to si už doladíš sám. Ta ti vyplní vlastně všechno kde končí daný vložený obrázek(slecna.gif) => tedy zbytek celého pozadí. Trošku záludné může být pro tebe to, proč se ti celý obrázek pak nezobrazí, když budeš mít na stránce málo textu, ono je to právě díky tomu, že to máš zarovnané na spodní pravý roh, tedy všechno se počítá odsud. Takže tam pak budeš muset dát do těch závorek ještě:
Kód: [Vybrat]
min-height:100px;Hodnotu si znovu upravíš dle libosti.

A tu slečnu víc ořízni, zbytečně načítáš velkou obludu a přitom ti ten příkaz v CSS tu okolní barvu doplní sám.

P.S.:
Je vidět, že jsi laik opravdu v pravém slova smyslu, tudíž doporučuji si přečíst něco o CSS, kterým se vlastně vytváří celé rozložení stránky(samozřejmě grafika do toho spadá taky). Doporučuji se držet CSS2, protože CSS3 ještě není plně podporováno všemi prohlížeči a akorát by ti to mohlo způsobovat hlavy bol, protože bys nechápal co se děje, když třeba v Chrome ti to půjde a v Internet Exploreru ne.
Tady máš nějaké příklady:
Kód: [Vybrat]
http://www.w3schools.com/css/default.aspPokud to budeš psát sám, tak na začátku použij na vyresetování nastavení ve všech prohlížečích tohle:
Kód: [Vybrat]
http://meyerweb.com/eric/tools/css/reset/
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Gurthfin 29. Březen 2013 - 19:26:11
ja zase odporucam http://webtvorba.howto.cz/ aspon tu som sa naucil to, co som chcel, ked som nechapal o com ini hovoria
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Aurielle 29. Březen 2013 - 20:07:22
jj.. zrovna chrome mi dal nedávno pěkně zabrat.. z nějakého důvodu zachází s marginem poněkud jinak než všechny ostatní prohlížeče.. >_<

Kód: [Vybrat]
* { box-sizing: border-box; }ftw :D
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 29. Březen 2013 - 20:51:02
Děkuji všem za rady, FaraonX mrknu na to a ještě jednou dík, snad se povede
kdyžtak se zeptám
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 29. Březen 2013 - 21:37:22
Stal se takový problém, ořízl sem a Saber se přestala hýbat  :o co s tím
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 29. Březen 2013 - 21:53:31
jj.. zrovna chrome mi dal nedávno pěkně zabrat.. z nějakého důvodu zachází s marginem poněkud jinak než všechny ostatní prohlížeče..

Že by zrovna chrome měl počítat margin po retroexplorerovsku? To se mi nezdá... A s pomalým odchodem IE6 do nebytí už optimalizace via svatou trojici (FF (+Chrome), IE, Opera) pomalu přestává být urgentní, tím spíš optimalizovat exkluzivně pro starý IE... Budiž zatracen na věky věkův a haleluja, že Microsoft vzdal snahu o vlastní standardy.

...

S trochou rozkoukání bych ti doporučil počíst si rovnou něco o redakčních systémech a porozhlédnout se po nějakých volně dostupných šablonách k nim. Ty si pak eventuálně krok po kroku upravit, klidně i metodou pokus - omyl. Jestli ty stránky mají být prakticky použitelné pro publikaci čehokoliv, rozhodně je schůdnější aktualizovat obsah přes nějaké publikační webové rozhraní a free CMS právě takovou prefabrikovanou možnost nabízí.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 29. Březen 2013 - 21:55:17
Stal se takový problém, ořízl sem a Saber se přestala hýbat  :o co s tím

Nejspíš jsi z animovaného gifu udělal obyčejný  :) Animovaný gif se skládá ze série obrázků, musíš mít aplikaci, která to umí. Třeba Zoner Gif Animator
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 29. Březen 2013 - 22:35:33
Aha, Zoner zrovna mám, tak to trochu nastaduju a oříznu, pak se pustím do webu,
Jinak hosting musím mít že ? třeba od Endory
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 29. Březen 2013 - 22:52:30
Aha, Zoner zrovna mám, tak to trochu nastaduju a oříznu, pak se pustím do webu,
Jinak hosting musím mít že ? třeba od Endory

Jj, na něčem to běžet musí. Vyzkoušej, když je to zadarmo, kromě času nic neriskuješ.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: kvacm 30. Březen 2013 - 13:28:41
Aha, Zoner zrovna mám, tak to trochu nastaduju a oříznu, pak se pustím do webu,
Jinak hosting musím mít že ? třeba od Endory

Endora prý zrovna moc dobrá není. Tedy co jsem slyšel.

Well... pokud bys chtěl, tak ti můžu klidně udělat celej web na WordPressu. Pokud by ti teda nevadil redakční systém WordPress.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 30. Březen 2013 - 15:37:00
To by si byl  moc hodný, včera jsem se s tím pral a nedopadlo to moc dobře :/, stačilo by kdyby si mi pořešil to pozadí atd..
Wordpress, vím o co jde :)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: kvacm 30. Březen 2013 - 17:16:14
Oke, poslal jsem ti PM.

S tím pozadím mi to budeš muset trošku vysvětlit, jak bys to přesně chtěl. Stále totiž nechápu úplně přesně tvůj záměr :)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 30. Březen 2013 - 19:04:43
Endora prý zrovna moc dobrá není. Tedy co jsem slyšel.
Já jo a rovněž bych ji nedoporučil. Nejhorší věc je ta, že když si chvíli nečinný, tak ti ani nenapíšou žádné varování a rovnou ti bez okolků smažou databázi.

Hito:
Při vysvětlování postupuj jako bys to vysvětloval kojenci. Ušetříte si plno nedorozumění při návrhu. Nic neotráví život tolik, jako když musí člověk jednu věc 10x předělávat. A úplně nejlepší je, když to alespoň nějak primitivně načrtneš a ukážeš to jako obrázek. Pro ještě rychlejší návrh zkus použít nějaký "Wireframe". Zkusit můžeš třeba
Kód: [Vybrat]
http://www.mockflow.com/
http://framebox.org/iFQA

S tím pozadím mi to budeš muset trošku vysvětlit, jak bys to přesně chtěl. Stále totiž nechápu úplně přesně tvůj záměr :)
Prostě udělej světle oranžově pozadí webu a dolů doprava mu šoupni ty holčinu. Jestli jsem to správně pobral. :-)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 30. Březen 2013 - 19:37:51
Ano jak píšete, jen jednoduchý web, a mohla by být i jiná barva
No nemyslím si že by to byla nějaká extra aktivní stránka, prostě něco jednoduchého typu  http://translatedby.kozec.com/
Už dělám na prvním projektu, a už podle názvu předlohy to asi bude potřebovat korekturu :D
Název: Re:Pomoc s webovými stránkami
Přispěvatel: kvacm 30. Březen 2013 - 19:49:46
A nebylo by spíše lepší se k někomu přidat? Neříkám zrovna k někomu velkýmu, ale přeci. Jako začátek by to mohlo být lepší a navíc, ne vždy překladatel dokončí své ambice.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Aurielle 30. Březen 2013 - 19:54:15
S češtinou jako „návrch“ ti nedoporučuju se vůbec věnovat překladům.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 30. Březen 2013 - 20:11:56
Neříkám zrovna k někomu velkýmu, ale přeci. Jako začátek by to mohlo být lepší a navíc, ne vždy překladatel dokončí své ambice.
Pokud tohle dokážeš vysvětlit alespoň 50% všech zbytečně nově založených Fansubů, tak si tvůj avatar vylepím nad postel. :-D

Neříkám zrovna k někomu velkýmu, ale přeci. Jako začátek by to mohlo být lepší a navíc, ne vždy překladatel dokončí své ambice.
Klidně by mohl zkusit třeba Chiku, každej si tam jede to své, nikdo neprudí a přitom tam má ostřílené veterány.

P.S.: A hlavně by mu odpadly ty věci ohledně dělaní vlastních webovek.

S češtinou jako „návrch“ ti nedoporučuju se vůbec věnovat překladům.
Pokud umí dobře překládat, tak s tebou jasně nesouhlasím. Dobrý korektor tenhle nedostatek lehce za záplatuje a přinejhorším to protáhne alespoň Wordem. Z mého pohledu je horší špatný překlad bez gramatických chyb.  :)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 30. Březen 2013 - 20:12:20
Aurielle,
Citace
Už dělám na prvním projektu, a už podle názvu předlohy to asi bude potřebovat korekturu
překlepy se hold stávají, ne že bych si toho nevšiml :)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 30. Březen 2013 - 20:20:53
Já bych potřeboval jen pomoct s tím webem, měl by mít více využití, překlad, ale i pavouka(turnaj) pro kamarády atd..
Píšu protože o tom vím kulový, já neřeším jestli chci překládat solo nebo u fansubu, a u fansubu bych ani nechtěl, překládal sem tam rok a pak mě vyštípali, jakobych tam ani nebyl, a ve videu nebylo u překladu moje jméno ale jméno někoho jiného :)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 30. Březen 2013 - 21:03:30
Ano jak píšete, jen jednoduchý web, a mohla by být i jiná barva
No nemyslím si že by to byla nějaká extra aktivní stránka, prostě něco jednoduchého typu  http://translatedby.kozec.com/
Už dělám na prvním projektu, a už podle názvu předlohy to asi bude potřebovat korekturu :D

Nějak takhle úplně jednoduše (http://www.skg-webdesign.cz/demo1/)?

BTW: holčina musí trošku vyčuhovat, protože text by přes ní byl nečitelný.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Hito 30. Březen 2013 - 21:32:11
Ano nějak takhle, jen by tam určite bylo méňe textu
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 30. Březen 2013 - 21:43:17
Ano nějak takhle, jen by tam si myslím určite bylo méňe textu

To už je jedno, co a kolik si tam do toho dáš. Kdyby toho mělo být jó málo, upravíš rozměry layoutu na cosi jako microsite, aby prázdné místo nevypadalo blbě.

Mno, jestli chceš, v rámci nezištné kolegiální výpomoci ti rozjedu CMS Textpattern pod svým webhostingem. Když tak napiš SZ.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 10. Březen 2017 - 23:11:56
mám web se stránkou "index.php" kde vytvořím session. dále menu, které mění její hodnotu, a podle hodnoty se mění obsah samotné stránky. (přes refresh indexu) problém je v tom, že první kliknutí je vždy "naprázdno". (předpokládám že je to tím, že session nemá po vytvoření žádnou hodnotu) dá se tohle nějak vyřešit, nebo je lepší zapomenout na session a udělat vše přes klasické odkazy?
Název: Re:Pomoc s webovými stránkami
Přispěvatel: 8B3CE273 11. Březen 2017 - 07:44:40
stačí zadat
Kód: [Vybrat]
if (! is_set($_SESSION)) {[i]nastaveni nějaké výchozí stránky[/i]}, ale jinak bych to přes session nedělal a aktuální stránku posílal přes GET, bude to mnohem praktičtější
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 11. Březen 2017 - 09:49:25
..
díky.. no já jsem v php naprostý noob, takže to už bych to spíš přepsal do čistého html.. ale zatím to  asi nechám tak..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 12. Březen 2017 - 00:13:52
... dá se tohle nějak vyřešit, nebo je lepší zapomenout na session a udělat vše přes klasické odkazy?
Většina věcí se dá vyřešit, ale jak psal i 8B3CE273 je lepší na session v tomhle směru zapomenout. Dávej si trochu bacha, aby sis ze session nedělal takový odpadkový koš. ;-)

Jinak s tím přepsáním do čistého html... jednodušší cesta většinou nebývá ta nejlepší. Jako pokud chceš mít jen 5 statických stránek, který budeš měnit 1x za rok, tak proč ne, ale pokud tohle není ten příklad, tak mi věř, že tenhle nápad budeš jednou dost proklínat. :-) Toho PHP se neboj, sice jako všechno chvilku zabere, než se v tom zorientuješ, ale ono se to podá. A s ušetřením pár nervů ti na začátku pomůžou i Frameworky, abys nemusel řešit třeba ošetřování vstupů na DB atd. Pro začátečníky je dle mého názoru nejlepší CodeIgniter. Jednoduchý na naučení i orientaci. Nebo můžeš zkusit i Laravel, ale co si pamatuji, tak neměl tak hezkou dokumentaci, a byl o fous komplikovanější. Ale zase bych tipoval, že na něj najdeš asi víc video tutorialů. Takže hlavně se toho nebát. ;-)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 12. Březen 2017 - 00:58:56
..
tak mám jen jednu session, na to menu. prozatím předpokládám, že se obsah moc často měnit nebude. ale mám notepad (++) a total commander.. ^_^ pokud by současné řešení v budoucnu nestačilo, spíš bych nainstaloval nějaký hotový produkt. na vývoj něčeho svého nemám moc podmínky, i když bych se něco rád naučil. (teď jsem rád, že jsem zprovoznil kontaktní formulář ^^;)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 12. Březen 2017 - 02:08:22
tak mám jen jednu session, na to menu. prozatím předpokládám, že se obsah moc často měnit nebude. ale mám notepad (++) a total commander.. ^_^ pokud by současné řešení v budoucnu nestačilo, spíš bych nainstaloval nějaký hotový produkt. na vývoj něčeho svého nemám moc podmínky, i když bych se něco rád naučil. (teď jsem rád, že jsem zprovoznil kontaktní formulář ^^;)
Notepad++ je šikovnej všeuměl, ale použitelný je jen na menší věci. U větších projektů je už komplexnější IDE k nezaplacení. Ale s tím ti teď asi nemá cenu motat hlavu. Možná bys ještě mohl zkusit
Visual studio code. Je to taky takový odlehčený prostředí, a četl jsem na to dobrý recenze, že se lidi od Mrkvosoftu vcelku vytáhli, takže na to pomalu přelézají lidi co dříve používali Sublime.
Správně TotalCommander to je základ úspěchu. :-)

Tak záleží co potřebuješ. Ale pravda, vývoj něčeho vlastního stojí strašně času, a čím to nabírá na komplexnosti, tak i nervů, pokud se to snažíš psát, aby kód byl snadno udržovatelný. Na druhou stranu, umět alespoň základy není rozhodně naškodu, protože pak si alespoň můžeš ty hotové produkty ohýbat k obrazu svému. Namísto naříkání, že nemůžeš najít přesně to, co bys potřeboval. ;-)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 12. Březen 2017 - 02:46:56
..
jj, před pár dny jsem právě hledal nějaký nákupní košík, ale ten, co se mi líbil nejvíc, byl napsaný v javascriptu, který už do toho míchat nechci. takže jsem tam dal "jen" php kontaktní formulář, který mi ale nakonec přijde k danému účelu o něco vhodnější, a u kterého jsem si byl aspoň schopný přidat svoje položky, naformátovat odesílanou zprávu, a dodělat primitivní antispam..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 12. Březen 2017 - 21:41:34
Tak zrovna pro košík by bylo použití session smysluplnější než pro přechod mezi stránkami...
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 12. Březen 2017 - 22:53:49
Tak zrovna pro košík by bylo použití session smysluplnější než pro přechod mezi stránkami...
jo, pro mojí současnou situaci asi i ano, protože potřebuju, v ideálním případě, přidat do košíku vždy jen jednu položku. ale pokud bych chtěl napsat normální košík, pro více položek, neobešel bych se bez array, protože potřebuju pracovat i s hmotností. a i když si na array zatím netroufám, přijde mi to jednodušší, než se snažit rozchodit něco s multiple sessions..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 13. Březen 2017 - 11:59:42
S jednorozměrným polem si vůbec hlavu nedělej. Není to nic složitého. Potřebuješ jen explode (http://php.net/manual/en/function.explode.php), count (http://php.net/manual/en/function.count.php) a cyklus for (http://php.net/manual/en/control-structures.for.php).

První ti rozdělí řetězec podle tebou určeného znaku, druhá funkce spočítá počet prvků pole (u tebe položek), no a když počet prvků pole dosadíš jako maximum opakování cyklu, for ti položky vypíše.

V session $_SESSION['kosik'] je dejme tomu uloženo

~Hentai 200,- Kč~Zase hentai 300,- Kč~Super hentai 400,-Kč

nasekáš tedy řetězec z session na položky

$ukazKosik = explode("~", $_SESSION['kosik']);

spočítáš počet položek

$pocet = count($ukazKosik);

a pak už jen vypíšeš cyklem

for($c = 1; $c <= $pocet; $c++){
echo "<br/>".$ukazKosik[$c];
}

To je princip. Z každé položky pole taky můžeš získat další pole, abys dostal zvlášť název a zvlášť cenu (když si je při ukádání do session taky oddělíš [jiným] separátorem), kterou pak můžeš sčítat... Nebo si hrát s hmotností...

Tady (http://www.zmrzliny-nanuky.cz/produkty.php) jsem kdysi dělal košík právě přes session.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 13. Březen 2017 - 13:35:04
..
ok.. koukám, že mám tu čest s profesionálem. ^_^ a jsem částečně překvapen, a částečně demotivován. ^^; překvapen proto, že jsem vůbec netušil, jaký má vlastně session potenciál, a demotivován, když se podívám na to, s čím zápasím já.. někde jsem kdysi četl něco o použití více session, tak by mě vůbec nenapadl ten trik se separátorem, a vidím, že tohle dává mysl, a bohatě by to stačilo.. takže zkusím co nejdříve zprovoznit to, co mám, a pokud by byl nějaký zájem, tohle se zdá být dobrá cesta pro tvorbu nějakého jednoduchého eshopu.. a potěšilo mě, že aspoň ten antispam mám podobný.. ^_^
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 13. Březen 2017 - 14:29:51
...

Ten for cyklus ti skončí errorem. Takhle by to mělo být:
Kód: [Vybrat]
for($c = 0; $c < $pocet; $c++){
A ten způsob bych nedoporučil, protože je dost neforemný.

Jinak když tam má rovnou array, tak je zápis přeci jen kratší a přehlednější:
Kód: [Vybrat]
foreach ($_SESSION['kosik'] as $value) {
    var_dump($value);
}

... a i když si na array zatím netroufám, přijde mi to jednodušší, než se snažit rozchodit něco s multiple sessions.

Vůbec se toho neboj. Práce s poli je jednoduchá. Důležitý je jen si dát na začátku bacha, že pole se indexuje od nuly a ne od jedničky. Což je trochu proti srsti, ale zvykneš si. ;-) A zrovna PHP má plno implementovaných funkcí na práci s poli, takže to není jako kdybys musel řešit práci s polem v C-éčku.

A jak si poslat data z formu jako array, taky jednoduše vygooglíš.  ;)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 13. Březen 2017 - 14:46:56
Pročpak by to mělo skončit chybou :)? Testoval jsi to? Já jo. Menší nebo rovno je tam z toho důvodu, že první položka přece bude v indexu začínat jedničkou ($c = 1), takže nemůžu vypisovat $ukazKosik[0], tedy s <= proběhne žádoucí cyklus navíc. A nebude tam mít pole, bude tam mít string. Foreach by tedy skončil chybou.


No, já jsem taky samouk a věnuju se tomu jen tak bokem. Faraon má pravdu, že foreach by byl vhodnější, pokud bys ukládal do session rovnou pole. Prostě si s tím pohraj, časem to stejně uděláš :)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 13. Březen 2017 - 17:14:18
Pročpak by to mělo skončit chybou :)? Testoval jsi to? Já jo. Menší nebo rovno je tam z toho důvodu, že první položka přece bude v indexu začínat jedničkou ($c = 1), takže nemůžu vypisovat $ukazKosik[0], tedy s <= proběhne žádoucí cyklus navíc. A nebude tam mít pole, bude tam mít string. Foreach by tedy skončil chybou.
Ok, tak to vyhodí jen notice. PHP je odolný jazyk. :-D Problém je v tom, že exclude odděluje přes znak "~" je mu jedno jestli je něco před nebo za. Takže pokud mu pošleš jen string "~", tak ti to udělá pole o dvou prvcích s prázdnou hodnotou. To co tam posíláš teď ti vrátí pole o 4 prvcích:
Kód: [Vybrat]

[0]=> ""
[1]=> "Hentai 200,- Kč"
[2]=> "Zase hentai 300,- Kč"
[3]=> "Super hentai 400,-Kč"

Tudíž až dojdeš na index "4", tak by ti to mělo napsat, že offset není definován.
Tady je vidět první problém, že musíš řešit že první prvek je prázdný a píšeš zbytečně kód navíc. Ale hlavní problémy začnou nastávat, když pak bude mít nějaká položka nějaké parametry co ta druhá nemá atd. A pak to rozklíčovávat do nějaké formy, bude utrpení. Takže já jsem jasně pro array.  :)
Ono asi úplně nejsprávnější by bylo, kdyby v dnešní době plné objektů měl v té session uložené pole se serializovanými objekty reprezentující položky košíku. Ale to nemá v tomhle stádiu cenu řešit.

Jsme se s foreach-em nepochopili. Pravda, napsal jsem tu svou větu trochu krkolomně. :-[ Myslel jsem to jako, kdyby tam už měl rovnou v té session ten array, takže to stačí napsat s tím foreachem.

Prostě si s tím pohraj, časem to stejně uděláš :)
Souhlas. Důležitý je brát to jako hraní, a ono se to pak samo podá.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 13. Březen 2017 - 17:56:40
Nevyhodí to ani report. Ostatně, proč by prvek pole nemohl být prázdný...

Já ti rozumím a nehádám se. Vztahovalo se to k tomu konkrétnímu příkladu, kde samozřejmě dostanu pole o čtyřech prvcích, kdy v cyklu for (protože $c = 1, aby bylo možno pro výčet použít $c++) dostávám jako první hodnotu 1 a nikoliv 0 a právě proměnná $c je použita jako index pro výpis prvku pole. Jiná možnost by byla od $c odečítat 1, prašť jako uhoď.

Klidně může do session ukládat rovnou pole, myslím, že už si s tím nějak poradí :)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 13. Březen 2017 - 18:40:03
Nevyhodí to ani report. Ostatně, proč by prvek pole nemohl být prázdný...

Já ti rozumím a nehádám se. Vztahovalo se to k tomu konkrétnímu příkladu, kde samozřejmě dostanu pole o čtyřech prvcích, kdy v cyklu for (protože $c = 1, aby bylo možno pro výčet použít $c++) dostávám jako první hodnotu 1 a nikoliv 0 a právě proměnná $c je použita jako index pro výpis prvku pole. Jiná možnost by byla od $c odečítat 1, prašť jako uhoď.

Klidně může do session ukládat rovnou pole, myslím, že už si s tím nějak poradí :)
Tak nemáš pravděpodobně tak přísný error_report výstup. Zkus to místo v sessionu hodit jen do proměnné a zkusit třeba na:
Kód: [Vybrat]
http://phpfiddle.org/Něco by ti to mělo vyhodit, protože saháš mimo velikost pole, co sis definoval.
Tak může tam být nultý prázdný prvek, ale je to zbytečná věc navíc, a každá taková věc sebou nese nějakou logiku v kódu navíc. Tudíž to pak zvětšuje kód, zbytečně zatěžuješ vývojáře přemýšlet nad věcmi, který tam být nemusí. Čím je kód jasnější a přímější, tím líp.

Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 13. Březen 2017 - 23:26:08
jo.. když nad tím přemýšlím, využití array bude asi jednodušší, protože pokud to dobře chápu, můžu si udělat tři pole, a dávat si tam název, cenu a hmotnost zvlášť. a vyhnu se tím použití separátorů a explode. přeci jen, i s tím mailovým formulářem jsem si hrál celé odpoledne, takže každé zjednodušení pomůže.. ^^;
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 14. Březen 2017 - 00:31:14
... pokud to dobře chápu, můžu si udělat tři pole, a dávat si tam název, cenu a hmotnost zvlášť.
Jj můžeš. Nejdříve, ale koukni na něco o vícerozměrných polích. Jak se v tom zorientuješ, tak tě pole už asi ničím nepřekvapí.
Názorné příklady jsou vždy nejlepší:
Kód: [Vybrat]
http://www.pehapko.cz/zakladni-kurz/9-pole

http://webcheatsheet.com/php/multidimensional_arrays.php
https://www.eduonix.com/blog/web-programming-tutorials/multi-dimensional-arrays-in-php/
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 15. Březen 2017 - 11:53:20
jak jsem tu psal o mailovém formuláři, tak mi nějak přestal fungovat. nevím, jestli jsem tam něco omylem přepsal, nebo co se stalo. každopádně jsem ho už nerozchodil, takže jsem začal znovu. teď mám opět verzi, která funguje, tak se jdu jen zeptat, jestli tam není něco vyloženě prasáckého, nebo jestli to takhle můžu nechat..

Kód: [Vybrat]
<div class="form">

<?php 
    $to 
"email@example.com"// prijemce
    
$from $_POST['email']; // odesilatel
    
$jmeno $_POST['jmeno'];
    
$adresa $_POST['adresa'];
    
$mem_no $_POST['mem_no'];
    
$spam $_POST['spam'];
    
$subject "Formulář Název webu";
    
$subject2 "Kopie Vaší zprávy";
    
$message $jmeno "\n\n" $adresa "\n\n" $mem_no "\n\n" $_POST['zprava'];
    
$message2 "Zde je kopie Vaší zprávy odeslané z formuláře na http://www.domena.cz/" "\n\n" $jmeno "\n\n" $adresa "\n\n" $mem_no "\n\n" $_POST['zprava'];

    
$headers "Od:" $from;
    
$headers2 "Od:" $to;

if(isset(
$_POST['submit']))

{
if($spam=="47")
{
    
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // kopie odesilateli
echo "<div class=\"form_success\">Email odeslán, brzy Vás kontaktujeme.</div>";
}
else
{
echo "<div class=\"form_success\">Chyba! Email nebyl odeslán.</div>";


}
?>



<div class="par_form">

<form action="" method="post">
<div class="form_name">Jméno a příjmení: <input type="text" name="jmeno" size="20"></div>
<div class="form_email">Email: <input type="text" name="email" value="@" size="20"></div>
<div class="form_mem_no">Členské číslo: <input type="text" name="mem_no" size="20"></div>
<div class="form_address">Adresa: <input type="text" name="adresa" size="60"></div>
<div class="form_message">Zpráva: <input type="text" name="zprava" size="60"></div>
<div class="form_spam">Počet prefektur Japonska: <input type="text" name="spam" size="2"></div>
<div class="form_button"><input type="submit" name="submit" value="Odeslat"></div>
</form>

</div></div>
Název: Re:Pomoc s webovými stránkami
Přispěvatel: 8B3CE273 15. Březen 2017 - 14:25:50
tohle neděle, takový formuláře mají rádi spamboti a pak přes to budou rozesílat bordel. V práci to řešíme každou chvíli. Přidej tam alespoň nějakej dynamickou captchu.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 15. Březen 2017 - 15:02:28
Hlavička by měla vypadat takto:

$headers .= 'From: '.$from. "\r\n";

Chybí mi tam MIME type a kódování:

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-Type: text/html; charset=utf-8' . "\r\n"; // Pokud kóduješ v UTF-8 a chceš mít html formát mailu, což ti umožní použít některé tagy (ale pozor, maily snesou jenom něco)

Určitě by to chtělo validovat alespoň emailovou adresu, nabízí se:


filter_var($from, FILTER_VALIDATE_EMAIL)

Takže podmínka pro vykonání fce mail by byla


if($spam=="47" and filter_var($from, FILTER_VALIDATE_EMAIL))

Pak by to chtělo sdělit, proč vlastně došlo k chybě v odeslání, takže raději:

if(isset($_POST['submit']))

   {
   if($spam=="47" and filter_var($from, FILTER_VALIDATE_EMAIL))
      {
       mail($to,$subject,$message,$headers);
      mail($from,$subject2,$message2,$headers2); // kopie odesilateli
      echo "<div class=\"form_success\">Email odeslán, brzy Vás kontaktujeme.</div>";
      }
      elseif ($spam != "47") echo "<div class=\"form_success\">Chyba! Špatný antispam.</div>";
      else echo "<div class=\"form_success\">Chyba! Špatná mailová adresa.</div>";

   }

Krom toho by bylo dobré ověřovat alespoň, zda některá (nutná) pole formuláře nejsou odesílaná prázdná. Je možná i kontrola řetězců, ale to už bude chtít regulární výrazy a ty si nech na později.

Jako zprávu raději textareu než input.

Velice mrzuté je, že při neúspěšném odeslání se vymaže celý formulář, do value inputů bys tedy měl načítat odesílané informace, aby ve formuláři zůstaly pro opravu chybně zadaných údajů, při úspěšném odeslání je vyresetovat.

Na Captchu se vykašli, časem si nech třeba generovat náhodné číslo, které ať uživatel přepíše slovem...

Ještě bych se zamyslel, pokud podstatnou část bude tvořit PHP, zda kód nepsat přímo v PHP (index.php místo index.html) a veškeré textové výstupy neukládat do proměnných a ty pak společně s html kostrou stránky nevypisovat v jediném echo. Umožnilo by to lépe formátovat výstupy.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 15. Březen 2017 - 21:13:59
hmm.. ok.. ^_^ zkusím to tedy nějak "vylepšit".. děkuji za rady..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 15. Březen 2017 - 21:50:48
...
Nezapomínat na fóru vkládat kusy kódů do code boxu!

...tak se jdu jen zeptat, jestli tam není něco vyloženě prasáckého, nebo jestli to takhle můžu nechat..

Co je prasácký je trochu relativní. Je to závislý na velikosti aplikace a úrovni programátora.

Ale rozhodně jsi udělal jednu velkou zásadní chybu. Věříš uživateli(návštěvníkovi stránky), a to je ta největší chyba kterou můžeš udělat! Tomu rozhodně nikdy nevěř a všechen vstup od něj escapuj. (třeba s pomocí htmlspecialchars)

Zpět k samotnému kódu.

Jak psal Skogen:

A rovněž souhlasím i s postem 8B3CE273. Asi by to chtělo nějakou dynamickou captchu.

Mé výtky:

A ještě drobná výtka na tu tvou podmínku:
Kód: [Vybrat]
if($spam == "47")

Nikdy tam necpi nějakou magickou frázi, číslo atd, které je samo osobě nic neříkající. Když tak si to nervy do slušně pojmenované proměnné, aby až to po čase budeš číst si pochopil, co jsi tím vlastně myslel:

Kód: [Vybrat]
$correctSpamAnswer = "47";

($spam == $correctSpamAnswer)

A pak taky není na škodu hodit popisek položky k vyplnění do label-u, který na něj bude odkazovat, když na něj někdo klikne.

To co jsem vytkl já (až na chybějící vylidaci) by dosazený asi vypadalo takhle:

Kód: [Vybrat]
<?php 
    $FLASH_MESSAGE 
'FLASH_MESSAGE'// melo by to byt jako konstanta, ale takhle to taky pujde. Kdybys nahodou chtel pak prepsat nazev, 
//tak to nemusis delat na 3 misech, ale jen zde. Takze tohle nicim nepresisovat. :-)
    
$correctSpamAnswer "47";

    
$to "email@example.com"// prijemce
    
$from = isset($_POST['email']) ? htmlspecialchars($_POST['email']) : ""// odesilatel
    
$jmeno = isset($_POST['jmeno']) ? htmlspecialchars($_POST['jmeno']) : ""
    
// Zapis je v prekladu tohle: if(isset($_POST['jmeno'])) {$jmeno = htmlspecialchars($_POST['jmeno']); } else { $jmeno = ""}
    // rika se tomu ternarni operator, a pouziva se jen na banalni podminky. Zde to je pro kratsi zapis.
    
$adresa = isset($_POST['adresa']) ? htmlspecialchars($_POST['adresa']) : ""
    
$mem_no = isset($_POST['mem_no']) ? htmlspecialchars($_POST['mem_no']) : "";
    
$spam $_POST['spam'];
    
$subject "Formulář Název webu";
    
$subject2 "Kopie Vaší zprávy";
    
$zprava = isset($_POST['zprava']) ? htmlspecialchars($_POST['zprava']) : "";
    
    
$message $jmeno "\n\n" $adresa "\n\n" $mem_no "\n\n" $zprava;
    
$message2 "Zde je kopie Vaší zprávy odeslané z formuláře na http://www.domena.cz/" "\n\n" $jmeno "\n\n" $adresa "\n\n" $mem_no "\n\n" $zprava;

    
$headers "FROM:" $from;
    
$headers2 "FROM:" $to;
    
$resultMessage '';
    
    if(isset(
$_SESSION[$FLASH_MESSAGE])) {
        
$resultMessage $_SESSION[$FLASH_MESSAGE];
        unset(
$_SESSION[$FLASH_MESSAGE]); // Odstranime flash zpravu ze session, protoze uz svuj ucel splinala.
    


  if(isset(
$_POST['submit']))   
{
    
if($spam == $correctSpamAnswer)
    
{        
          
$sendMailStatusSeller =  mail($to,$subject,$message,$headers);
         
          if (
$sendMailStatusSeller) { // Je dulezity aby vedel ze to dosli minimalne tobe a budes se tomu venovat
              
mail($from,$subject2,$message2,$headers2); // Kopii odesilatele posunu sem do dalsiho kroku, kdyby se to neodeslalo jen tobe. Pak mi byl zmatenej co to pise web, kdyz jemu prisla informace v poradku.
              // Nacpeme si odpoved do sessiony a refreshneme stranky, aby nikdo nemohl formular odeslat vicekrat
              
$_SESSION[$FLASH_MESSAGE] = "Email odeslán, brzy Vás kontaktujeme";
              
header('Location: http://www.example.com/');
              exit;
          } else {
              
$resultMessage "Chyba při odeslání! Zkuste to prosím znovu nebo později.";  
          }    

    
} else {
              
$resultMessage "Špatně vyplněná Captcha";         
  
  } 
}
  
  if(!empty(
$resultMessage)) {
      echo 
'<div class="form_success">' $resultMessage '</div>';
  }
?>


<div class="par_form">   
<form action="" method="post">
    <div class="form_name"> <label for="jmeno">Jméno a příjmení:</label> <input type="text" name="jmeno" value="<?php echo $jmeno?>" size="20"></div>
    <div class="form_email"><label for="email"></label>Email:</label> <input type="text" name="email" value="<?php echo $from?>" size="20"></div>
    <div class="form_mem_no"><label for="mem_no">Členské číslo:</label> <input type="text" name="mem_no" value="<?php echo $mem_no?>" size="20"></div>
    <div class="form_address"><label for="adresa">Adresa:</label> <input type="text" name="adresa" value="<?php echo $adresa?>" size="60"></div>
    <div class="form_message"><label for="zprava">Zpráva:</label> <input type="text" name="zprava" value="<?php echo $zprava?>" size="60"></div>
    <div class="form_spam"><label for="spam">Počet prefektur Japonska:</label> <input type="text" name="spam" size="2"></div>
    <div class="form_button"><input type="submit" name="submit" value="Odeslat"></div>
</form>

Nezkoušel jsem to, a sepsal v rychlosti, ale snad to žádný error nehodí. A snad to trochu pomůže. Snažil jsem se to napsat tak, abys nemusel vstřebat moc nových věcí. ;-) Takže nějaké rozhození do  objektů a pod. jsem naprosto vypustil.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 15. Březen 2017 - 22:31:08
díky za rady, pokusím se s tím něco dělat.. každopádně tady aspoň vidíte, že tomu fakt nerozumím.. ^^;

vím že tam je dost problémů, mj ta chybějící validace zadaných údajů.. ale v podstatě mi stačí, když mi přijde funkční emailová adresa, a v případě nějakých dalších chyb se můžu zeptat, o co šlo..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 16. Březen 2017 - 04:55:41
Faraon si s tím dal práci a má ve všem pravdu, ale je to maximalista (bez urážky, Farao  ;) ), ty si pro své potřeby vystačíš i s tím, co bude z jeho pohledu dejme tomu za 3 mínus.  Když to bude za 2, uspokojíš menší zákazníky a za 1 budeš vyhrávat konkurzy   ;D

Mám jen jednu poznámku, že když to uděláš přesně takhle, dostane uživatel v případě neodeslání mailu zpátky do formuláře speciální znaky převedené na entity a bude na to koukat jako jelen, takže do formuláře bych vracel čistý POST neošetřený htmlspecialchars.

Většinu potřebného najdeš tady: https://www.jakpsatweb.cz/ , zejména  v diskuzi, a tady: http://jecas.cz/ . Jsou to weby specializované na tuto problematiku a pomocí hledání (nemají rádi, když se na fóru hned ptáš) vždy najdeš něco, od čeho se odrazit, protože skoro všechno už se někdy řešilo.

Faraonův kód použij a pak si zkus bokem postupně rozvinout ten svůj vlastní, s tím, že budeš postupně funkcionality přidávat.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 16. Březen 2017 - 06:38:41
..a pak si zkus bokem postupně rozvinout ten svůj vlastní..
nj.. já ho vždycky zkouším nějak rozvíjet, až to celé přestane fungovat.. ^_^; (vsadil bych se, že jsem tam předtím někde smazal závorku)

jako přemýšlel jsem o tom spamu.. nevím, jak moc jsou ti spamboti vlastně dobří.. jestli to, co tam je teď, bez problému překonají.. snadno by tam šlo dát třeba den z aktuálního data, takže by se odpověď každý den sama měnila.. jen tedy nevím, jaký by to mělo efekt.. pak ta validace mailu je důležitá.. plus to zapsání hodnot do formuláře při chybě odeslání.. (že po dvojkliku do políčka vyjede seznam předtím zadaných hodnot, to je asi featura konkrétního prohlížeče, předpokládám..)


Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 16. Březen 2017 - 11:25:00
Předpokládám, že to ladíš přímo na serveru. Nejdřív tedy otestuj funkčnost skriptu bez fcí mail, postačí, když se ti bude vypisovat hláška o úspěšném odeslání. Nebudeš tak zatěžovat mailserver a čekat na maily ve schránce. U Faraonova skriptu bys musel dočasně odstranit konstrukci, která ověřuje odeslání. Měň skript po krocích a sleduj, zda dělá, co má. Fci mail samotnou otestuj až nakonec.

Určitě hlavičku FROM uprav i s tím
Kód: [Vybrat]
". \r\n"; na konci. I když to vypadá divně, je to podle specifikace a některé mailservery jsou na to háklivé.

Někteří spamboti už umí přečíst i captchu, takže je mnohdy tak zprzněná, že už ji pořádně nepřečte ani lidský uživatel, proto captchu nemám rád. S tím dnem to není špatné, problém by mohl nastat, pokud by uživatel vepsal datum vteřinu a dříve před půlnocí a odeslal formulář vteřinu a déle po půlnoci. Pak by shoda nenastala a asi by ho to zmátlo.

Něco je popsáno zde: http://jecas.cz/spam

Když se důsledně validuje více odesílaných políček formuláře, třeba jméno, ID, ale lze i tu adresu, nemusí být antispam ani potřeba. Boti se v naprosté většině případů snaží nacpat do inputů webové a mailové adresy plus nějaké fráze a ty dobrou validací neprojdou.

Jo, našeptávání dříve zadaných hodnot do inputů je dílo cache prohlížeče, když mu to uživatel umožní, t.j. nezakáže a nevymaže. Ale to je něco jiného, než je potřeba. Tady je třeba jen to, aby když odeslání skončí neúspěchem, se do value inputu přeneslo, co z něj bylo naposledy odesláno. A to je v proměnné $_POST['nazev-inputu']. Uživatel si opraví, co potřebuje a odešle to znova, protože políčko odesílá vždy svůj obsah (nyní upravený) a ten ty přes POST překlápíš do value. Když to skončí úspěchem, header("location: adresastranky.php") formulář zresetuje a všechny proměnné se zapomenou, respektive se načtou výchozí hodnoty. Políčka tedy budou prázdná (krom výchozího zavináče v poli pro mail) a nedojde k opětovnému odeslání, ani když uživatel refreshne stránku. Tvůj skript si i po odeslání hodnoty pamatuje, a kdyby uživatel znovunačetl stránku, odešel by mail podruhé atd...

Jinak bych fakt doporučoval začlenit html kód přímo do php souboru, pak bys pouze escapoval uvozovky (případně apostrofy) a mohl do html vkládat přímo proměnné.

Konec Faraonova skriptu by tedy vypadal takto:

Kód: [Vybrat]
...

if(!empty($resultMessage)) {
      echo '<div class="form_success">' . $resultMessage . '</div>';
  }


echo "
<!-- Tady by byl DOCTYPE -->

<head>
<!-- html hlavička se vším, co do ní patří -->
</head>

<body>

<!-- Nadpis, další text, atd... -->

<div class=\"par_form\">   
<form action=\"\" method=\"post\">
    <div class=\"form_name\"> <label for=\"jmeno\">Jméno a příjmení:</label> <input type=\"text\" name=\"jmeno\" value=\"".$jmeno."\" size=\"20\"></div>
    <div class=\"form_email\"><label for=\"email\"></label>Email:</label> <input type=\"text\" name=\"email\" value=\"".$from."\" size=\"20\"></div>
    <div class=\"form_mem_no\"><label for=\"mem_no\">Členské číslo:</label> <input type=\"text\" name=\"mem_no\" value=\"".$mem_no."\" size=\"20\"></div>
    <div class=\"form_address\"><label for=\"adresa\">Adresa:</label> <input type=\"text\" name=\"adresa\" value=\"".$adresa."\" size=\"60\"></div>
    <div class=\"form_message\"><label for=\"zprava\">Zpráva:</label> <input type=\"text\" name=\"zprava\" value=\"".$zprava."\" size=\"60\"></div>
    <div class=\"form_spam\"><label for=\"spam\">Počet prefektur Japonska:</label> <input type=\"text\" name=\"spam\" size=\"2\"></div>
    <div class=\"form_button\"><input type=\"submit\" name=\"submit\" value=\"Odeslat\"></div>
</form>


<!-- Patička nebo bůhvícoještě -->

</body>
";

?>

... a samozřejmě by to mělo příponu .php místo .html. Veškerá echa by bylo možné nahradit proměnnými a proměnné pak vypisovat, kde by bylo třeba takto:

Kód: [Vybrat]
echo "
Nějaký nekonečně dlouhý text, který má sto dvacet pět a půl slova ".$tadyVypisuPromennou." a pokaračuju dál textem, abych ".$vypsalDruhou.$aTreti.$aCtvrtou." proměnnou v jediném echu, což je hospodárnější...
";
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 16. Březen 2017 - 13:08:16
Předpokládám, že to ladíš přímo na serveru. Nejdřív tedy otestuj funkčnost skriptu bez fcí mail, postačí, když se ti bude vypisovat hláška o úspěšném odeslání. Nebudeš tak zatěžovat mailserver a čekat na maily ve schránce..
předpokládáš správně.. ^_^

každopádně jsem si s tím zkoušel nějak hrát, a prostě se v tom neorientuju, takže jsem zatím nějak došel k téhle fungující kombinaci:
(mělo by to validovat email a kontrolovat spam, a případně upozornit na nevyplněné jméno a zprávu. bez adresy a čísla se obejdu. takže ještě dodělat hlavičku mailu, ale to zkusím zítra (předpokládám, že proto mi gmail píše, že ten mail nemusel odeslat uvedený odesilatel) a pokud vyjde tohle, tak zkusím udělat něco s tím uchováním hodnot v políčkách)

Kód: [Vybrat]
<?php 
    $correctSpamAnswer 
"47";
    
$to "email@example.com"// prijemce
    
$from = isset($_POST['email']) ? htmlspecialchars($_POST['email']) : ""// odesilatel
    
$jmeno = isset($_POST['jmeno']) ? htmlspecialchars($_POST['jmeno']) : ""
    
$adresa = isset($_POST['adresa']) ? htmlspecialchars($_POST['adresa']) : ""
    
$mem_no = isset($_POST['mem_no']) ? htmlspecialchars($_POST['mem_no']) : "";
    
$spam $_POST['spam'];
    
$subject "Formulář Název webu";
    
$subject2 "Kopie Vaší zprávy";
    
$message $jmeno "\n\n" $adresa "\n\n" $mem_no "\n\n" $_POST['zprava'];
    
$message2 "Zde je kopie Vaší zprávy odeslané z formuláře na http://www.domena.cz/" "\n\n" $jmeno "\n\n" $adresa "\n\n" $mem_no "\n\n" $_POST['zprava'];
    
$zprava = isset($_POST['zprava']) ? htmlspecialchars($_POST['zprava']) : "";
    
$headers "Od:" $from;
    
$headers2 "Od:" $to;
    
$resultMessage '';

if(isset(
$_POST['submit']))

if((
$spam == $correctSpamAnswer) and filter_var($fromFILTER_VALIDATE_EMAIL))
{
if($jmeno!="" and $zprava!="")
{
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // kopie odesilateli
$resultMessage "Email odeslán, brzy Vás kontaktujeme";
}
else
{
$resultMessage "Chyba! Nevyplněné jméno nebo zpráva."
}
}
else
{
$resultMessage "Chyba! Špatně vyplněná Captcha nebo email."
}

if(!empty(
$resultMessage)) 
{
echo '<div class="form_success">' $resultMessage '</div>';

?>

vůbec totiž netuším, co se tam dělo, ale psalo mi to nějakou chybu na řádku, kde už byl html kód toho formuláře, tak jsem postupně zkoušel zakomentovávat různé části, ale nepřišel jsem na to.. tak jsem prozatím z vašich rad sestavil ten kód výše, aby to bylo aspoň trochu vylepšené..

taky header() momentálně asi nemůžu použít k té ochraně proti dvojitému odeslání, protože mi to částečně rozbije web.. (nenačte se všechno, co by mělo) možná to bude chtít opravdu přepsat na normální linky, a neměnit obsah webu v závislosti na obsahu session..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 16. Březen 2017 - 20:02:21
Chce to všímat si těch chybových hlášek a když tak je překopírovat, bez toho, anebo bez uvedení kódu, nelze říct, co je špatně, pouze tipovat.

Faraonův skript funguje. Když ho upravím tak, jak bych ho použil já, tedy přímo s html kódem v souboru s příponou PHP, bude to takto:

Kód: [Vybrat]
<?php 
session_start
();
    
$FLASH_MESSAGE 'FLASH_MESSAGE'// melo by to byt jako konstanta, ale takhle to taky pujde. Kdybys nahodou chtel pak prepsat nazev, 
//tak to nemusis delat na 3 misech, ale jen zde. Takze tohle nicim nepresisovat. :-)
    
$correctSpamAnswer "47";

    
$to "email@example.com"// prijemce
    
$from = isset($_POST['email']) ? htmlspecialchars(trim($_POST['email'])) : ""// odesilatel
    
$jmeno = isset($_POST['jmeno']) ? htmlspecialchars(trim($_POST['jmeno'])) : ""
    
// Zapis je v prekladu tohle: if(isset($_POST['jmeno'])) {$jmeno = htmlspecialchars($_POST['jmeno']); } else { $jmeno = ""}
    // rika se tomu ternarni operator, a pouziva se jen na banalni podminky. Zde to je pro kratsi zapis.
    
$adresa = isset($_POST['adresa']) ? htmlspecialchars(trim($_POST['adresa'])) : ""
    
$mem_no = isset($_POST['mem_no']) ? htmlspecialchars(trim($_POST['mem_no'])) : "";
    
$spam $_POST['spam'];
    
$subject "Formulář Název webu";
    
$subject2 "Kopie Vaší zprávy";
    
$zprava = isset($_POST['zprava']) ? htmlspecialchars(trim($_POST['zprava'])) : "";
    
    
$message $jmeno "<br/><br/>" $adresa "<br/><br/>" $mem_no "<br/><br/>" $zprava;
    
$message2 "Zde je kopie Vaší zprávy odeslané z formuláře na http://www.domena.cz/" "<br/><br/>" $jmeno "<br/><br/>" $adresa "<br/><br/>" $mem_no "<br/><br/>" $zprava;

$headers 'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-Type: text/html; charset=utf-8' "\r\n";
$headers .= 'From: '.$from"\r\n";
$headers2 'MIME-Version: 1.0' "\r\n";
$headers2 .= 'Content-Type: text/html; charset=utf-8' "\r\n";
$headers2 .= 'From: '.$to"\r\n";

$reportSend "";
$resultMessage "";
$report "";
    
    if(isset(
$_SESSION[$FLASH_MESSAGE])) {
        
$reportSuccess $_SESSION[$FLASH_MESSAGE];
        unset(
$_SESSION[$FLASH_MESSAGE]); // Odstranime flash zpravu ze session, protoze uz svuj ucel splinala.
    


  if(isset(
$_POST['submit']))   
{
    
if($spam == $correctSpamAnswer and $jmeno != "" and $zprava != "" and filter_var($fromFILTER_VALIDATE_EMAIL))
    
{        
          
$sendMailStatusSeller =  mail($to,$subject,$message,$headers);
         
          if (
$sendMailStatusSeller) { // Je dulezity aby vedel ze to dosli minimalne tobe a budes se tomu venovat
              
mail($from,$subject2,$message2,$headers2); // Kopii odesilatele posunu sem do dalsiho kroku, kdyby se to neodeslalo jen tobe. Pak mi byl zmatenej co to pise web, kdyz jemu prisla informace v poradku.
              // Nacpeme si odpoved do sessiony a refreshneme stranky, aby nikdo nemohl formular odeslat vicekrat
              
$_SESSION[$FLASH_MESSAGE] = "<li>Email odeslán, brzy Vás kontaktujeme</li>";
              
header('Location: http://www.example.com/');
              exit;
          } else {
              
$reportSend "<li>Chyba při odeslání! Zkuste to prosím znovu nebo později.</li>";  
          }    

    
}
 if ($jmeno == ""$reportName "<li>Jméno musí být vyplněno</li>";
 else $reportName "";
 if ($zprava == ""$reportText "<li>Zpráva musí být vyplněna</li>";
 else $reportText "";
 if (!filter_var($fromFILTER_VALIDATE_EMAIL)) $reportEmail "<li>Neplatná emailová adresa</li>";
 else $reportEmail "";
         if (
$spam != $correctSpamAnswer$reportSpam "<li>Špatně vyplněný antispam</li>"
 else $reportSpam ""
}

$resultMessage $reportSuccess.$reportSend.$reportName.$reportEmail.$reportText.$reportSpam;
  
  if(!empty(
$resultMessage)) {
      
$report '<ul class="form_success">' $resultMessage '</ul>';
  }
  
  
echo 
"
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">


<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />
<title></title>
<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\" />
<meta name=\"description\" content=\"\" />
<meta name=\"keywords\" content=\"\" />
<link rel=\"shortcut icon\" href=\"favicon.ico\" />
</head>


<body>
<h2>Webový formulář</h2>

<div class=\"par_form\">   
<form action=\"\" method=\"post\">
    <div class=\"form_name\"> <label for=\"jmeno\">Jméno a příjmení:</label> <input type=\"text\" name=\"jmeno\" value=\""
.$jmeno."\" size=\"20\"></div>
    <div class=\"form_email\"><label for=\"email\"></label>Email:</label> <input type=\"text\" name=\"email\" value=\""
.$from."\" size=\"20\"></div>
    <div class=\"form_mem_no\"><label for=\"mem_no\">Členské číslo:</label> <input type=\"text\" name=\"mem_no\" value=\""
.$mem_no."\" size=\"20\"></div>
    <div class=\"form_address\"><label for=\"adresa\">Adresa:</label> <input type=\"text\" name=\"adresa\" value=\""
.$adresa."\" size=\"60\"></div>
    <div class=\"form_message\"><label for=\"zprava\">Zpráva:</label> <textarea name=\"zprava\" rows=\"5\" cols=\"60\" >"
.$zprava."</textarea></div>
    <div class=\"form_spam\"><label for=\"spam\">Počet prefektur Japonska:</label> <input type=\"text\" name=\"spam\" size=\"2\"></div>
    <div class=\"form_button\"><input type=\"submit\" name=\"submit\" value=\"Odeslat\"></div>
</form>

"
.$report."

</body>
</html>
"
;
  
  
?>


Je to kompletně celý soubor, který se bude nějak jmenovat, třeba kontakt.php. Doplněno o nějakou tu validaci a výpis seznamu chybně zadaných údajů.

Pozor na triviální chyby při použití šablony:


Na začátku skriptu jsem startoval session, nevím, jak to máš nastaveno, jestli ti to vyplivne hlášku, že session už nastartovaná je, session_start() smaž.

EDIT: Zapomněl jsem změnit odřádkování ve zprávě z \n na <br/>, jedná se o html formát - opraveno.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 16. Březen 2017 - 20:45:50
Jinak bych fakt doporučoval začlenit html kód přímo do php souboru, pak bys pouze escapoval uvozovky (případně apostrofy) a mohl do html vkládat přímo proměnné.
Jinak jak to má ničemu nevadí. Naopak je lepší to jak to má teď. Mrkni třeba jak se generují stránky se šablonou Twig, nebo podobnými.

Mimo to, tolik řádků do echa necpi. Sice to jde, ale je to hůř čitelné, a nic moc se s tím nepracuje. Když už jsi vážně donucen, tak spíš zkus použít heredoc.

... do formuláře bych vracel čistý POST neošetřený htmlspecialchars.
To je pravda.

užít k té ochraně proti dvojitému odeslání, protože mi to částečně rozbije web.. (nenačte se všechno, co by mělo) možná to bude chtít opravdu přepsat na normální linky, a neměnit obsah webu v závislosti na obsahu session...
To je ta tvá session magie na generovaní URL. Tady krásně vidíš, jeden z příkladů proč bys to tam cpát neměl. ;-)

A v podmínce ti zmizeli složený závorky:
Kód: [Vybrat]
if(isset($_POST['submit']))
Kód: [Vybrat]

if ($jmeno == "") $reportName = "<li>Jméno musí být vyplněno</li>";
else $reportName = "";
if ($zprava == "") $reportText = "<li>Zpráva musí být vyplněna</li>";
else $reportText = "";
if (!filter_var($from, FILTER_VALIDATE_EMAIL)) $reportEmail = "<li>Neplatná emailová adresa</li>";
else $reportEmail = "";

$resultMessage = $reportSuccess.$reportSend.$reportName.$reportEmail.$reportText.$reportSpam;
Tenhle zápis If podmínek bez složených závorek bych nedoporučoval. Je dobrá praxe vždy závorkovat. Sice ti tenhle zápis ušetří od oka 2-3 řádky, ale je dost často zdrojem chyb, když pak někdo za to chce něco dopsat navíc, tak tuhle věc dost lidí přehlídne, a pokud tam nemáš nějakou závislost co by hodilo chybu, tak s tím můžeš dost dlouho fungovat, aniž bys o problému věděl.

A tu resultMessage řetěz hned, jak můžeš. Zde není důvod proč s tím otálet až na konec. Kód to zkrátí a hlavně neriskuješ, že bys nějakou proměnou na závěr zapomněl přicucnout.
Kód: [Vybrat]

if ($jmeno == "") {
                    $resultMessage.= "<li>Jméno musí být vyplněno</li>";
                 }

if ($zprava == "") {
                    $resultMessage.= "<li>Zpráva musí být vyplněna</li>";
                 }

if (!filter_var($from, FILTER_VALIDATE_EMAIL)) {
                    $resultMessage.= "<li>Neplatná emailová adresa</li>";
                 }
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 16. Březen 2017 - 21:30:15
Chce to všímat si těch chybových hlášek a když tak je překopírovat, bez toho, anebo bez uvedení kódu, nelze říct, co je špatně, pouze tipovat.
jj, akorát mi to došlo až po vyřešení problému.. ^^;

To je ta tvá session magie na generovaní URL. Tady krásně vidíš, jeden z příkladů proč bys to tam cpát neměl. ;-)
nj.. header() používám při každám kliknutí na odkaz v menu - nastavím hodnotu session, refreshnu, a podle hodnoty session pomocí include poskládám aktuální stránku.. takže z toho mi vychází, že nemůžu jen tak použít dvě session..

A v podmínce ti zmizeli složený závorky:
díky, doplněno.. ^^;
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 16. Březen 2017 - 21:45:37
nj.. header() používám při každám kliknutí na odkaz v menu - nastavím hodnotu session, refreshnu, a podle hodnoty session pomocí include poskládám aktuální stránku.. takže z toho mi vychází, že nemůžu jen tak použít dvě session..

Každá session se nějak jmenuje, klidně mohou být dvě a víc... Spíš je to řešení sice kreativní, ale rozhodně neobvyklé a ovšem taky nepraktické. Proč by se měla stránka načítat dvakrát? Při kliknutí na odkaz přece můžeš získat adresu tohoto odkazu pomocí GET a nainkludovat rovnou to, co potřebuješ, bez nějaké zbytečné refreshe.

odkaz:

Kód: [Vybrat]
<a href="nekam.html?page=baf">Stránka baf</a>
inkludování:

Kód: [Vybrat]
include "cestaksouboru/".$_GET['page'].".txt"; // asi budeš načítat nějaký obsah někam do jediné šablony
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 16. Březen 2017 - 22:52:54
Spíš je to řešení sice kreativní, ale rozhodně neobvyklé a ovšem taky nepraktické. Proč by se měla stránka načítat dvakrát? Při kliknutí na odkaz přece můžeš získat adresu tohoto odkazu pomocí GET a nainkludovat rovnou to, co potřebuješ, bez nějaké zbytečné refreshe.
nevím.. pokud si dobře vzpomínám, tuhle konstrukci jsem někde našel před mnoha lety jako alternativu k iframe.. už si ani nepamatuju, proč jsem to tehdy potřeboval..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 16. Březen 2017 - 23:20:36
BTW, jak se vede v Japonsku? Máš nějaký blog :)?
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 16. Březen 2017 - 23:43:34
BTW, jak se vede v Japonsku? Máš nějaký blog :)?
napíšu raději do pm, ať tu nejsme ot..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 17. Březen 2017 - 13:18:46
tak další upgrade..

header totálně nechápu, zkoušel jsem ten tady z fóra, ale zrušil mi odřádkování. tak jsem něco  vygooglil, a teď to funguje. i když nevím proč..

zachování hodnot v políčkách taky asi není ideální, protože tam ty hodnoty samozřejmě zůstanou i po úspěšném odeslání, ale ok..

možná zkusit po úspěšném odeslání refreshnou.. ale teď tam je nějaká kolize, takže bych to zatím neřešil, ony tam ty hodnoty nevadí..

Citace
Warning: Cannot modify header information - headers already sent by (output started at --/data/www/--/index.php:16) in --/data/www/--/mail.php on line 35

Kód: [Vybrat]
<div class="form">

<?php 
    $correctSpamAnswer 
"47";
    
$to "email@example.com"// prijemce
    
$from = isset($_POST['email']) ? htmlspecialchars($_POST['email']) : ""// odesilatel
    
$jmeno = isset($_POST['jmeno']) ? htmlspecialchars($_POST['jmeno']) : ""
    
$adresa = isset($_POST['adresa']) ? htmlspecialchars($_POST['adresa']) : ""
    
$mem_no = isset($_POST['mem_no']) ? htmlspecialchars($_POST['mem_no']) : "";
    
$spam $_POST['spam'];
    
$subject "Formulář Název webu";
    
$subject2 "Kopie Vaší zprávy";
    
$message "Jméno: " $jmeno "\n\n" "Adresa: " $adresa "\n\n" "Členské číslo: " $mem_no "\n\n" "Zpráva: " $_POST['zprava'];
    
$message2 "Zde je kopie Vaší zprávy, odeslané z formuláře na http://www.domena.cz/" "\n\n" "Jméno: " $jmeno "\n\n" "Adresa: " $adresa "\n\n" "Členské číslo: " $mem_no "\n\n" "Zpráva: " $_POST['zprava'];
    
$zprava = isset($_POST['zprava']) ? htmlspecialchars($_POST['zprava']) : "";
    
$header "Od:" $from;
    
$header.= "MIME-Version: 1.0\r\n"
    
$header.= "Content-Type: text/plain; charset=utf-8\r\n"
    
$header.= "X-Priority: 1\r\n"
    
$header2 "Od:" $to;
    
$header2.= "MIME-Version: 1.0\r\n"
    
$header2.= "Content-Type: text/plain; charset=utf-8\r\n"
    
$header2.= "X-Priority: 1\r\n"
    
$resultMessage '';

if(isset(
$_POST['submit']))
{
if((
$spam == $correctSpamAnswer) and filter_var($fromFILTER_VALIDATE_EMAIL))
{
if($jmeno!="" and $zprava!="")
{
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // kopie odesilateli
$resultMessage "Email odeslán, brzy Vás kontaktujeme.";
}
else
{
$resultMessage "Chyba! Nevyplněné jméno nebo zpráva."
}
}
else
{
$resultMessage "Chyba! Špatně vyplněná Captcha nebo email."
}

if(!empty(
$resultMessage)) 
{
echo '<div class="form_success">' $resultMessage '</div>';


?>



<div class="par_form">

<form action="" method="post">
<div class="form_name">Jméno a příjmení: <input type="text" name="jmeno" value="<?php if (isset($_POST['jmeno'])){echo $_POST['jmeno']; }?>" size="20"></div>
<div class="form_email">Email: <input type="text" name="email" value="<?php if (isset($_POST['email'])){echo $_POST['email']; } else {echo "@"; }?>" size="20"></div>
<div class="form_mem_no">Členské číslo: <input type="text" name="mem_no" value="<?php if (isset($_POST['mem_no'])){echo $_POST['mem_no']; }?>" size="20"></div>
<div class="form_address">Adresa: <input type="text" name="adresa" value="<?php if (isset($_POST['adresa'])){echo $_POST['adresa']; }?>" size="60"></div>
<div class="form_message">Zpráva: <input type="text" name="zprava" value="<?php if (isset($_POST['zprava'])){echo $_POST['zprava']; }?>" size="60"></div>
<div class="form_spam">Počet prefektur Japonska: <input type="text" name="spam" size="2"></div>
<div class="form_button"><input type="submit" name="submit" value="Odeslat"></div>
</form>

</div></div>
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 17. Březen 2017 - 13:40:53
Ten header location se ti totiž vůbec nevykoná.

Zkus na začátek skriptu v index.php dát:

Kód: [Vybrat]
ob_start();
a na konec:

Kód: [Vybrat]
ob_end_flush();
Jiné řešení bez bufferingu by bylo formulář pomocí action odkázat na externí php skript s
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 17. Březen 2017 - 14:05:15
Zkus na začátek skriptu v index.php dát:
.
.
pořád stejné.. holt to musím přepsat na normální linky, pak to bude ok..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 17. Březen 2017 - 14:28:26
header totálně nechápu, zkoušel jsem ten tady z fóra, ale zrušil mi odřádkování. tak jsem něco vygooglil, a teď to funguje. i když nevím proč..

Tohle ti říká, jdi na stránku example.com(prostě redirect):
Kód: [Vybrat]

header('Location: http://www.example.com/');
Nic víc to nedělá.

Jako myslím si, že by ten redirect neměl ničemu vadit, ale fakt netuším jak vypadá ta magie kolem. Správně má stránky vypadat pro dané URL vždy stejně. Je jedno jestli jdeš na stránku přímo z adresní řádky prohlížeče nebo se k ní proklikáš na webu přes odkazy. Pokud by refresh nebyl žádoucí, a chtěl refreshnout jen určitý blok stránky, tak bys to musel udělat přes AJAX, ale to by ses musel zase seznámit s javascriptem a myslím, že by to na tebe v této chvíli bylo zbytečně složitý.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 17. Březen 2017 - 21:17:02
Jako myslím si, že by ten redirect neměl ničemu vadit, ale fakt netuším jak vypadá ta magie kolem.
jj, taky jsem myslel, že to bude ok.. já tam nikde v index.php tu funkci ani nemám..
píše to varování:
Kód: [Vybrat]
Warning: Cannot modify header information - headers already sent by (output started at /mnt/data/accounts/8/--/data/www/--/index.php:15) in /mnt/data/accounts/8/--/data/www/--/cnt/mail.php on line 35
přičemž na řídku 15 v index.php mi začíná php kód
Kód: [Vybrat]
14 <BODY>
15 <?php
a na řádku 35 v mail.php je právě
Kód: [Vybrat]
header('Location: http://www.example.com/');
pokud člověk klikne na odkaz, jde na "stránku" odkaz1.php, která pouze nastaví hodnotu session, a přes header() refreshne web..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 17. Březen 2017 - 23:27:46
jj, taky jsem myslel, že to bude ok.. já tam nikde v index.php tu funkci ani nemám..
...
Kód: [Vybrat]
14 <BODY>...
Já jsem blbec, teď mě to trklo. Vždyť ty vlastně ten PHP kód máš zanořený již v obsahu stránky. Problém je v tom, že před zavoláním header funkce nesmí jít nic na výstup, ale ty už tam předtím máš poslaný nějaký html kód. Musíš to posunout výš, než začneš vypisovat jakýkoliv html kód.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 17. Březen 2017 - 23:38:29
Já jsem blbec, teď mě to trklo. Vždyť ty vlastně ten PHP kód máš zanořený již v obsahu stránky. Problém je v tom, že před zavoláním header funkce nesmí jít nic na výstup, ale ty už tam předtím máš poslaný nějaký html kód. Musíš to posunout výš, než začneš vypisovat jakýkoliv html kód.
aha.. ok.. ^_^; po práci na to kouknu.. I když jak nad tím přemýšlím, asi to budu muset rozdělit na dvě části, kvůli tomu formuláři, který by se tak ocitl mimo body html kódu.. jsem zvědavý, co to udělá.. ^_^

podobnou srandu jsem si užil před těmi x lety, když jsem poprvé zkoušel dělat něco se session, a ukládal ten php soubor ve Windowsáckém notepadu.. ^_^ (ještě že existuje notepad++, který umožňuje uložit soubor v UTF-8 bez BOM..)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: Skogen 18. Březen 2017 - 19:54:34
...  I když jak nad tím přemýšlím, asi to budu muset rozdělit na dvě části, kvůli tomu formuláři, který by se tak ocitl mimo body html kódu.. jsem zvědavý, co to udělá ...

A proč to neuděláš tak, jak jsem doporučoval?
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 19. Březen 2017 - 00:35:18
A proč to neuděláš tak, jak jsem doporučoval?
začlenit html kód přímo do php souboru? nevím, přijde mi, že se v tom pak nevyznám, moje schopnost orientovat se v kódu je velmi omezená.. ^^;

každopádně, když tam místo header() dám
Kód: [Vybrat]
echo "<meta http-equiv='refresh' content='1'>";tak to funguje.. ^__^

vím, není to zrovna ideální, už jen proto, že zpráva o odeslání po refreshi samozřejmě zmizí (proto na hodnota "1", aby to tam aspoň chvíli viselo, ale zas ne moc dlouho) ale momentálně je to asi to nejlepší, na co se zmůžu.. zkoušel jsem dostat header() před všechny výstupy, ale někde jsem tam měl něco špatně, a nedařilo se mi to odstranit..
Kód: [Vybrat]
Parse error: syntax error, unexpected $end
vždycky na posledním řádku, což jsem si i vygooglil, že mi někde chybí nějaká závorka, nebo něco.. ale i tak, to prostě chce přepsat celé.. >_<
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 19. Březen 2017 - 11:45:29
každopádně, když tam místo header() dám
Kód: [Vybrat]
echo "<meta http-equiv='refresh' content='1'>";tak to funguje.. ^__^
Zavřu oči a budu dělat, že to nevidím. :-D Ale v podstatě je to totéž, jen html cestou. Ale hlavní je, že to dělá co chceš.
Jak jsi sám psal, ono by to asi chtělo nejspíš přepsat celé. Ale pokud je to něco malého a zatím nepředpokládáš, že by se to nějak dál rozvíjelo, tak by se s tím mohlo dát žít. ;-)

vím, není to zrovna ideální, už jen proto, že zpráva o odeslání po refreshi samozřejmě zmizí (proto na hodnota "1", aby to tam aspoň chvíli viselo, ale zas ne moc dlouho) ale momentálně je to asi to nejlepší, na co se zmůžu.. zkoušel jsem dostat header() před všechny výstupy, ale někde jsem tam měl něco špatně, a nedařilo se mi to odstranit..
Kód: [Vybrat]
Parse error: syntax error, unexpected $end
vždycky na posledním řádku, což jsem si i vygooglil, že mi někde chybí nějaká závorka, nebo něco.. ale i tak, to prostě chce přepsat celé.. >_<

Tak tahle hláška je taková... Mrkni na řádek co máš předtím $end. Bude tam chybět třeba středník za hodnotou, nebo ta závorka a pod blbosti.
A problém s tou pozitivní hláškou můžeš vyřešit třeba doplněním podmínky. Když dáš "smaž FLASH_MESSAGE" jen když formulář není zrovna odeslaný:

Kód: [Vybrat]
if(isset($_SESSION[$FLASH_MESSAGE]) && !isset($_POST['submit'])) {
        $reportSuccess = $_SESSION[$FLASH_MESSAGE];
        unset($_SESSION[$FLASH_MESSAGE]); // Odstranime flash zpravu ze session, protoze uz svuj ucel splinala.
    }

Jako co ti budu nalhávat, tady vidíš, jak ti začíná přibývat zbytečná logika navíc, když se to ohýbá, ale problém by to mělo vyřešit.
Když si to projdu: Při korektním odeslání formu se to uloží, pak se vykreslí stránka a udělá refresh. Vzhledem k tomu, že má form příznak, že je submit, tak se s FLASH zprávou nic neudělá, a po refreshi je furt FLASH_MESSAGE uložena, ale protože není už form poslaný, tak se smázne. Jo to by mělo projít. Takže klidně ten refresh můžeš hodit na nulu.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 19. Březen 2017 - 12:28:19
Ale pokud je to něco malého a zatím nepředpokládáš, že by se to nějak dál rozvíjelo, tak by se s tím mohlo dát žít. ;-)
jj, zatím nepředpokládám nějaký další rozvoj..

Tak tahle hláška je taková... Mrkni na řádek co máš předtím $end. Bude tam chybět třeba středník za hodnotou, nebo ta závorka a pod blbosti.
tak přímo na tom řádku je konec body a html, a předtím jen "přepínač" obsahu stránky.. jinak tam krom html hlavičky a session_start(); není nic..

Kód: [Vybrat]
.
.
if ($_SESSION['link'] == 4)
{
include('linky/link4.php');
include('obsah/4.php');
}
?>

</BODY></HTML>
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 19. Březen 2017 - 13:24:55
tak přímo na tom řádku je konec body a html, a předtím jen "přepínač" obsahu stránky.. jinak tam krom html hlavičky a session_start(); není nic..
Tenhle kus kódu vypadá v poho. By člověk musel vidět celý kód, takhle ti neřeknu.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 01. Červen 2017 - 03:19:04
objevil se mi zajímavý problém s tím mailovým formulářem, jak jsem tu řešil.. od toho března jsem na kód nesáhl, a najednou mi v hlavičce mailu přijde místo adresy odesílatele jen doména mého hostingu.. přitom předtím jsem poslal snad desítky zkušebních mailů, a vše ok.. nechápu, co se mohlo stát.. netušíte někdo? řešení je jednoduché - prostě hodím obsah email políčka i do těla mailu.. jen mě to mohlo napadnout dřív.. teď mám někoho, kdo chce přeposlat hodinky, a nemůžu mu odpovědět..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 22. Září 2017 - 16:14:52
máte někdo zkušenosti s fb (případně og) meta tagy? debugger mi hlásí, že chce fb:app_id.. to se fakt musím registrovat jako developer? někde jsem vygooglil, že místo toho stačí fb:admins, ale asi nestačí, nevím..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 22. Září 2017 - 20:44:05
máte někdo zkušenosti s fb (případně og) meta tagy? debugger mi hlásí, že chce fb:app_id.. to se fakt musím registrovat jako developer? někde jsem vygooglil, že místo toho stačí fb:admins, ale asi nestačí, nevím..

No osobně na frontendu nedělám, ale z toho co jsem teď vygooglil, jsou ty dvě věci trošku odlišné. Dle tohohle vyjádření, jejich support týmu, to nepůjde:
Kód: [Vybrat]
https://de-de.facebook.com/business/help/community/question/?id=1041828329232240Účet potřebuješ pro získání hodnoty fb:app_id . V položce fb:admins určuješ seznam lidí, kdo může daný příspěvek pak editovat.

Zkus se mrknout sem, tady je taky něco a v češtině:
Kód: [Vybrat]
https://igloonet.cz/blog/jak-vlozit-facebook-komentare-na-web/
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 23. Září 2017 - 00:38:50
Účet potřebuješ pro získání hodnoty fb:app_id . V položce fb:admins určuješ seznam lidí, kdo může daný příspěvek pak editovat.
hmm.. tak app_id mám, a jsem ve stádiu, kdy FB sharing debugger načte veškeré info (url, obrázek, popis), ale samotný FB sharer vůbec nic.. ^_^ tohle bude ještě zajímavé..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 23. Září 2017 - 01:32:20
hmm.. tak app_id mám, a jsem ve stádiu, kdy FB sharing debugger načte veškeré info (url, obrázek, popis), ale samotný FB sharer vůbec nic.. ^_^ tohle bude ještě zajímavé..
tak už asi vím.. ono to app_id nestačí jen v meta tagu, ale musí být i v tom scriptu na stránce.. takže konkrétní stránku už mi to načítá.. teď jen upravit url sdílecího tlačítka na univerzální, ale to už půjde.. ^_^
ale je to teda síla.. proč to dělat jednoduše, když to jde složitě.. (dřív si sharer.php načítal všechny parametry z url..)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 23. Září 2017 - 13:19:49
ale je to teda síla.. proč to dělat jednoduše, když to jde složitě.. (dřív si sharer.php načítal všechny parametry z url..)
Njn, teď je jen otázka jestli to mají blbě navržený nebo to je kvůli modularitě, která pro koncové uživatele spravující stránky nemusí být na první pohled zřejmá.
Ale tak vývojáři ve FB bych řekl, že jsou vcelku nad věcí. Jednou jsem bohužel musel řešit, proč na jednom webu přestal FB plugin fungovat, a pak jsem zjistil, že hold trošku upravili své rozhraní a to staré odstřihli. :-D Nevím jestli šel nějaký informační mail o změně a cestou se ztratil nebo na zkouší jak pevný nervy má správce webu, ale já žádný mail informující o změně nenašel. :-)

Ale tak hlavní je, že se ti to podařilo rozchodit.  ;)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 23. Září 2017 - 14:44:46
Njn, teď je jen otázka jestli to mají blbě navržený nebo to je kvůli modularitě, která pro koncové uživatele spravující stránky nemusí být na první pohled zřejmá.

Ale tak hlavní je, že se ti to podařilo rozchodit.  ;)
tak já věřím, že nějaký důvod k tomu měli.. ale jen tak pro porovnání:

twitter:
Kód: [Vybrat]
<div class="social-button">
<script src="https://platform.twitter.com/widgets.js" type="text/javascript"></script>
<a href="http://twitter.com/share" class="twitter-share-button"
data-text="Nákupy v japonsku - <?=$a['goods_name']?>"
data-url="http://eshop.nakupyvjaponsku.cz/index.php?category=<?=$category?>&zbozi=<?=$a['code']?>"
data-via="nvjp_cz"></a>
</div>

google+:
head:
Kód: [Vybrat]
<script src="https://apis.google.com/js/platform.js" async defer> {lang: 'cs'} </script>
body:
Kód: [Vybrat]
<div class="g-plus"
data-action="share"
data-href="http://eshop.nakupyvjaponsku.cz/index.php?category=<?=$category?>&amp;zbozi=<?=$a['code']?>">
</div>

facebook:
registrace jako developer, vytvoření app id..

head:
Kód: [Vybrat]
<meta property="og:url"           content="http://eshop.nakupyvjaponsku.cz/index.php?category=<?=$category?>&zbozi=<?=$a['code']?>" />
<meta property="og:type"          content="website" />
<meta property="og:title"         content="Nákupy v Japonsku - <?=$a['goods_name']?>" />
<meta property="og:description"   content="<?=$a['info']?>" />
<meta property="og:image"         content="http://eshop.nakupyvjaponsku.cz/pics/<?=$a['photo']?>.jpg" />
<meta property="og:image:alt" content="http://eshop.nakupyvjaponsku.cz/pics/<?=$a['photo']?>.jpg" />
<meta property="fb:app_id" content="119xxxxxxxxxxxxx" />
script:
Kód: [Vybrat]
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/cs_CZ/sdk.js#xfbml=1&version=v2.10&appId=119xxxxxxxxxxxxx";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
body:
Kód: [Vybrat]
<div class="fb-share-button"
data-href="http://eshop.nakupyvjaponsku.cz/index.php?category=<?=$category?>&amp;zbozi=<?=$a['code']?>"
data-layout="button_count"
data-size="small"
data-mobile-iframe="true">
<a class="fb-xfbml-parse-ignore" target="_blank"
href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Feshop.nakupyvjaponsku.cz%2Findex.php%3Fcategory%3D<?=$category?>%26zbozi%3D<?=$a['code']?>&amp;src=sdkpreparse"></a>
</div>
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 23. Září 2017 - 15:41:46
tak já věřím, že nějaký důvod k tomu měli.. ale jen tak pro porovnání:
...
Njn cena za větší variabilitu je viditelná.
Ale překvapuje mě, že FB má furt ten otřesný způsob vkládání scriptu.  :-)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 06. Leden 2018 - 09:36:20
jeden web chce u xml feedu parametr "Content-length".. předpokládám, že to má být někde v http hlavičce, a vůbec netuším, jak mám předávání takové informace zajistit.. ^_^;
nevíte někdo? případně jestli to vůbec můžu nějak ovlivnit. (hostuju na savaně)
našel jsem k tomu tohle: https://forum.nette.org/cs/26842-odesilani-content-length-u-xml-dostupnostniho-feedu-heureka
a jak tam radí vygenerování souboru a uložení na serveru, tak to mi v hlavičce nejspíš nic nevrací..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 06. Leden 2018 - 12:35:32
hmm, tak tohle asi není potřeba řešit.. teď jsem zkusmo dal validovat feed nějakého eshopu, který na heurece normálně je, a vyhodilo to chybu "Nepodařilo se zjistit velikost feedu z HTTP hlaviček" takže to neřeším.. feed je podle specifikací, validátor holt tak trochu na nic..
Název: Re:Pomoc s webovými stránkami
Přispěvatel: 8B3CE273 06. Leden 2018 - 21:58:06
Tohle musíš řešit přímo s hostingem. Nastavuje se to na úrovni webového serveru
Název: Re:Pomoc s webovými stránkami
Přispěvatel: FaraonX 06. Leden 2018 - 22:33:30
jeden web chce u xml feedu parametr "Content-length".. předpokládám, že to má být někde v http hlavičce, a vůbec netuším, jak mám předávání takové informace zajistit.. ^_^;
hmm, tak tohle asi není potřeba řešit..

Přesně tak, je to paramtr HTTP hlavičky. Nevím jestli používáš nějaký framework na své stránky, ale takhle se s tím pracuje na surové úrovni PHP:

Kód: [Vybrat]
https://www.w3schools.com/php/func_http_header.asp
http://php.net/manual/en/function.header.php

Ale pokud to není nutné, tak bych se v tom být tebou nevrtal.
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 07. Leden 2018 - 07:19:33
Díky za objasnění. ^_^ Tím spíš to tedy nebudu řešit, pokud to nebude vysloveně nutné. (což asi není, když jiné eshopy bez toho jedou)
Název: Re:Pomoc s webovými stránkami
Přispěvatel: ピンクセイコ 13. Leden 2018 - 12:19:19
chtěl jsem si na web dopsat zobrazení aktuálního času v jp, ale jak jsem tak googlil, řešení se zdálo být docela složité.. ale pak jsem našel web https://time.is/ (https://time.is/), který nabízí hotové widgety s opravdu jednoduchým kódem: https://time.is/widgets (https://time.is/widgets)
tak třeba se to někomu tady hodí..