Autor | Zpráva | ||
---|---|---|---|
kordy Profil * |
#1 · Zasláno: 9. 9. 2010, 13:24:51
dobrý den
mám takový kód: ____________to je formular kterej bych chtěl zapsat do txt souboru_________________________ <form method="post"> <textarea name="blabla" cols="50" rows="10">obsah webu</textarea> <input type="text" name="soubor" value="název souboru" id="soubor"> <option value="S účastí RK">S účastí RK</option> <option value="Bez účasti RK">Bez účasti RK</option> </select> <input type="submit" name="ulozit" value="Uložit"> </form> <?php if(!empty($_POST["ulozit"])){ $soubor = "$soubor.txt"; // název souboru $ot = fopen($/inzerce/$soubor, "w"); // otevření souboru $w = fwrite($ot, $_POST['blabla']); fclose($ot); // zavření souboru if($w) echo("Obsah byl úspěšně zapsán,"); else echo("Někde se stala chyba!"); // vypsání výsledku } ?> chtěl bych ještě vyřešit jednu drobnost jak je ten selectbox tam bych potřeboval aby se mi ukladal do složky podle toho co uživatel vybere. předem děkuji za pomoc |
||
kordy Profil * |
#2 · Zasláno: 9. 9. 2010, 13:30:51
eště sem tam někde odmazal <select> ale v tom souboru ho mám...
|
||
Alphard Profil |
#3 · Zasláno: 9. 9. 2010, 13:42:40
V tom selectu, který jste odmazal, musí být nějaké name a těm option dejte jako value název toho adresáře.
Pak stačí sestavit adresu k souboru a zbytek nechat původní. $path = in_array($_POST['dir'], $allowDirs) ? "$_POST[dir]/$soubor.txt" : "default/$soubor.txt"; Měl byste kontrolovat i $soubor. Není vhodné nechávat tam diakritiku a umožnit přejití do jiných adresářů. Navíc tento systém umožňuje přemazat jiné soubory. |
||
kordy Profil * |
#4 · Zasláno: 9. 9. 2010, 15:00:06
díky za pomoc, ale jsem asi nekonečný začátečník, prosimvás ukázal by jste mi jak to vypadá v kódu?
pozn. prosimvás nevykejte mi je mi 15... :) |
||
kordy Profil * |
#5 · Zasláno: 9. 9. 2010, 15:01:27
teda abych to upřestnil když sem to dal do kódu dopadlo to tahle...
Web nemůže zobrazit tuto stránku. HTTP 500 Nejpravděpodobnější příčiny: •Probíhá údržba webu. •Na webu došlo k chybě v programování. |
||
Alphard Profil |
#6 · Zasláno: 9. 9. 2010, 15:30:26
kordy:
Ten kód není kompletní. Především tam chybí pole $allowDirs, které obsahuje povolené adresáře (kvůli bezpečnosti). Bylo by vhodné dát sem ten kompletní select. Mohli bychom ho zkontrolovat a vyjít z něho. |
||
kordy Profil * |
oki v tuto chvíli budem teda řešit hlavně funkčnost bespečnost na chvíli odsunem stravnou ten kompletní select myslis takhle?
<form method="post"> <textarea name="blabla" cols="50" rows="10">obsah webu</textarea> <input type="text" name="soubor" value="název souboru" id="soubor"> <select name="jmeno"> <option value="S účastí RK">S účastí RK</option> <option value="Bez účasti RK">Bez účasti RK</option> </select> <input type="submit" name="ulozit" value="Uložit"> </form> <?php if(!empty($_POST["ulozit"])){ $soubor = "$soubor.txt"; // název souboru $ot = fopen($/inzerce/$soubor, "w"); // otevření souboru $w = fwrite($ot, $_POST['blabla']); fclose($ot); // zavření souboru if($w) echo("Obsah byl úspěšně zapsán,"); else echo("Někde se stala chyba!"); // vypsání výsledku } ?> kam teda doplnit to co si psal v #3? Moderátor Alphard: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Alphard Profil |
#8 · Zasláno: 9. 9. 2010, 15:54:40
kordy:
„bespečnost na chvíli odsunem stravnou“ Jak myslíš :-) Trochu lépe jsem ti to odsadil, nezdá se ti to přehlednější? <form method="post"> <textarea name="blabla" cols="50" rows="10">obsah webu</textarea> <input type="text" name="soubor" value="název souboru" id="soubor"> <select name="dir"> <option value="s_ucasti_rk">S účastí RK</option> <option value="bez_ucasti_rk">Bez účasti RK</option> </select> <input type="submit" name="ulozit" value="Uložit"> </form> <?php if(!empty($_POST["ulozit"])){ $allowDirs = array('s_ucasti_rk', 'bez_ucasti_rk'); $path = in_array($_POST['dir'], $allowDirs) ? "$_POST[dir]/$_POST[soubor].txt" : "default/$_POST[soubor].txt"; $w = file_put_contents($path, $_POST['blabla']); if($w) echo("Obsah byl úspěšně zapsán,"); else echo("Někde se stala chyba!"); // vypsání výsledku } |
||
kordy Profil * |
#9 · Zasláno: 9. 9. 2010, 16:03:52
díky moc moc si mi pomohl :)
už to hledám týden a tady to je za hodku.... dík pokud bys byl eště hodnej dal bys mi nějáký tipy jak to zabezpečit? ztačí třeba naznačit dohledám si... |
||
kordy Profil * |
#10 · Zasláno: 9. 9. 2010, 16:06:21
kordy:
„tady to je za hodku....“ no jak se zpětně koukám bylo to trošku víc :) ale stejně je to nic proti tomu co sem ztravil hledanim... dik |
||
kordy Profil * |
#11 · Zasláno: 9. 9. 2010, 16:07:30
jo to odsazování je rozhodně lepší v euforii že to běhá sem ani neodpověděl.. :-)
|
||
Alphard Profil |
#12 · Zasláno: 9. 9. 2010, 16:13:27
kordy:
„pokud bys byl eště hodnej dal bys mi nějáký tipy jak to zabezpečit?“ Ošetření jména souboru viz [#3]. Převáděť jen na bezpečné znaky znaky, tj. písmena anglické abecedy, číslice, _ (bylo by jich víc, ale myslím, že tohle dostačuje). Ošetření pro podvržení adresáře je již zabudováno ([#8] řádek 15. a 16.). Ochranu proti přepsání lze zajistit kombinací podmínky a funkce file_exists(). „jo to odsazování je rozhodně lepší“ Dobrý editor to dělá víceméně automaticky. Jen je potřeba naučit se s ním pracovat. |
||
kordy Profil * |
#13 · Zasláno: 9. 9. 2010, 17:09:23
dík ještě k těm bezpečným znakům co se stane když tam budou háčky čárky?
a který editor to zvládá odsazovat? Já používám PS pad má tu funkci a neumím ji požít nebo mi doporučíš jiný? |
||
panther Profil |
#14 · Zasláno: 9. 9. 2010, 17:11:32
kordy:
krásně odsazuje např. Sublime text, PSPad, pokud vím, takovou možnost nemá (nebo jsem ji taktéž dosud neobjevil). |
||
Darker Profil |
#15 · Zasláno: 9. 9. 2010, 17:31:03
panther:
„PSPad, pokud vím, takovou možnost nemá“ Má ji. Jen má poměrně rozlehlou nabídku tlačítek, takže není hned vidět co má zmáčknout, ať už hledá cokoliv. Potřebuješ toto tlačítko: |
||
kordy Profil * |
#16 · Zasláno: 9. 9. 2010, 17:34:58
díky zkusím...
|
||
kordy Profil * |
#17 · Zasláno: 9. 9. 2010, 17:37:34
Když sme u těch programů,
eště mě napadá neexistuje nejákej program co mi třeba vyhledá kde v kódu mám chybu? |
||
Darker Profil |
#18 · Zasláno: 9. 9. 2010, 17:42:19
firefox ti je najde v JS a HTML a Easy PHP, popř tvůj serverový klient ti je najde v PHP.
A existuje tlačítko změnit, aby lidé nemuseli psát každou svojí myšlenku extra do postu. Říkám ti to protože myslím že sis ho nevšim, neber to jako výtku. |
||
kordy Profil * |
můžu se zeptat kde? našel jsem odpovědět, citovat (už předtím sem ho hledal)
Moderátor Alphard: Tlačítko Změnit mají jen registrovaní uživatelé.
|
||
kordy Profil * |
#20 · Zasláno: 9. 9. 2010, 18:05:41
kordy:
„Moderátor Alphard: Tlačítko Změnit mají jen registrovaní uživatelé.“ aha :) stejně zde jsem poměrně často tak se teda zaregistruju :) |
||
panther Profil |
#21 · Zasláno: 9. 9. 2010, 18:08:59
Darker:
„Potřebuješ toto tlačítko:“ to není ono, Sublime odsazuje chytřeji, a to už při zmáčknutí enteru. Navíc, tohle automatické PSPadí odsazování je stejně poměrně nedokonalé, výsledek se mi moc nelíbí. |
||
Darker Profil |
#22 · Zasláno: 9. 9. 2010, 18:28:35
|
||
kordy Profil |
#23 · Zasláno: 9. 9. 2010, 19:50:21
už jsem :) v poho
|
||
kordy Profil |
#24 · Zasláno: 9. 9. 2010, 20:15:41
moc ste mi pomohli děkuju všem myslím že posledních pár příspěvků nebylo k věci a odvíjí se z toho úplně jiné téma pak to nebude přehledné bude lepší když to admin zamkne potřebné už padlo...
|
||
Časová prodleva: 7 dní
|
|||
kordy Profil |
#25 · Zasláno: 16. 9. 2010, 19:44:08 · Upravil/a: kordy
Ahoj to jsem zase já mám o5 problém s tímto scriptem, jen je trošku upravenej...
<?php $ip = $_SERVER['REMOTE_ADDR']; if(!empty($_POST["ulozit"])){ $allowDirs = array('s_ucasti_rk', 'bez_ucasti_rk'); $path = in_array($_POST['dir'], $allowDirs) ? "$_POST[dir]/$ip/$_POST[soubor]/$_POST[soubor3]$_POST[soubor]$_POST[soubor2].txt" : "default/$_POST[soubor].txt"; $w = file_put_contents($path, $_POST['blabla']); if($w) echo("Obsah byl úspěšně zapsán,"); else echo("Někde se stala chyba!"); // vypsání výsledku } ?> pomohli by jste mi najít chybu? |
||
Camo Profil |
#26 · Zasláno: 16. 9. 2010, 22:47:58 · Upravil/a: Camo
Chybaju ti uvodzovky v premennych $_POST
|
||
kordy Profil |
#27 · Zasláno: 17. 9. 2010, 14:35:13
zkusím, ale když tam nebyly fungovalo mi to jen když jsem tam doplnil proměnnou $ip tak to nefungovalo :) (logicky by chyba "měla" být někde tam :))
|
||
Alphard Profil |
#28 · Zasláno: 17. 9. 2010, 16:20:57
Camo:
„Chybaju ti uvodzovky v premennych $_POST“ Ne, nechybí. V řetězci být namají. kordy: „jen když jsem tam doplnil proměnnou $ip tak to nefungovalo“ To je smysluplnější popis chyby, který jsem včera nenašel. Neočekávejte, že budeme věštit. Ten adresář $ip se samozřejmě sám nevytvoří, viz mkdir(). A hádám, že adresář default taky nemáte. Zkuste jen nekopírovat, ale zjistit, co to dělá. |
||
kordy Profil |
#29 · Zasláno: 17. 9. 2010, 22:11:52 · Upravil/a: kordy
Alphard:
nene to samozřejmě nečekám aby to vytvořil vytváří se v předchozí akci a existuje tady chyba není :) todle je ono :) <?php $ip = $_SERVER['REMOTE_ADDR']; mkdir("bez_ucasti_rk/$ip", 0777); mkdir("s_ucasti_rk/$ip", 0777); ?> <meta http-equiv="refresh" content="1;url=inzerce.html"> |
||
Davex Profil |
#30 · Zasláno: 17. 9. 2010, 23:01:29
kordy:
„pomohli by jste mi najít chybu?“ A prozradíš, co to má dělat a nedělá nebo jakou chybu to vypíše? |
||
Téma pokračuje na další straně.
|
0