/ 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
php og forms
Fra : Patrick Petersen


Dato : 22-01-02 16:32

Hej NG
Jeg er lidt ny i php, og jeg skal have lavet en form som sender mig en mail
med de indtastede oplysninger. Det der driller mig er, at jeg gerne vil have
lavet det så folk ikke kan sende alt muligt bras til mig. Jeg har lavet det
så det er opdelt i to filer, kontakt.php og kontakt_valid.php

http://www.rrk.kollegienet.dk/~schmakk/kontakt.phps
http://www.rrk.kollegienet.dk/~schmakk/kontakt_valid.phps

Problemet er nu, at jeg gerne vil have kontakt_valid.php ind i resten af
sidens design, men a' ka' ik hit' u' a' et'! Jeg tænker at det måske skal
omskrives, så validering og andet godt er indeholdt i kontakt.php, men som
sagt, jeg er newbie!



På forhånd tak
//Patrick



 
 
Svenne Krap (22-01-2002)
Kommentar
Fra : Svenne Krap


Dato : 22-01-02 17:26

On Tue, 22 Jan 2002 16:31:33 +0100, "Patrick Petersen"
<schmakk@rrk.kollegienet.dk> wrote:

>Hej NG
>Jeg er lidt ny i php, og jeg skal have lavet en form som sender mig en mail
>med de indtastede oplysninger. Det der driller mig er, at jeg gerne vil have
>lavet det så folk ikke kan sende alt muligt bras til mig. Jeg har lavet det
>så det er opdelt i to filer, kontakt.php og kontakt_valid.php
>
>http://www.rrk.kollegienet.dk/~schmakk/kontakt.phps
>http://www.rrk.kollegienet.dk/~schmakk/kontakt_valid.phps
>
>Problemet er nu, at jeg gerne vil have kontakt_valid.php ind i resten af
>sidens design, men a' ka' ik hit' u' a' et'! Jeg tænker at det måske skal
>omskrives, så validering og andet godt er indeholdt i kontakt.php, men som
>sagt, jeg er newbie!

Det er normalt en fordel, at skille grafik og funktionalitet ad.

For det første vil jeg rose dig for ikke at bruge det skrækkelige
"submit to self" system...

Normalt gør jeg det sådan, at kontakt_valid.php bare opdager fejlene
og kaster dem tilbage til kontakt.php, der så står for at levere
fejlen til brugeren.

Fordelene ved den metode er, at du slipper for at skulle vedligeholde
to ens formularer samt at folk kan trykke "refresh" ligeså tosset de
har lyst til.

Mvh

Svenne
--
Mail usenet@krap.dk - svenne@krap.dk - PGP key id : 0xDF484022
ICQ: 5434480 - http://www.krap.dk - http://www.krap.net
PGP Key http://keys.pgp.dk:11371/pks/lookup?op=get&search=0xDF484022

Jakob Kirkegaard (22-01-2002)
Kommentar
Fra : Jakob Kirkegaard


Dato : 22-01-02 17:37

Tuesday 22 January 2002 17:25 skrev Svenne Krap:
> Det er normalt en fordel, at skille grafik og funktionalitet ad.
>
> For det første vil jeg rose dig for ikke at bruge det skrækkelige
> "submit to self" system...

Det er da ikke mere skrækkeligt end man selv gør det til.

> Normalt gør jeg det sådan, at kontakt_valid.php bare opdager fejlene
> og kaster dem tilbage til kontakt.php, der så står for at levere
> fejlen til brugeren.
> Fordelene ved den metode er, at du slipper for at skulle vedligeholde
> to ens formularer samt at folk kan trykke "refresh" ligeså tosset de
> har lyst til.

Man behøver da ikke opdele i to filer blot for at undgå at brugeren
refresher i vildskab. Og benytter man en form for template system (eks.
fastTemplate) så behøver man ikke vedligeholde mere end en formular.

--
mvh Jakob Kirkegaard

Svenne Krap (22-01-2002)
Kommentar
Fra : Svenne Krap


Dato : 22-01-02 19:27

On Tue, 22 Jan 2002 17:37:21 +0100, Jakob Kirkegaard
<jkir00@kom.auc.dk> wrote:

>Det er da ikke mere skrækkeligt end man selv gør det til.

Det er jeg nu ikke enig i.

>Man behøver da ikke opdele i to filer blot for at undgå at brugeren
>refresher i vildskab. Og benytter man en form for template system (eks.
>fastTemplate) så behøver man ikke vedligeholde mere end en formular.

Nu kender jeg ikke fastTemplate, men hvordan gør de det ?
Ved at fjerne "update"-funktionaliteten forhindrer du ikke brugeren i
at refreshe, men at det skaber unødigt belastning for (især SQL-)
serveren.

Svenne
--
Mail usenet@krap.dk - svenne@krap.dk - PGP key id : 0xDF484022
ICQ: 5434480 - http://www.krap.dk - http://www.krap.net
PGP Key http://keys.pgp.dk:11371/pks/lookup?op=get&search=0xDF484022

Jakob Kirkegaard (24-01-2002)
Kommentar
Fra : Jakob Kirkegaard


Dato : 24-01-02 11:32

Tuesday 22 January 2002 19:27 skrev Svenne Krap:
> Nu kender jeg ikke fastTemplate, men hvordan gør de det ?

FastTemplate er et templating system (surprise :) ), hvor man har
layoutet i en række tpl filer, som eks. kunne indeholde en linje ala

<input type="text" name="{name}" value="{value}">

I dit php script assigner man så værdier til variablerne name og value,
hvorefter FastTemplate parser og printer template filen til browseren.
Systemet er smarte i visse tilfælde - eks. vis man arbejder sammen
nogle designer, som går i panik når de ser en linjes php kode. Ulempen
er at syntaxen kan virke unødigt bøvlet til tider.

> Ved at fjerne "update"-funktionaliteten forhindrer du ikke brugeren i
> at refreshe, men at det skaber unødigt belastning for (især SQL-)
> serveren.

Hvis jeg forstår dig ret, så mener du at man med 1-fils system er
tvunget til at udføre en nyt update/insert til databasen hver gang
brugeren refresher?
Hvis man eks. har en form, hvor submit knappen har name=button, kan
benyttes følgende kode i toppen af siden

if (isset($HTTP_POST_VARS[button])) {
if ($submitted_data_valid) {
mysql_query("INSERT....");
header("location:der_hvor_man_skal_hen_efter_succes_submit");
} else
assign og parse form igen med HTTP_POST_VARS samt fejl meddelelse.
} else {
assign og parse form uden data
}

Måske tager jeg fejl, men medminder brugeren virkelig ønsker at
submitte 2 forms, kan jeg ikke se hvorledes problemet opstår.

--
mvh Jakob Kirkegaard

Patrick Petersen (22-01-2002)
Kommentar
Fra : Patrick Petersen


Dato : 22-01-02 17:49


"Svenne Krap" <usenet@krap.dk> wrote in message
news:6b4r4uom6li8e1ftb5iie1vhnk2ldtcnj2@4ax.com...
> On Tue, 22 Jan 2002 16:31:33 +0100, "Patrick Petersen"
> <schmakk@rrk.kollegienet.dk> wrote:
>
> >Hej NG
> >Jeg er lidt ny i php, og jeg skal have lavet en form som sender mig en
mail
> >med de indtastede oplysninger. Det der driller mig er, at jeg gerne vil
have
> >lavet det så folk ikke kan sende alt muligt bras til mig. Jeg har lavet
det
> >så det er opdelt i to filer, kontakt.php og kontakt_valid.php
> >
> >http://www.rrk.kollegienet.dk/~schmakk/kontakt.phps
> >http://www.rrk.kollegienet.dk/~schmakk/kontakt_valid.phps
> >
> >Problemet er nu, at jeg gerne vil have kontakt_valid.php ind i resten af
> >sidens design, men a' ka' ik hit' u' a' et'! Jeg tænker at det måske skal
> >omskrives, så validering og andet godt er indeholdt i kontakt.php, men
som
> >sagt, jeg er newbie!

> Det er normalt en fordel, at skille grafik og funktionalitet ad.

Jeg er så småt begyndt at lave små includes til de forskellige ting man
bruger igen og igen, samt at prøve at kigge lidt på functions.. Og så skal
jeg ha lavet det om, så det ikke længere er index.php der indeholder alt
design, men derimod t hver enkelt fil indeholder den info den skal, og så
includer design osv udefra.

> For det første vil jeg rose dig for ikke at bruge det skrækkelige
> "submit to self" system...

whoohoo!

> Normalt gør jeg det sådan, at kontakt_valid.php bare opdager fejlene
> og kaster dem tilbage til kontakt.php, der så står for at levere
> fejlen til brugeren.

Det lyder logisk nok, men jeg tror ikke helt jeg kan gennemskue det i
praksis.. Kan du give eksempel, evt. ved at kradse lidt i min (slam)kode?

> Fordelene ved den metode er, at du slipper for at skulle vedligeholde
> to ens formularer samt at folk kan trykke "refresh" ligeså tosset de
> har lyst til.

Lyder godt

> Mvh
>
> Svenne
> --
> Mail usenet@krap.dk - svenne@krap.dk - PGP key id : 0xDF484022
> ICQ: 5434480 - http://www.krap.dk - http://www.krap.net
> PGP Key http://keys.pgp.dk:11371/pks/lookup?op=get&search=0xDF484022



Anders Johannsen (22-01-2002)
Kommentar
Fra : Anders Johannsen


Dato : 22-01-02 20:39

"Svenne Krap" <usenet@krap.dk> wrote in message
news:6b4r4uom6li8e1ftb5iie1vhnk2ldtcnj2@4ax.com...

> For det første vil jeg rose dig for ikke at bruge det skrækkelige
> "submit to self" system...

.... eller skælde dig ud for ikke at bruge det. Hverken det ene eller
det andet er i sig selv tegn på dårlig stil. Benytter man f.eks. en
objektorienteret tilgangsvinkel til formularer vil man givetvis finde
"det skrækkelige" system ganske tiltalende.

/A



Svenne Krap (22-01-2002)
Kommentar
Fra : Svenne Krap


Dato : 22-01-02 22:13

On Tue, 22 Jan 2002 20:39:04 +0100, "Anders Johannsen"
<anders@ignition.dk> wrote:

>... eller skælde dig ud for ikke at bruge det. Hverken det ene eller
>det andet er i sig selv tegn på dårlig stil. Benytter man f.eks. en
>objektorienteret tilgangsvinkel til formularer vil man givetvis finde
>"det skrækkelige" system ganske tiltalende.

Huh ? nu er jeg selv en enorm fortaler for objekt orientering (for det
ikke skal være løgn er jeg påbegyndt en bog bl.a. om objekt-orienteret
PHP-programmering).

Jeg kan ikke se, hvad OO har med det at gøre, du er velkommen til at
uddybe :)

Svenne
--
Mail usenet@krap.dk - svenne@krap.dk - PGP key id : 0xDF484022
ICQ: 5434480 - http://www.krap.dk - http://www.krap.net
PGP Key http://keys.pgp.dk:11371/pks/lookup?op=get&search=0xDF484022

Anders Johannsen (23-01-2002)
Kommentar
Fra : Anders Johannsen


Dato : 23-01-02 10:45

"Svenne Krap" <usenet@krap.dk> wrote in message
news:ialr4u0i0v6af2pja2fuqa5is1tn0bghs8@4ax.com...

> Jeg kan ikke se, hvad OO har med det at gøre, du er velkommen til at
> uddybe :)

At opfatte en formular og dens elementer som objekter er vel retfærdiggjort
af f.eks. DOM.
Derudover har det en række fordele for webprogrammøren:

* Seperation af en formulars data og præsentation
* Sikker serverside validering
* Nyttige abstraktioner som '$form->submitted' og '$form->valid'
* Mulighed for at hente og gemme formdefinitionen i sproguafhængigt XML
* Mulighed for gratis clientside validering
* Mulighed for generering af SQL forespørgsler
* Mulighed for generering af HTML

Alt i alt giver det mere effektiv og kompakt kode med færre fejl. Der findes
flere forskellige implementationer
(bl.a. i PEAR) , som understøtter ovenstående i større eller mindre grad.

Nedenstående eksempel er fra en ganske hæderlig implementation i PHP (ikke
min egen):
<?php

$def = array('caption' => new FormText ('Sidens titel',
                array('match' => '/^[a-zA-Z ]{5,20}$/')),
    'type' => new FormRadio ('Påkrævet brugerniveau',
                array('value' => 'user'),
                array('none' => 'Intet',
                   'user' => 'Registreret bruger',
                   'admin' => 'Administrator')),
    'menu' => new FormCheckbox('Synlig i menu'),
    'template' => new FormText ('Skabelon'),
    'save' => new FormSubmit ('Gem'));

$form = new Form('page', $def);

if ($form->submitted && $form->valid) {

print_r($form->getSubmitValues());

}

echo $form->toHtmlTable();

?>




Svenne Krap (23-01-2002)
Kommentar
Fra : Svenne Krap


Dato : 23-01-02 19:26

On Wed, 23 Jan 2002 10:45:00 +0100, "Anders Johannsen"
<anders@johannsen.com> wrote:


>At opfatte en formular og dens elementer som objekter er vel retfærdiggjort
>af f.eks. DOM.

Enig

>Derudover har det en række fordele for webprogrammøren:
>
> * Seperation af en formulars data og præsentation
> * Sikker serverside validering

Ja, måske (mht. validering)

> * Nyttige abstraktioner som '$form->submitted' og '$form->valid'

Ja, måske.

> * Mulighed for at hente og gemme formdefinitionen i sproguafhængigt XML
> * Mulighed for gratis clientside validering
> * Mulighed for generering af SQL forespørgsler
> * Mulighed for generering af HTML

Måske.

>Alt i alt giver det mere effektiv og kompakt kode med færre fejl. Der findes
>flere forskellige implementationer
>(bl.a. i PEAR) , som understøtter ovenstående i større eller mindre grad.

Personligt har jeg valgt at bygge en meget avanceret dataklasse, der
netop varetager ovenstående punkter. Dog mener jeg ikke nødvendigvis,
at det har noget med templating at gøre (helst ikke IMHO da GUI og
business logic gerne skal være to seperate lag).

><?php
>
>$def = array('caption' => new FormText ('Sidens titel',
>                array('match' => '/^[a-zA-Z ]{5,20}$/')),
>    'type' => new FormRadio ('Påkrævet brugerniveau',
>                array('value' => 'user'),
>                array('none' => 'Intet',
>                   'user' => 'Registreret bruger',
>                   'admin' => 'Administrator')),
>    'menu' => new FormCheckbox('Synlig i menu'),
>    'template' => new FormText ('Skabelon'),
>    'save' => new FormSubmit ('Gem'));
>
>$form = new Form('page', $def);
>
>if ($form->submitted && $form->valid) {
>
> print_r($form->getSubmitValues());
>
>}
>
>echo $form->toHtmlTable();
>
>?>


Det ser meget cute ud. Men det stadig giver nogle problemer.. Hvordan
definerer du et cpr-check (der rent faktisk regner efter om
checksummen er gyldig) eller for den sags skyld ISBN eller what ever.
Hvad med filer, der skal resamples og/eller koverteres til et andet
format ?
Hvad med kontroller, der fetcher en web/ftp/whatever-side pga. ting i
formen ?
Hvad hvis du ønsker et felt med WORM-egenskaber (write once read many)
eller READONLY felter afhængigt af brugerens rettigheder.

Derudover giver det stadig problemer (læs: fx. "the page you are
viewing has expired... pres refresh to contiue...") med back og
forward samt refresh.
Hvis man vil undgå det, kan man selvfølgelig bruge method="get" men så
kan du ikke uploade filer - og brugeren kan rette i samtlige variabler
i formen (ikke at der må være utjekkede variabler in the first place).
Men ideen med et "gratis" javascript tjek er ikke så dum, jeg må lige
bygge en JS-generator ind i min dataklasse :)

Svenne
--
Mail usenet@krap.dk - svenne@krap.dk - PGP key id : 0xDF484022
ICQ: 5434480 - http://www.krap.dk - http://www.krap.net
PGP Key http://keys.pgp.dk:11371/pks/lookup?op=get&search=0xDF484022

Anders Johannsen (24-01-2002)
Kommentar
Fra : Anders Johannsen


Dato : 24-01-02 13:31

> Personligt har jeg valgt at bygge en meget avanceret dataklasse, der
> netop varetager ovenstående punkter. Dog mener jeg ikke nødvendigvis,
> at det har noget med templating at gøre (helst ikke IMHO da GUI og
> business logic gerne skal være to seperate lag).

Jeg er enig, og det opnår man netop med en Formklasse. Din løsning kan meget
vel opnå det samme, men mit formål var blot at påpege, at begge veje er
farbare.

> Det ser meget cute ud. Men det stadig giver nogle problemer.. Hvordan
> definerer du et cpr-check (der rent faktisk regner efter om
> checksummen er gyldig) eller for den sags skyld ISBN eller what ever.

I stedet for et regulært udtryk kunne man angive en callback funktion.

> Hvad med filer, der skal resamples og/eller koverteres til et andet
> format ?
> Hvad med kontroller, der fetcher en web/ftp/whatever-side pga. ting i
> formen ?
> Hvad hvis du ønsker et felt med WORM-egenskaber (write once read many)
> eller READONLY felter afhængigt af brugerens rettigheder.

Det hører vel til den logik der behandler formen .Jeg kan ikke forestille
mig, hvordan det skulle give problemer?

> Men ideen med et "gratis" javascript tjek er ikke så dum, jeg må lige
> bygge en JS-generator ind i min dataklasse :)

God fornøjelse

/A



Søg
Reklame
Statistik
Spørgsmål : 177505
Tips : 31968
Nyheder : 719565
Indlæg : 6408554
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste