Autor Zpráva
SirT
Profil
Zdravím všechny,

nejsem si úplně jistý, jestli toto vlákno sedí do PHP a nebo je problém v JS, každopádně je funkce začleněna do PHP, takže snad jsem píšu správně.

Mám problém s češtinou v alertu, ale jen v IE, ve FF apod. jede vše jak má - háčky, čárky..vše je ok. Jedná se o alerty, které informují o případném nevyplnění či špatném vyplnění formuláře, při pokusu jej odeslat. Jsem začátečníkem v PHP, takže mě nenapadá jak problem fixnout. Zkoušel jsem meta tag, ale ten je zbytečný.

Nesetkal se s tímto problémem už někdo? Popř. nevíte jak problem vyřešit?

Předem díky moc za všechny rady. Pro jistotu zasílám dannou část kodu, pokud bude potřeba něco dalšího pro lepší přehled, doplním.

// Kontrola zda je správně vyplněný e-mail

function kontrola_emailu ($mail) 
  {
    return ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$",$mail);
  }

if (!kontrola_emailu($_POST["email"])) { ?> 
        <script> alert('Vaše e-mailova adresa nebyla zadána v požadovaném formátu!');javascript:self.history.back();</script> 

<?php ;}
   
    else {

Moderátor panther: Alert nemá s PHP nic společného, přesouvám.
panther
Profil
SirT:
Přesunul jsem to do JS, ale na 99% budeš mít rozhašené kódování. Možná lépe, kdybys dodal odkaz na stránku, kde se tak děje.
SirT
Profil
Ok, zde posílám odkaz na stránku.
Witiko
Profil
SirT:
Obávám se, že nejsem schopný chybu reprodukovat. V IE 9, 8, 7, Chrome 10, Opeře 11 i Firefoxu 4 vše jede jak má. Až na e-mailová, ale to není chyba v scriptu, nýbrž mezi židlí a monitorem. :-)
panther
Profil
Witiko:
chyba je vidět např. v šestce, kterou jsi ve výčtu IEček zapomněl :-)

SirT:
Deklaruješ někde v send.php kódování. Tipuji, že ne a čekáš, co na to prohlížeč..
Witiko
Profil
panther:
No nezapomněl, jen engine 6tky nemám po ruce a tak jsem to nemohl otestovat. Píšu v čem jsem testoval a nemohl reprodukovat. :-)

Jinak z toho, co je nám ukázáno lze skutečně pouze usuzovat, že nemáš nastavené kódování. Jestliže send.php generuje html kód, pak postačí přidat do navraceného kódu meta tag. Při řešení ajaxem stačí poslat kódování ve formě hlavičky.
Chamurappi
Profil
Reaguji na SirTa:
Vypisuješ tu hlášku před deklarací kódování UTF-8 a nepoužíváš ani BOM. Jelikož se skript zpracovává okamžitě, záleží jen na trpělivosti prohlížeče a rychlosti připojení, jestli se stihne <meta> značce přizpůsobit.

(\.[a-z]{2,3})$
Domény .info neuznáváš?

Jaký je smysl té kontroly? Proč vypisuješ alert a ne obyčejný text, který by se ukázal i lidem bez zapnutého skriptování? JavaScript se hodí spíš na upozorňování před odesláním.


Reaguji na panthera a Witika:
Tipuji, že ne
lze skutečně pouze usuzovat
Z ukázky jde vypozorovat, jak kódování deklaruje.
SirT
Profil
Witiko:
Díky za opravu, nevšiml jsem si :) Testoval jsem to stejně jako ty a ve všech kromě IE je to ok. Ale blbne mi to i v 8.

panther:
Ano mám tam kódování zadeklarované. Zkoušel jsem to s i bez.
joe
Profil
Takhle by asi neměl vypadat správný výpis, co?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  
		<script> alert('Vaše e-mailová adresa nebyla zadána v požadovaném formátu!');javascript:self.history.back();</script> 

 
 
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=diky.php">
</head>
<body></body>
</html>
SirT
Profil
Witiko, panther:
tak jste měli pravdu, měl jsem opravdu chybu v kódování - vloudil se mi tam znak navíc :) Ted' už to frčí jak má! Díky za tipy.

Chamurappi:
co se týče info domén, ty samozřejmě uznávám, ale zapomněl jsem na ně - již jsem to opravil. Díky.

Máš pravdu, že můžu použít pouze text, bez alertu, ale přišlo mi vhodnější využít právě alert, aby uživatel opravdu věděl, že je něco špatně. Říkáš, že se hodí spíše pro upozornění před odesláním, což je víceméně splněno, protože pokud se něco vyplní špatně, tak se to uživatel dozví hned, jakmile chce mail odeslat.
joe
Profil
SirT:
1. Nastuduj si něco o JavaScriptu a k čemu je vhodné ho u formulářů použít - například
2. Znáš správnou strukturu HTML dokumentu? Protože pokud ano, nikdy bys negeneroval něco takového, co jsem poslal v příspěvku číslo #9
3.

Říkáš, že se hodí spíše pro upozornění před odesláním, což je víceméně splněno, protože pokud se něco vyplní špatně, tak se to uživatel dozví hned, jakmile chce mail odeslat.
Od toho je právě ta JavaScriptová validace (tj. validace u klienta - je tedy závislá na JavaScriptu). Ty děláš validaci na serveru, která by na JavaScriptu závislá být neměla. Chápeš ten rozdíl?
Witiko
Profil
V reakci na joa a panthera pro SirTa:
Doporučuji vyřešit kontrolu takto: Na onsubmit událost formuláře se nalepí kontrolní funkce, která pomocí return false; zablokuje odeslání a například právě pomocí alertu oznámí problém při neuznání nějaké položky formuláře.
Pro případ deaktivovaného javascriptu nebo odeslání http žádostí s daty formuláře jinou cestou je moudré mít záložní kontrolu i na straně serveru např. v php scriptu, jemuž jsou data adresována. Případné selhání verifikace přijatých dat je ale v takovém případě vhodné navracet v čistém html bez pomoci scriptu, jelikož ho nejspíše stejnak spatří pouze lidé s deaktivovaným javascriptem.
Chamurappi
Profil
Reaguji na SirTa:
Co se týče přesnosti kontroly e-mailové adresy, viz můj příspěvek ve vlákně povolené speciální znaky v e-mailové adrese.
joe
Profil
Witiko:
Myslím, že já a panther víme, jak na validaci :-) ale zlobit se na tebe nebudem (jinými slovy jsi vlastně napsal to samé co já v #11).
Jinak ti chytřejší validaci neřeší a nechávaj to na ostatních... právě na frameworku.

oznámí problém při neuznání nějaké položky formuláře
Nevím proč, ale tohle se nikomu ve škole nelíbilo. Vždycky tvrdili, že validace se má dělat najednou, a že správně by se v tom alertu mělo objevit, co všechno je špatně. Ale ať si na to každý udělá svůj názor, osobně alert moc nepoužívám a raději nahrazuju nějakým hezčím grafickým řešením.
Witiko
Profil
joe:
Myslím, že já a panther víme, jak na validaci
Proto píšu „pro SirTa“. :-) Reaguji na vás dva a shrnuji to originálnímu přispívateli mírně předžvýkanějším a konktrétnějším způsobem na příkladu.

Nevím proč, ale tohle se nikomu ve škole nelíbilo.
Slovíčkaření. Když jsem říkal „při neuznání nějaké položky formuláře“, měl jsem na mysli „alespoň jedné / jedné či více“. Zda se to nahlásí najednou nebo či vůbec alertem v příspěvku neřeším, takže nevím na co přesně tím reaguješ. Ale určitě je dobré se o tom zmínit. :-)
joe
Profil
Witiko:
Proto píšu ‚pro SirTa‘. :-)
No teda, to jsem vůbec nezaregistroval, tak promiň (taky koukni na ten čas :))

Slovíčkaření.
Né, já tim nenarážel na tebe, spíš jsem tam měl dát normální otázku. Napadlo mě to právě proto, že jsi napsal "nějaké položky"
Polepším se a líp vysvětlim, jak jsem to myslel:

Na formuláři, kde je víc jak jedna povinná položka, takže například tři povinné položky: Jméno, Příjmení, E-mail

Pokud by někdo odeslal prázdný formulář, v alertu by se mělo ukázat, jaké všechny položky nejsou vyplněné = tak by to prý mělo být

X

Pokud by někdo odeslal prázdný formulář, a pokud se objeví hláška "Vyplňte jméno" (nebo podobná) = je to prý špatně.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0