Autor Zpráva
Trim
Profil
Ahoj, potřebuji poradit, jak pomocí str_replace dát do textarey ty funkce, zatím se mi to nepovedlo… nepoužívám databázi, takže práci v databázi neudělám, ukládám to do textového souboru…
Samozřejmě pomocí PHP…
lionel messi
Profil
Trim:

Čo prosím znamená „pomocí str_replace dát do textarey ty funkce“? Aké funkcie? Textarea je formulárové pole.

Ak potrebuješ, aby sa povedzme pri validácii vypísal do textarea nejaký nahradený obsah, treba si uvedomiť, že obsah textarea sa nepredáva atribútom value, ale takto: <textarea>Obsah</textarea>

Čiže vieš spraviť čosi takéto:

<form method="post">
<textrea name="text">
<?= ($formularBylOdeslany && $validacniChyby ? htmlspecialchars(str_replace("chobot", "robot", $_POST["text"])) : "") //ak bol formulár odoslaný a došlo k validačnej chybe, nahradí v obsahu textarey slovo "chobot" slovom "robot" ?>
</textarea>
</form>

$formularBylOdeslany si nahraď svojou boolean premennou, kde si ukladaj, či bol formulár odoslaný. $validacniChyby nech je pole, ktoré bude prázdne, ak je všetko vyplnené ok, inak si tam ukladaj, čo je zle.
Trim
Profil
Počkej, teď nějak nechápu… kde jak mám načíst validační chyby, a kam je potřebuju uložit? Práci s chybami moc nezvládám, pracuju s obyčejným die, ale zas je mi 11…
anonym_
Profil *
Trim:
kde jak mám načíst validační chyby
Tam, kde je potřebuješ (chceš) vypsat.

kam je potřebuju uložit?
Třeba do pole.

ale zas je mi 11
Což není chyba, ale ani omluva. Pročti si nějaký ucelený tutoriál PHP (až už na webu, nebo knihu) a ptej se, až budeš mít zmáknuté základy jazyka. Diskusní fórum není vhodná platforma na tvoje učení se a řešení základů, které jsou popsány všude už milionkrát.
Trim
Profil
Základy umím docela dobře, umím pracovat s databází a dokonce mám i přihlášení. Potřebuju pomoct jen s tím, co je pro mě obtížné nebo čemu nerozumím. ;-) Každopádně zpátky k tématu:
Udělám tedy textový soubor, do kterého se vypíší chyby, které se kdyžtak způsobí. :) Díky moc!


Ha, tak jsem to zkusil nasadit, akorát to nefunguje v té tabulce, ale nahradí se to přímo v té textaréně po odeslání textu…
lionel messi
Profil
Trim:
akorát to nefunguje v té tabulce, ale nahradí se to přímo v té textaréně po odeslání textu…

Áno, toto robí kód z [#2]. Všimni si, že som v ňom vôbec neriešil nejaké ukladanie. Ale princíp už máš. Nič ti nebráni ten nahradený reťazec nevypisovať, ale uložiť do premennej: $replacedText = str_replace("chobot", "robot", $_POST["text"]);.

Danú premennú si už spracuješ podľa potreby, napríklad uložíš do súboru, databázy, preženieš podmienkou, cyklom... Ak ukladáš do nejakej databázovej tabuľky, vrelo odporúčam pred uložením ešte escapovať (kľúčový výraz na samoštúdium je SQL injection).
Keeehi
Profil
lionel messi:
Používá soubory, takže v tomto případě ho SQL injection zajímat nemusí. Jako s každým uživatelským vstupem který se pak vypisuje do stránky by měl ale řešit XSS. Správně by se to mělo řešit až při výstupu, jelikož ale do toho souboru ukládá kromě dat uživatele i svoje HTML, musí to ošetřit ještě před uložením.
Trim
Profil
SQL injection řeším jen, když se napojuji do databáze, jinak to nemá smysl. :) Právě toho, co chci docílit je, aby člověk (i přes htmlspecialchars) kdyby napsal (:)), tak vy se to převedlo na usměváčka…
lionel messi
Profil
Trim:

Právě toho, co chci docílit je, aby člověk (i přes htmlspecialchars) kdyby napsal (:)), tak vy se to převedlo na usměváčka…

Áno, aj tu potrebuješ nahradenie reťazcov. Dám ti ešte jeden tip na zamyslenie.

Keď budeš hotový so základným prevodom smajlíkov, skús systém vylepšiť tak, aby užívateľ mohol cielene napísať aj (:)) bez toho, aby došlo k prevodu na smajlíka. Napríklad ak komentár začína istou sekvenciou znakov, trebárs dvomi vlnovkami ~~, tak by sa prevod neaplikoval a podobne (používa tuším Skype s inou sekvenciou).

Čosi podobné funguje aj tu na diskusii. Napríklad značka [p!re] a [/pre] vkladajú kód. Ak ich chcem napísať do textu a nechcem, aby ohraničovali kód, musím do textu značky (do toho pre) vložiť výkričník. Možností je viacero...
Trim
Profil
Jojo, už jsem to dokázal, děkuji moc za rady! :) Nakonec jsem str_replace uložil do proměnných a c možnosti upravit příspěvek jsem tu proměnnou obrátil, aby nedošlo k nějakému HTML (třeba (:)) byl vlastně <img src="smajlik.jpg" alt=":))">, když jsem to pak obrátil, nadále se zobrazoval jako (:))

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:

0