/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Validering af textarea
Fra : Stig Sørensen


Dato : 26-01-08 09:13

Hej gruppe.

Jeg har en textarea (har snippet lidt kode væk for at holde det enkelt
her):

<textarea name='besked'>
Mærke:
Model:
Årgang:
30/45:
Begrænsninger:</textarea>

Når man ser siden og textarea'et bliver indholdet præsenteret som
ovenstående.
Jeg vil så gerne have en validering på, at der ikke bare bliver
trykket på "Send" knappen.

Jeg prøvede så med:

if ($_POST['besked'] == "X") {
}
else {

Hvor X er utallige kombinationer af textarea'ets indhold, forbundet
med enten <br />, \n og \r. (Mærke\nModel.. osv.)

Men uanset hvad jeg prøvede virkede det ikke.

Så ville jeg prøve at fjerne samtlige mellemrum og linieskift for, at
bedre at kunne validere:

$_POST['besked'] = preg_replace( "/\n/","", $_POST['besked']);
$_POST['besked'] = preg_replace( "/\r/","", $_POST['besked']);

(OT: Hvordan skrives ovenstående på én linie? Jeg fik fejl uanset
hvordan jeg delte det op.)

Og med en if-statement der så sådan her ud:

if ($_POST['besked'] == "Mærke:Model:Årgang:30/45:Begrænsninger:") {
}
else {

Kunne jeg pludselig godt validere indholdet.
Mit problem er så bare nu, at når emailen sendes til mig, så er
$_POST['besked'] så uden linieskift.
Så det dur heller ikke..


Som I kan se har jeg prøvet selv på at løse problemet, før jeg spørger
om hjælp, men nu må jeg kaste kluden i ringen.



Har I et par gode råd til mig?


På forhånd tak og god weekend.

Stig Sørensen

 
 
MooreHojer (26-01-2008)
Kommentar
Fra : MooreHojer


Dato : 26-01-08 19:45

> Og med en if-statement der så sådan her ud:
>
> if ($_POST['besked'] == "Mærke:Model:Årgang:30/45:Begrænsninger:") {
> }
> else {
>
> Kunne jeg pludselig godt validere indholdet.
> Mit problem er så bare nu, at når emailen sendes til mig, så er
> $_POST['besked'] så uden linieskift.
> Så det dur heller ikke..
>

Så vidt jeg har forstået så er indholdet af $_POST['besked'] som det skal
være undtagen linieskift.
I så fald kan du prøve at indsætte linieskift der hvor du ved det skal være.
F.eks. erstat 'Model:' men '(linieskift)Model:'... (linieskift) skal så være
det tegn der i den kontekst vil give et linieskift, alt efter om emailen er
formateret som "normal" email eller html-email.

En anden ide kunne være at dele dit textarea op i 5 textfelter i stedet for:

Mærke: <input type='text' name='maerke' size='20'> <br>
Model: <input type='text' name='model' size='20'> <br>
Årgang: <input type='text' name='aargang' size='20'> <br>
30/45: <input type='text' name='3045' size='20'> <br>
Bemærkninger: <input type='text' name='begraensninger' size='20'> <br>

Det er nemt at teste specifikt på de enkelte værdier om de er udfyldt
korrekt.

Når du laver din mail kan du jo bare selv sætte dem sammen igen

$besked = "Mærke: $_POST['maerke'] (linieskift) Model: $_POST['model']
(linieskift) Årgang: $_POST['aargang'] (linieskift) 30/45: $_POST['3045']
(linieskift) Bemærkninger: $_POST['bemaerkninger'] (linieskift)";


--
MooreHojer



Martin (26-01-2008)
Kommentar
Fra : Martin


Dato : 26-01-08 19:50

Stig Sørensen wrote:
> Så ville jeg prøve at fjerne samtlige mellemrum og linieskift for, at
> bedre at kunne validere:
>
> $_POST['besked'] = preg_replace( "/\n/","", $_POST['besked']);
> $_POST['besked'] = preg_replace( "/\r/","", $_POST['besked']);

Istedet for at lave om på den postede variabel, så kan du assigne en ny
variabel, som du istedet tjekker på

$txt = $_POST['besked'];
$txt = preg_replace( "/\n/","", $txt);
$txt = preg_replace( "/\r/","", $txt);

if($txt....)
else {
mail(...., $_POST['besked'])

Stig Sørensen (26-01-2008)
Kommentar
Fra : Stig Sørensen


Dato : 26-01-08 12:30

On 26 Jan., 19:50, Martin <mar...@aarhof.eu.invalid> wrote:

> > $_POST['besked'] = preg_replace( "/\n/","", $_POST['besked']);
> > $_POST['besked'] = preg_replace( "/\r/","", $_POST['besked']);
>
> Istedet for at lave om på den postede variabel, så kan du assigne en ny
> variabel, som du istedet tjekker på
>
> $txt = $_POST['besked'];
> $txt = preg_replace( "/\n/","", $txt);
> $txt = preg_replace( "/\r/","", $txt);
>
> if($txt....)
> else {
>    mail(...., $_POST['besked'])

Jamen selvfølgelig! Tusind tak for det hurtige svar.
Det virker helt efter hensigten


Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408191
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste