|
| 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
| |
|
|