« 1 2 »
Autor Zpráva
RuThaN
Profil
Chtěl bych se zeptat jestli se dá nějak nastavit maximální délka textu, který se tam dá napsat a né jen velikost toho obdélníku, jako tady:
<input type="text" name="jmeno" size="15">
centi
Profil
maxlength="xxx"
RuThaN
Profil
Thx
RuThaN
Profil
Ještě by mě zajímalo, jestli se dá nastavit aby to bralo jen čísla a né znaky, nemam knížky ve kterejch bych to našel..
krteczek
Profil *
k 1 dotazu, ano dá pomoci maxlenght="xxx" nicméně to jde obejít, a je to třeba ošetřit v php

substr(řetězec, začátek, počet znaků)

Vrátí vybranou část řetězce

echo(substr("0123456789",1,5)) // vypíše '12345'



<input type="text" name="jmeno" size="15"maxlenght="15">
a potom ve skriptu php
<?
$jmeno=substr($jmeno,0,14); //vrátí prvních 15 znaku

snad ti to pomuze
a to jestli se zadavaji cisla nebo jine zaky asi budes muset osetrit nejprve javaskriptem na strane prohlizece, a potom pro ty co ho maji vyply na strane serveru podobnou funkci v php.
krteczek

krteczek
Leo
Profil
Osobne bych maximalni delku ve formulari nenastavoval - z vlastni zkusenosti vim, jaka je to nekdy otrava pro uzivatele. Vemte si napriklad policko kam musim zadat svoje IC - neznam ho z hlavy, tak ho pres schranku zkopiruju a vlozim do policka, jenze v originalni podobe jsou tam mezery a s tema se to nevejde to povolene delky. Za normalnich okolnosti bych je pred odeslanim smazal, takhle se mi pres schranku vlozi nekompletni IC a je to otrava nejvetsi... Kontrola JS pred odeslanim ano, kontrola na serveru samozrejme, ale ne maximalni delka... Leo
RuThaN
Profil
Krtezec: Jak to jde obejít? Rád věděl jak je to pravděpodobný, že se to někomu povede, jelikož by mi rozhodilo položky v databázi, který maj nastavenou pevnou délku..
RuThaN
Profil
Leo: Já nějak nechápu co je to IC? Jinak samozřejmě se může stát že má někdo moc dlouhý jeden údaj proto sem se snažil to udělat dost dlouhý a kdyby ne tak např. název města se dá zkrátit v tohle případě jde jen o registraci zákazníků.
Leo
Profil
IC je ICO :-) Leo
thingwath
Profil
RuThan: Obejít to jde velmi jednoduše, prostě odešleš ne 15 znaků, jak je nastaveno v formuláři, ale třeba padesát. Je to stejné jako dát do parku ceduli 'Nechoďte přes trávník'. Pokud někdo neumí česky nebo to chce ignorovat, přejít přes trávník mu to nezabrání.

Vyzkoušet si to můžeš sám. Pokud to odesíláš jako GET, tak to do URL dá něco jako ?pole=maximalne_patnact_znaku_ale_ja_na_to_kaslu_a_poslu_si_jich_kolik _chci

Jak vidíš, nic ti nebrání poslat toho kolik chceš, jediný hard limit je omezení délky URL.
RuThaN
Profil
thingwath: No myslim, že to tak to neni.. že si pleteš size to je rozměr pole a maxlength ta ti nedovolí tam naťakat víc jak patnáct znaků, jestli se to tam dá v pašovat nějak pře řádek s adresou s přes tohle omezení, tak to nevim..
thingwath
Profil
Ale ne, ty vytvoříš v HTML formulář, který pak prohlížeč zobrazí. A co nutí prohlížeč aby omezil zadávání na těch 15 znaků? Jediné atribut maxlength tagu input. Ale na ten se může s klidným svědomím vykašlat. Nejsou žádné prostředky jak ho k tomu donutit. Že to většina prohlížečů respektuje, to je jejich dobrá vůle. Ale spoléhat se na to nedá.

Pokud nepoužiju prohlížeč vůbec, tak si můžu odeslat co chci.

Ale do databáze s pevnou délkou si to pravděpodobně v nejhorším odsekne ta databáze sama.
Leo
Profil
"No myslim, že to tak to neni.. že si pleteš size to je rozměr pole a maxlength ta ti nedovolí tam naťakat víc jak patnáct znaků, jestli se to tam dá v pašovat nějak pře řádek s adresou s přes tohle omezení, tak to nevim.."

Kazdy formular zpracovava skript na serveru. A jedno ze zakladnich pouceni na kazdem kurzu PHP je to, ze musite zkostrolovat vsechny vstupy, protoze i odeslani formulare metodou POST se da velmi snadno simulovat... Leo
RuThaN
Profil
Ty prohlížeče jsou ale mrchy..
thingwath
Profil
Prohlížeče ne, ty to většinou dodržují. Ale kde je psáno, že musím použít prohlížeč ;-) Úmyslně obejít tohle omezení zvládne hacker ze školky, asi tak.
RuThaN
Profil
Thingwath: No s hackerama asi nemá smysl soutěžit z hlediska takovýhle stránky, jelikož je to marnej boj.. Ošetřim jen pár do očí bijících dír..
thingwath
Profil
Tohle není nic těžkého, krteczkovým skriptem nebo jinou metodou zkontrolovat o oříznout vstup. Pokud je požadovaná nějaká určitá maximální délka, tak to nedá skoro žádnou práci a rozhodně to neuškodí. Atribut maglength uvažuj jako prvek, kterým dáš uživateli jasně najevo, jaký formát má mít vstup (je to třeba dobré, když chci třeba rodné číslo, které má jasně daný formát, když mě to najednou nechce pustit dál, tak si zkontroluju vstup a najdu chybu, ovšem zadané číslo se stejně na serveru kontroluje).
RuThaN
Profil
No ješte se nabízí otázka, že když je někdo schopnej hacknout ten vstup, proč by si nehacknul i tu maximální délku..
thingwath
Profil
Jak to myslíš? Poslat delší řetězec než uvádí maxlength u inputu není problém. Zrušit ten php skript, který to kontroluje už docela problém je.
Leo
Profil
Pokud v PHP skriptu dusledne kontrolujes VSECHNY vstupy (protoze velmi jednoduse se da podvrhnout treba i hodnota COOKIE), idealne regularnim vyrazem, tak mas klid, at si kdo chce co chce posila...

V tvym pripade napriklad

$rv_jmeno = "/^.{,15}$/";
if (preg_match($rv,$_GET['jmeno'])!=1) {
// spatny tvar jmena
} else {
// vstup je ok
}

pokud chces krome delky testovat i povolene znaky, rekneme jen pismena anglicke abededy a cislice pak jenom zmenis regularni vyraz:

$rv_jmeno = "/^[a-zA-Z0-9]{,15}$/";

Leo
RuThaN
Profil
Nevíte jak elegantně otestovat že je zadaná jen číselná hodnota a né znaky a nebo pro změnu obráceně? Nenašel sem na to žádnou funkci na převod na netu a knížku nemám
a podmínka if (text=="0")&&(text=="1")&&2.. atd Je zbytečně dlouhá a "zaprasí", už tak šíleně dlouhej zdroják..
Leo
Profil
"Nevíte jak elegantně otestovat že je zadaná jen číselná hodnota a né znaky a nebo pro změnu obráceně?"

No pomoci tech regularnich vyrazu! Leo
RuThaN
Profil
Leo: Omlouvám se ale nějak mi to hlava nebere a nechápu..
Leo
Profil
http://interval.cz/clanek.asp?article=3758

http://interval.cz/clanek.asp?article=3776

Leo
RuThaN
Profil
Dík moc, konečně se chytám..
RuThaN
Profil
Tak jestli sem správně proved a pochopit tak se dá omezit až potom co uživatel zadá špatně, čili špatný výraz lze nadatlovat, ale já vypíšu chybu a nepustim ho dál.. Ale to, že ten input, prostě to písmenko místo čísla při bušení do klávesnice brát nebude se asi udělat nedá..
Hodilo by se něco ve stylu onchange neni číslo, tak to ani nezobrazuj.. V Delphi nebo C je to na jeden řádek..
Leo
Profil
Samozrejme lze testovat uz pri psani - samozrejme JavaScriptem - kdy se odchytava udalost onkeypress (tusim, nutno vyzkouset, mozna onkeyup, kazdy prohlizec ma sve dny :-) a vraci se return false kdyz je to neplatna klavesa - ale opet vrele NEDPORORUCUJU. Uzivatele to zmate a splete, otazka je, co to bude delat kdyz text vlozi ze schranky, atd... Pokud chcete osetrovat uz pri psani do policka, pak jen pomocnou znackou nebo zmenou barvy textu pokud je momentalni tvar vstupu spatne... Kazpopadne to MUSITE testovat jeste jednou na SERVERU. Leo
RuThaN
Profil
No na tohle si ještě nechám zajít chuť, teda pokuď to někdo nemá hotový a nevloží to sem..
Leo
Profil
"No na tohle si ještě nechám zajít chuť, teda pokuď to někdo nemá hotový a nevloží to sem.."

To by pak mlsal kazdej :-) Bez prace nejsou kolace, Leo
RuThaN
Profil
No od už se určitě někdo našel a někam to dal, jen to najít.
Já bych se taky rád podělil, ale kdyby bylo čím.. Jediný co snad stojí na řeč.. to odesílání mailu s přílohou v pomocí php v předem daný datum.
Myslim, že je to jako se všim 99% věcí už tu někdy bylo, takže příjít s něčim novym a dobrym je úkol pro génia..
« 1 2 »
Toto téma je uzamčeno. Odpověď nelze zaslat.