» »

Odstranitev narekovajev pri posiljanju maila v PHP?

Odstranitev narekovajev pri posiljanju maila v PHP?

poweroff ::

V HTML formo v textarea vpisem tekst, ki se potem poslje po mailu.

OK, ampak ce vpisem tole:

test "krneki"

(se pravi uporabim narekovaje), potem po mailu dobim tole:

test \"krneki\"

Mail posiljam kot "Content-Type: text/html; charset=windows-1250"

Kako to odstraniti?

markz ::

Zivjo...

V php fajlu, preden posljes mail moras popravit par znakov...
Ce posiljas mail kot HTML je najboljse, da te znake zamenjas z html entitetami...
se pravi " z " ...

to se najboljse, v enem koraku v phpju naredi takole:
naredis array z zamenjavami (lahko jih je poljubno)
npr. : $trans = array('\\"' => '"', '<' => '<', '>' => '>') in podobno...

potem pa svojo textarea variablo ($mailVsebina) posljes skozi funkcijo strtr()
$mailVsebina = strtr($mailVsebina, $trans);

in to je to...
na ta nacin lahko zamenjas tudi nove vrstice z <BR> in ostalim, kar ti pade na pamet...

markz

poweroff ::

Hmm, problem je v temle - dovoljujem da uporabnik vpiše par HTML ukazov.

Torej ne morem kar zamenjati < z & lt... poleg tega se je pojavil se dodaten problem: kaj če uporabnik vpise \, potem po mailu dobim \.
Ostalo bi se nekako resil, tole pa mi ne gre: - da user vpise
<
>
\

Dobim tole:
< br >
\\

Kakšna pomoč?

markz ::

Hja... zanimiv problem...

potem pa pozabi na tisti nacin, ki sem ti ga povedal prej, pa uporabi samo funkcijo stripslashes() ...

$text = stripslashes($text) ---> \" bo " \' bo ' in \\ bo \

markz

darh ::

Matthai: ce se ces znebit HTML tagov uporabi:
string strip_tags ( string str [, string allowable_tags])

uporabiš pa tole takole:
$string = strip_tags($string, '<a><b><i><u>');

če pa nočeš da ti zbriše tage, ampak ti jih pokaže, pa uporabiš:
string htmlentities ( string string [, int quote_style [, string charset]])
Excuses are useless! Results are priceless!

Zgodovina sprememb…

  • spremenil: darh ()

poweroff ::

xbite - to sem že vse naredil in to vem... glej, imam takole:
$MyName = strip_tags($MyName, '');
$MyEmail = strip_tags($MyEmail, '');

$MyEmailBody = str_replace("\n"," < br > \n",$MyEmailBody);

$MyEmailBody = strip_tags($MyEmailBody, ' < b > < i > < u > < br > < p > ');

if (!@mail("$site_email",
"Sporocilo!",
"Vsebina sporočila: $MyEmailBody",
"From: $MyName<$MyEmail>\n"
."Reply-To: $MyEmail\n"
."X-Priority: 2\n"
."Content-Type: text/html; charset=windows-1250")) {

echo "Error";

In evo v čem je problem:
če user v variablo $MyEmailBOdy (v prejšnji formi) napiše " \ ', se to narobe interpretira.

stripslashes ne pomaga!

" in ' znam porihtati, problem je z \, ki postane \\

Problem je tudi tale: kaj če mi user napiše eno formulo:
a + b < 4 - znak < se bo narobe interpretiral. Če pa dam htmlentities, pa izgubim prave ukaze, ko uporabnik da ukaz za bold, itd...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Rabim pomoč pri PHP-ju.

Oddelek: Šola
5693 (530) Stari89
»

Pravilen vpis/izpis iz podatkovne baze

Oddelek: Izdelava spletišč
5754 (641) schtr4jh
»

[php] Knjiga gostov

Oddelek: Izdelava spletišč
293173 (2376) darix
»

[PHP] Kako izvesti neko kodo šele ob kliku

Oddelek: Izdelava spletišč
241927 (1413) krho
»

Htmlentities()

Oddelek: Programiranje
101510 (1369) rc-car

Več podobnih tem