webForumDet fria alternativet

Skickar bla&bla i form (post)

16 svar · 509 visningar · startad av mall

mallMedlem sedan jan. 2001135 inlägg
#1

Nar jag forsoket echo det pa naste sida bryts strangen innan &.

WHY!!!???!!!

silfverMedlem sedan apr. 200312 679 inlägg
#2

Ett tips är att visa lite kod. :) Inom [php]-taggen.

mallMedlem sedan jan. 2001135 inlägg
#3
<input type="hidden" name="mail_text_send" value="mail&tests">

skriver ut "mail" vid

echo $mail_text_send;
PeddaMedlem sedan juni 20006 032 inlägg
#4

Beror nog på hur register globals är satt i php.ini

Testa detta om du skickar med GET

echo $_GET['mail_text_send'];

eller detta om du skickar med POST

echo $_POST['mail_text_send'];
dectgapMedlem sedan sep. 20021 655 inlägg
#5

Testa istället med

<input type="hidden" name="mail_text_send" value="mail&amp;amp;tests">
PeddaMedlem sedan juni 20006 032 inlägg
#6

Ah, nu såg jag vad du menade med att det bryts vid &.

Ber om ursäkt. :r

mallMedlem sedan jan. 2001135 inlägg
#7
echo $_GET['mail_text_send'];
echo $_POST['mail_text_send'];

funkade inte :(

any other ideas?

PeddaMedlem sedan juni 20006 032 inlägg
#8

Har du testat det som dectgap skrev?

mallMedlem sedan jan. 2001135 inlägg
#9
value="mail&amp;tests">

det gar ej att gora sa. Jag hanmtar string fran en DB och mailar den senare.

mallMedlem sedan jan. 2001135 inlägg
#10

ARE DET INGEN SAM KAN DET???

PeddaMedlem sedan juni 20006 032 inlägg
#11

Vet inte hur du har gjort när du har sparat till databasen, men ta en titt på htmlspecialchars och htmlentities

SnakesMedlem sedan okt. 2004392 inlägg
#12

dectgap skrev:

Testa istället med

<input type="hidden" name="mail_text_send" value="mail&amp;amp;tests">

Jo, jag satt och fundera på det och då kom jag på att det fortfarande finns ett &, dvs texten bryts vid mail ändå..
Det betyder också att htmlentities och htmlspecialchars skulle bara göra samma sak som att lägga &amp;.

Jag tipsar att du ersätter & med ett annat tecken inann du skriver ut den på value, och sedan när du tar emot så ersätter du igen...

Ville bara säga att den inte bryts, utan efter &:et så tror den att tests är en ny input.... alltså om man skulle istället för POST skriva GET i formen, så skulle det se ut så här

index.php?mail_text_send=mail&tests

Vad menas med det ovan? Att mail_text_send är lika med mail och att tests är ett helt nytt värde att ta info från!
Alltså du behöver bara ersätta alla & inte dem andra tecknen!
Japp, det var i stort sätt allt jag hade att säga....

PeeerMedlem sedan mars 20025 907 inlägg
#13

mall skrev:

ARE DET INGEN SAM KAN DET???

VARFÖR SKRIVER DU I VERSALER????? Du får gärna vänta lite mer än 29 minuter innan du bumpar tråden.

Snakes skrev:

Jo jag satt och fundera på det och då kom det så att & finns i fortfarande, dvs texten bryts vid mail ändå..
Det betyder också att htmlentities och htmlspecialchars skulle bara göra samma sak som att lägga &amp;.

Que? Varför hålla på och krångla till det med att byta ut tecken mot andra tecken, när det finns en färdig funktion (htmlentities()) för att escapa farliga htmltecken? Dvs gör som dectgap och Pedda föreslår och kör strängen genom funktionen ovan.

MatteMedlem sedan aug. 20002 975 inlägg
#14

Som flera påpekat är det en mycket god vana att köra htmlentities() på alla VÄRDEN man lägger in i ett formulär.
Begränsar du värdet med enkelfnuttar bör du dessutom köra htmlentities med ENT_QUOTES.

När du sedan postar formuläret kommer dina specialtecken att göras om till vanliga tecken, &amp; kommer alltså att bli & i skriptet som tar emot formuläret.

SnakesMedlem sedan okt. 2004392 inlägg
#15

Peeer skrev:

Snakes skrev:

Jo jag satt och fundera på det och då kom det så att & finns i fortfarande, dvs texten bryts vid mail ändå..
Det betyder också att htmlentities och htmlspecialchars skulle bara göra samma sak som att lägga &amp;.

Que? Varför hålla på och krångla till det med att byta ut tecken mot andra tecken, när det finns en färdig funktion (htmlentities()) för att escapa farliga htmltecken? Dvs gör som dectgap och Pedda föreslår och kör strängen genom funktionen ovan.

1.

Snakes skrev:

Alltså du behöver bara ersätta alla & inte dem andra tecknen!

2.

Snakes skrev:

index.php?mail_text_send=mail&tests

Peeer jag menade inte att han skuller ersätta alla tecknen utan jag menade att han skulle ersätta alla & bara. Jo, varför förklarar jag i inlägget ovan. Men som sagt: jag kan ha fel, men det förklarar åtminstone varför den bryts vid &!

Läs om vad jag skrev är du snäll!

MatteMedlem sedan aug. 20002 975 inlägg
#16

Ska du lägga på värdet på en länk, kör det då först genom urlencode.

PeeerMedlem sedan mars 20025 907 inlägg
#17

Snakes skrev:

alltså om man skulle istället för POST skriva GET i formen, så skulle det se ut så här

index.php?mail_text_send=mail&tests

Nej, såhär såg min url ut när jag testade 'index.php?mail_text_send=mail%26tests%3Dgoff'
Dvs ampersand-tecknet har blivit urlencodat till %26

Snakes skrev:

Vad menas med det ovan? Att mail_text_send är lika med mail och att tests är ett helt nytt värde att ta info från!
Alltså du behöver bara ersätta alla & inte dem andra tecknen!
Japp, det var i stort sätt allt jag hade att säga....

Så är det inte! Prova följande kod

<form action="?" method="post">
<input type="hidden" name="mail_text_send" value="mail&tests=goff">
<input type="submit">
</form>
<?php
print_r($_POST);
?>

Som du ser kommer $_POST (efter att formuläret submittats) endast innehålla ett index, dvs 'mail_text_send' och det kommer ha värdet 'mail&tests=goff'

136 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)