Avatar billede basse55 Nybegynder
15. januar 2006 - 01:23 Der er 11 kommentarer

mærkeligt problem med form

Hej,

Jeg har et problem med en formular som jeg bare ikke fatter noget som helst af.

Jeg har oprettet følgende form:

<form action="form.html">
<input name="text" value="test">
<input type="submit">
</form>

Dette virker fint hvis jeg tester det lokalt.

Men når jeg oploader til min server går det galt.
Teksten vil default være "test", hvilket virker fint.

Hvis jeg derimod ændre dette til "nc " eller "perl " får jeg en 404 fejl!! Der er ingen forskel på om det er med store eller små bogstaver.
Desuden opstår fejlen ikke hvis jeg sletter name="" tagget.

Er der nogen der har en ide om hvad der kan være galt? Er lige præcis disse ord reserveret på en eller anden måde? Eller hvad kan det være?

Det er blot et tilfælde at jeg har fundet de 2 ord, så der kan selvfølgelig godt være flere...

formen kan ses online her: http://www.basses.dk/test/form.html

Mvh. Sebastian

P.S.: det er selvfølgelig først efter tryk på submit knappen at problemet opstår.
Avatar billede thesurfer Nybegynder
15. januar 2006 - 01:30 #1
Det virker fint, hvis du fjerner mellemrummet...

/theSurfer
Avatar billede basse55 Nybegynder
15. januar 2006 - 01:35 #2
ja det ved jeg godt :-), det var netop derfor jeg skrev det i "".
problemet er at jeg skal bruge det til noget bruger input, og så er det jo ikke smart at man ikke skal skrive en teskt der indeholder "nc " eller "perl "
Avatar billede thesurfer Nybegynder
15. januar 2006 - 01:45 #3
Prøv at erstatte " " med "%20" i din (PHP ?) kode, før du bruger teksten.. det kan godt være, at det er der problemet ligger..

/theSurfer
Avatar billede basse55 Nybegynder
15. januar 2006 - 02:13 #4
Det dur ikke, da jeg jo aldrig når frem til den rigtige side hvor jeg skal bruge inputtet.

Hvis %20 skal tilføjes skal det gøres iden der trykkes på knappen, og det kan man jo ikke være sikker på at brugeren gør.

Der findes muligvis en eller anden smart måde at gøre det på, men jeg har ingen ide om hvordan.
Avatar billede thesurfer Nybegynder
15. januar 2006 - 12:57 #5
Jeg tror at det ville hjælpe, hvis du fortalte hvad formålet var..

/theSurfer
Avatar billede thesurfer Nybegynder
15. januar 2006 - 13:12 #6
Du kan prøve med noget java script:

<script type="text/JavaScript" language="JavaScript">
function fixtxt(t)
{
t.value = t.value.replace(" ", "%20");
}
</script>

<form action="form.html" onsubmit="return fixtxt(this.text)">
<input name="text" value="nc ">
<input type="submit">
</form>

Jeg kan se, at det tilføjer "%25" før "20" (som er mellemrum)..

En dårlig ting er, at det ikke vil virke, hvis brugeren har slået JavaScript fra..

Men det er også lidt tåbeligt, at bruge serverside scriptsprog (JavaScript), når du har adgang til serverside scriptsprog (PHP)...! :-)


Så jeg synes at du skal lave "form.html" om til "form.php" (ret det også i FORM-tag'et), og lave erstatningen via PHP.

Har det noget med filadgang at gøre..?

/theSurfer
Avatar billede basse55 Nybegynder
15. januar 2006 - 18:02 #7
Det oprindelige script er selvfølgelig også lavet i php, grunden til at jeg har lagt det i en html fil er blot for at sikre mig at det ikke er min php kode der fucker op.

Jeg har nu lavet det om til en php fil og tilføjet lidt mere så det ligner det oprindelige, desuden har jeg tilføjet dit java script:

<script type="text/JavaScript" language="JavaScript">
function fixtxt(t)
{
t.value = t.value.replace(" ", "%20");
}
</script>

<?php echo "text: " . $_POST['text']; ?>

<form method="POST" name="form1" action="form.php" onsubmit="return fixtxt(this.text)">
<input name="text" value="nc ">
<input type="submit">
</form>

Siden kan findes her: http://www.basses.dk/test/form.php

Med javascriptet så virker det faktisk, men som du selv nævner så er det jo en meget fusket måde med flere ulemper, og det kan ikke passe at det ikke kan gøres smartere.

Har du evt en ide til at gøre det samme via php?
Min ide er evt at gøre følgende:
$text = str_replace(" ", "%20", $_POST['text']);

Men som jeg ser det, så opstår problemet når formen sendes, og jeg når derfor aldrig til en ny side hvor jeg kan få fat i $_POST['text'].
Avatar billede basse55 Nybegynder
15. januar 2006 - 18:18 #8
Jeg kan da lige nævne at jeg bruger formen i mit CMS system, hvor jeg opdagede fejlen da jeg skulle skrive om mit tidligre arbejde hos TNC Connect, hvor "NC " jo indgår :(

Det fulde script består selvfølgelig af flere input felter både:
<textarea></textarea> og <input value="">

Og indeholder blot ét af disse felter "nc " eller "perl " (måske flere) går det galt.

Jeg mindes dog at jeg tidligere har skrevet tekster der indeholdt disse "forbudte" ord uden at der opstod problemer. Kan det være noget med opsætningen af php der er blevet ændret?
Avatar billede thesurfer Nybegynder
15. januar 2006 - 20:48 #9
Problemet er ikke "nc " eller "perl".. problemet er mellerummet.. dvs, "test " skulle også gerne fejle..

Hvis du sender formen til en php side, skulle du gerne kunne opsnappe værdien, og behandle den, inden den bliver brugt igen i f.eks. en form..

Eksempel:
<?php $text = str_replace(" ", "%20", $_POST['text']); ?>
Værdien er <?php echo $text ?> ...

Da jeg normalt ikke programmerer i PHP, kan det godt være at der er fejl i min kode :-)


Men igen:
Hvordan bruges den værdi, der sendes via formen..? Er det filadgang, database, hvad?

/theSurfer
Avatar billede polle007 Nybegynder
15. januar 2006 - 23:05 #10
En teori kunne være, at det er din redirection til 404 som skal rettes lidt til
Umiddelbart har php ikke noget med problemet at gøre
Avatar billede basse55 Nybegynder
16. januar 2006 - 00:06 #11
theSurfer: Problemet er ikke "nc " eller "perl".. problemet er mellerummet.. dvs, "test " skulle også gerne fejle..

Jo det er netop det der ER problemet, hvis man i den første side jeg linkede til (http://www.basses.dk/test/form.html) prøver at indtaste "test " eller noget helt andet så opstår fejlen IKKE! Kun ved sætninger der indeholder de to nævnte tekst strenge. Det er det der virker meget mærkeligt...


polle007: En teori kunne være, at det er din redirection til 404 som skal rettes lidt til.

Jeg er ikke helt med på hvad du mener. Tænker du på .htaccess? Jeg har forsøgt at fjerne denne fil men det ændrede ikke noget. Kan det være en opsætning på selve serveren?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester