« 1 2 »
Autor Zpráva
kordy
Profil *
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 *
eště sem tam někde odmazal <select> ale v tom souboru ho mám...
Alphard
Profil
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 *
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 *
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
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
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 *
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 *
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 *
jo to odsazování je rozhodně lepší v euforii že to běhá sem ani neodpověděl.. :-)
Alphard
Profil
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 *
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
kordy:
krásně odsazuje např. Sublime text, PSPad, pokud vím, takovou možnost nemá (nebo jsem ji taktéž dosud neobjevil).
Darker
Profil
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 *
díky zkusím...
kordy
Profil *
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
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 *
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
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
Na PSpad mi nešahej ! :P
[#20] kordy
Promiň, nevšiml jsem si že nejsi registrovaný.
kordy
Profil
už jsem :) v poho
kordy
Profil
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...
kordy
Profil
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
Chybaju ti uvodzovky v premennych $_POST
kordy
Profil
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
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
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
kordy:
pomohli by jste mi najít chybu?
A prozradíš, co to má dělat a nedělá nebo jakou chybu to vypíše?
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: