Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Tom Liberec 18. 10. 2014, 10:32:26

Název: PHP: uložení proměnné do souboru
Přispěvatel: Tom Liberec 18. 10. 2014, 10:32:26
Kód: [Vybrat]
<?php
$jmeno 
htmlspecialchars($_POST["jmeno"]);
$text htmlspecialchars($_POST["text"]);
file_put_contents("news.txt"date('d.m.Y').date(' H:i:s')." - <b>".$jmeno."</b><br>".$text."   <hr>"."\n".file_get_contents("news.txt"));
?>

Co je na tom špatně, že mi to do souboru neuloží obsah proměnné  $text  ?

( Tohle je ve skutečnosti jeden řádek ........   
".$text."   
"."\n".file_get_contents("news.txt"));

A je pravděpodobné, že se prohlížeč se zastaví při běhu PHP scriptu a nevrátí se nazpět na stránku formuláře ?

Jde mi o to pochopit kde je chyba, protože pokud to nechápu nemá smysl stahovat nějaký PHP blog hotový zkoušet jej nějak dobastlit do stránek.
Název: Re:Co je na tom špatně, že mi to do souboru neuloží obsah proměnné $text ?
Přispěvatel: Tom Liberec 18. 10. 2014, 10:33:01
Předem všem díky.
Název: Re:Co je na tom špatně, že mi to do souboru neuloží obsah proměnné $text ?
Přispěvatel: robin martinez 18. 10. 2014, 10:47:13
prava jsou nastavena dobre? kdyz soubor news.txt vymazes, vytvori se automaticky?

jinak misto toho cteni zpet bych asi pouzil

Kód: [Vybrat]
file_put_contents("news.txt", $data, FILE_APPEND | LOCK_EX);

Název: Re:Co je na tom špatně, že mi to do souboru neuloží obsah proměnné $text ?
Přispěvatel: Tom Liberec 18. 10. 2014, 11:07:13
Díky obojí vyzkouším. Práva mám v celém adresáři na domácím serveru na maximu. Teď musím jet na nákup.

Omlouvám se tedy, že to bude trvat.
Název: Re:Co je na tom špatně, že mi to do souboru neuloží obsah proměnné $text ?
Přispěvatel: Kit 18. 10. 2014, 11:34:48
<?php
Co je na tom špatně, že mi to do souboru neuloží obsah proměnné  $text  ?

Nemůžeš současně číst a zapisovat do jednoho souboru. Ve chvíli, kdy ho otevřeš pro zápis, je vymazán. Pak už nic nepřečteš.

Pochybuji, že v $text něco máš.

Citace
A je pravděpodobné, že se prohlížeč se zastaví při běhu PHP scriptu a nevrátí se nazpět na stránku formuláře ?

Ne. Proč by to měl dělat? Nějak té otázce nerozumím.
[/quote]
Jde mi o to pochopit kde je chyba, protože pokud to nechápu nemá smysl stahovat nějaký PHP blog hotový zkoušet jej nějak dobastlit do stránek.
[/quote]

Hlavně nemá smysl dělat blog tímto způsobem. Proč nepoužiješ nějakou databázi? Na freehostingu si obvykle můžeš vybraz z pěti druhů databází a ty to mastíš do souboru. A ještě blbě.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Fantomas 18. 10. 2014, 11:48:20
Zapisovat text pres php do souboru, no fuj....
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Kit 18. 10. 2014, 12:31:07
Zapisovat text pres php do souboru, no fuj....

Co je na tom špatného? Dělám to běžně. Jenže současně číst a zapisovat do toho stejného souboru, to je fuj.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: NooN 18. 10. 2014, 12:57:25
A ako mas riesene sucasne zapisovanie od viacerých ludi do suboru?
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Kit 18. 10. 2014, 14:05:53
Co je na tom špatně, že mi to do souboru neuloží obsah proměnné  $text  ?

Zkus to takhle:
Kód: [Vybrat]
<?php
$jmeno 
htmlspecialchars($_POST["jmeno"]);
$text htmlspecialchars($_POST["text"]);
file_put_contents(
    
"news.txt",
    
date('d.m.Y H:i:s') . " - <b>$jmeno</b><br>$text"
);
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: to_je_jedno 18. 10. 2014, 15:34:08
v prve rade na nejaky takovyhle masteni pres soubory uplne zapomen.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Lol Phirae 18. 10. 2014, 17:38:26
Blog v souborech? Lulz?!  :o ;D
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: 18. 10. 2014, 18:52:04
Proč ne? Mají tu snad všichni nějakou mentální závislost na databázích nebo co?
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: NooN 18. 10. 2014, 20:58:09
Uz ti niekto prezradil ze na webe moze pristupovat viac ludi sucasne?
Alebo mas web len cisto pre jedneho cloveka... :)
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Tomas Matejicek 18. 10. 2014, 21:44:08
Nekdo tady radi FILE_APPEND parametr pro file_put_contents, to je nicmene trochu neco jineho nez chces, protoze to zapise data na konec souboru, nikoli na zacatek.

Nekdo dalsi tvrdi, ze zapis do souboru ze ktereho ctes je blbost, konkretne tady v tom tvem PHP nikoli, protoze PHP funguje tak ze nejdriv vyhodnoti string ktery se ma zapisovat, vcetne ziskani obsahu souboru, a pak teprv ho zapise, takze v tomhle problem neni. Ovsem problem vznikne pokud by vic lidi chtelo naras do toho souboru takhle psat, muzes prijit o nejake data. Obecne je nutne soubory lockovat, pokud je ma pouzivat vic lidi najednou. I kdyz tohle vypada ze ma byt nejaky tvuj admin, ke kteremu budes pristupovat jen ty, takze bych v tom az zas takovy problem nevidel.

K tvemu problemu, pokud to do souboru ulozi novy zaznam, vcetne jmena, ale neulozi to promennou $text, tzn je jakoby prazdna, pak pravdepodobne prisla z formulare prazdna, nebo pod jinym jmenem. Ujisti se, ze <textarea> ve formulari ma atribut name=text
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Jan Forman 19. 10. 2014, 10:39:51
No a to jako proč ne? Je to mnohdy rychlejší a efektivnější...
Je to stejně o logice, mnoho "jako enterprise" firem a tím myslím i ty velké dokážou vytvořit
takový paskvil i nad super silnou databází, že je to stejně jedno.
Nebudu jmenovat, ale určitě je všichni znají takový ti červení, modří, zelení a různobarevní.

To není o souborech, nebo DB to je o myšlení... mnohdy soubor bude mnohem rychlejší a spolehlivější
než DB a naopak.

Zrovna u blogu mi to příjde skoro nejlepší řešení, v jednoduchosti je síla.

Blog v souborech? Lulz?!  :o ;D
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: to_je_jedno 19. 10. 2014, 10:58:16
Tak to snad ani nerikej, jednou budes nekde zadat o zamestnani... V cem by mel byt dnes prinos ukladani dat takhle po souborech? Smankote i ty nejlevnejsi hostingy maji aspon sqlite. Rezie zanedbatelna u blogísku
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Tom Liberec 19. 10. 2014, 11:05:35
Pro nasazení na web plánuji spíše to co nabízí Savana, kde mám VPS. Na kterých je i část webů firmy kde pracuji.

Tohle je spíše o tom zda zvládnu pochopit co se děje, tedy myslím PHP.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Krysa1 19. 10. 2014, 11:14:46
Použití databáze by bylo určitě lepší. Hlavně pokud budeš projekt rozšiřovat.

Nadruhou stranu...

Pokud se nechceš učit technické věci do houbky a jde ti o zveřejnění informací na webu s minimálním úsilím a náklady, tak jsou soubory dostačující. Jedná-li se o blog typu jeden autor a čtenáři, nemusíš ani řešit současný zápis, protože si to můžeš ohlídat sám.

Na takovéto věci je už ale celkem dost projektů, namátkou se mi vybavuje http://tiddlywiki.com/ (http://tiddlywiki.com/), kde si pohodlně uděláš blog s vyhledáváním, tagy a pod. Celý soubor potom jen u sebe upravíš a nakopíruješ na ftp.

Jednoduchý blog se tedy dá zařídit jednoduše aniž bys musel něco bastlit v PHP, řešit zabezpečení aplikace a další věci.

Kvalitní stránky dělá kvalitními především obsah. Technické řešení je vedlejší.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Tom Liberec 19. 10. 2014, 11:58:50
V noci z mobilu jsem zjistil, proč nefunguje to ukládání proměnné TEXT. Kvůli diakritice.

Ovšem ještě tam mám další nějaký problém, neboť jak jsem již napsal to zůstane stát na tom souboru zpracuj.php a nevrátí se to nazpět na stránku html, kterou se to celé spouští.

I pokud použiji soubor zpracuj.php  od  Kita :

<?php
$jmeno = htmlspecialchars($_POST["jmeno"]);
$text = htmlspecialchars($_POST["text"]);
file_put_contents(
    "news.txt",
    date('d.m.Y H:i:s') . " - $jmeno
$text"
);

nevrátí se mi to na stránku html, kterou se to spouští ať se jmenuje z.html  nebo news.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form method="post" action="zpracovat.php" accept-charset="windows-1250">
<table>
<tr>
<td>Jméno:</td>
<td><input type="text" name="jmeno" size="50" maxlength="15"></td>
</tr>
<tr>
<td>Text novinky:</td>
<td><textarea name="text" rows="6" cols="38"></textarea></td>
</tr>
</table>


<input type="submit" value="Uložit novinku">
<input type="reset" value="Reset">
</form>


<a href="news.html">Nahlédnout do Novinek[/url]
</body>
</html>

Není problém v tom, že musím nějak upravit hlavičky? Evidentně je tam něco velmi důležitého, co jsem zcela opomenul.



Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Lol Phirae 19. 10. 2014, 12:14:31
No a to jako proč ne? Je to mnohdy rychlejší a efektivnější...

Tak určitě. Takže doporučuju namastit v MS Přední Stránka nebo ve Wordu a "programováním" kokotin typu ukládání blogu do souborl se nezabývat.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Lol Phirae 19. 10. 2014, 12:15:35
Kód: [Vybrat]
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<form method="post" action="zpracovat.php" accept-charset="windows-1250">

Výtečně...  ::)
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: to_je_jedno 19. 10. 2014, 12:58:58
proc by se to taky melo vracet samo od sebe? bys to musel presmerovat. do toho ta 1250...

Hele takhle, proste to nech na nekom kdo to umi protoze takhle si namastis do bot. tohle co tady ted posilas neni dost dobre ani na totalniho zacatecnika. Nezvladas ani totalni zaklady HTML tak se radsi nepoustej do nejakych vetsich veci.

Sorry, zni to tvrde, ale usetris si mnoho problemu, protoze hodit nekam na produkci neco v teto kvalite...
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Krysa1 19. 10. 2014, 13:10:28
 :o

1. rozhodně svou tvorbu nikomu neukazuj

2. rozhodně ji nedávej na veřejně přistupný server



to, co hledáš je asi redirect.

http://stackoverflow.com/questions/768431/how-to-make-a-redirect-in-php (http://stackoverflow.com/questions/768431/how-to-make-a-redirect-in-php)
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Tom Liberec 19. 10. 2014, 13:29:42
Díky hodně jste mi pomohli.

Přesměrování jsem vyřešil takto :  <meta http-equiv="refresh" content="3;url=news.html">

Češtinu s tím, že jsem tohle prostě smazal  :   accept-charset="windows-1250

Vím, že se vám to jeví jako, že neskutečně blbnu a soustavně se pokouším o něco na co nemám.
Do značné míry máte i pravdu. Je to dáno tím, že v žádné škole, kterou jsou absolvoval, jsem skriptování nebo programování nebral.
A na samostudium mi jak vidno nestačí inteligence, trpělivost a spousta dalších věcí.

Bastlení webovek, není mojí hlavní náplní práce, ale pouze částí mého zkráceného pracovního poměru.
Určitě by mi pomohl nějaký kurz, ovšem jedna věc je přístupnost budov, další čas, zdraví.

Brát to můžete i tak, že si na mě zase o to lépe vydělají poskytovatelé služeb VPS, mám tři i když tu na Savaně využívám spíše jej jako hosting a webhostingových služeb. Spravuji malý webhosting firmy.

Stařičká Joomla byla dost hrozný podnik, byla poměrně často zavirovaná.
Přímo v kódu na fee šabloně je to jak pro mne tak pro mladého zdravého kolegu daleko lepší.
Sféra firem ve kterých se pohybuji, tedy lze mne zaměstnat, má to specifikum, že jsem v podstatě nejlevnější. 
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Krysa1 19. 10. 2014, 13:40:14
Tak pokud tě to baví, nikdo do toho nemá co kecat.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Tom Liberec 19. 10. 2014, 13:48:05
Dřív tady v baráku, dva domy propojené částečně podzemním tunelem, veprostřed budova bývalého výrobního družstva invalidů, doma pracovali dva programátoři oba po úrazu na vozíku.
Ovšem oba mají jiné bydlení a to již hodně let, není to úplně blízko, tak tam nemohu chodit co chvíli otravovat.

Navíc mám asi dost pomalé zapalování. Protože ten odkaz, přesměrování nazpět byl zřejmě důvodem proč mi nefungovali ostatní PHP zbastleniny.

Opravdu moc díky.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Kit 19. 10. 2014, 14:00:40
Vím, že se vám to jeví jako, že neskutečně blbnu a soustavně se pokouším o něco na co nemám.
Do značné míry máte i pravdu. Je to dáno tím, že v žádné škole, kterou jsou absolvoval, jsem skriptování nebo programování nebral.

Jestli ti mohu poradit, přejdi na programujte.com. Nejsme tam k začátečníkům tak agresívní jak na těchto pokročilých webech.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: to_je_jedno 19. 10. 2014, 15:54:39
Do značné míry máte i pravdu. Je to dáno tím, že v žádné škole, kterou jsou absolvoval, jsem skriptování nebo programování nebral.

Určitě by mi pomohl nějaký kurz, ovšem jedna věc je přístupnost budov, další čas, zdraví.
1) tohle se neuci v podstate v zadne skole, tohle je iniciativa kazdeho toho cloveka ktery to dela. In fact se neuci v podstate zadne velke programovani nikde ve skolach, jen obecna teorie (+ max nejaky hello world) - zbytek jsou leta driny a praxe.
2) pristupnost budov je jen tvoje vlastni omluva pred sebou samym. Sorry, zni ti to mozna tvrde, ale je to tak(sam jsem krypl i kdyz ne na voziku tak si myslim, ze si to mohu dovolit). Je rok 2014 a neni duvodu navstevovat nejake priblble budovy. Taky je nenavstevuju. Mnohem zasadnejsi bariera v tehle branzi je (ne)znalost anglictiny.
3) samostudium neznamena bastlit to jen podle sebe timhle stylem. V roce 2014 je naprosto drtiva vetsina vsech vedomosti lidstva dostupna v sekundach odkudkoliv. Existuje asi bambilion tutorialu na cokoliv, spousta toho je na youtube takze je to nekdy lepe konzumovatelne
.
Trochu blby je, ze ty zacatecnicky navody na HTML jsou tak stare, ze vetsina uvadi prave takove historicke omyly jako je cp1250.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: to_je_jedno 19. 10. 2014, 15:55:59
A jinak ano, treba programujte.com bude pro totalni zacatky vhodnejsi nez root a myslim, ze na vetsinu veci tam najdes uz odpovedi.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Tom Liberec 19. 10. 2014, 16:26:28
to je jedno, má v podstatě pravdu. Jsou to moje omluvy, tedy spíše výmluvy sobě samému.
Název: Re:PHP: uložení proměnné do souboru
Přispěvatel: Kit 19. 10. 2014, 16:35:01
Přesměrování jsem vyřešil takto :  <meta http-equiv="refresh" content="3;url=news.html">

To není dobrý nápad kvůli historii v prohlížeči. Přesměrování snadno uděláš přímo v PHP:
Kód: [Vybrat]
header('Location: news.html');