Avatar billede simplus Nybegynder
29. december 2006 - 18:54 Der er 28 kommentarer og
2 løsninger

POST værdier er tomme ved klik på enter i form

jeg har en hel simpel form:

<form action="makemappe.php" method="POST">
Angiv mappens navn: <input type="text" name="path">
<input type="submit" name="do" value="Opret mappe">
</form>

når man klikker på knappen med musen virker alt fint, men når man bare trykker [enter] så kommer man til makemappe.php som man skal, men den er blank! Hvad skyldes det? Og hvordan kan det rettes?

Mvh Simplus
Avatar billede windcape Praktikant
29. december 2006 - 18:57 #1
Selvfølgelig er den blank.. du kan jo ikke se POST data sådan uden videre.

prøv at tilføje dette i toppen af makemappe.php :-)

<?php
if(isset($_POST['name'])) {
    echo '<pre>';
    var_dump($_POST);
    echo '</pre>';
    die();
}
?>
Avatar billede windcape Praktikant
29. december 2006 - 18:57 #2
<?php
if(isset($_POST['path'])) {
    echo '<pre>';
    var_dump($_POST);
    echo '</pre>';
    die();
}
?>

dette her even ;) det første ville ikke virke.
Avatar billede simplus Nybegynder
29. december 2006 - 19:07 #3
aha, så får jeg dette output:

array(1) {
  ["path"]=>
  string(7) "testmappe"
}

og jeg skrev testmappe i input feltet 'path'
Avatar billede mclemens Nybegynder
29. december 2006 - 19:09 #4
Ved enter ryger dataer fra submit knappen
ikke med, lav et hidden felt istedet som her:

<form action="makemappe.php" method="POST">
Angiv mappens navn: <input type="text" name="path">
<input type="hidden" name="do" value="Opret mappe">
<input type="submit" value="Opret mappe">
</form>

- "Fejlen" er at submit value og name kun kommer med når fokus
lægger på knappen og så enter eller klik med musen :)
Avatar billede mclemens Nybegynder
29. december 2006 - 19:09 #5
Hvis det ikke hjælper er jeg
blank og så afvis svaret :)
Avatar billede windcape Praktikant
29. december 2006 - 19:11 #6
Jeg tror nu det er browser specifikt mclemens, men lyder meget rigtigt :-) Så hvis simplus checker på $_POST['do'] ville scriptet fejle :p

Debugging er godt, Pizza er bedre :D
Avatar billede mclemens Nybegynder
29. december 2006 - 19:11 #7
Simplus husk at svare: http://www.eksperten.dk/spm/752839
Avatar billede mclemens Nybegynder
29. december 2006 - 19:11 #8
Windcape, helt enig :)
Avatar billede simplus Nybegynder
29. december 2006 - 19:18 #9
Ja det løste det, tak for hjælpen begge to. Hvis du også vil have point så læg da et svar windcape :-)

mcclemens, jeg har lagt en kommentar til det spm du linkede til.
Avatar billede mclemens Nybegynder
29. december 2006 - 19:22 #10
Joh, kast lige et svar Windcape.
Debugging er godt og en pizza kan deles :)
Avatar billede mclemens Nybegynder
29. december 2006 - 19:23 #11
IE buggede ved fejlen, FF gjorde ikke
- så det er som du siger browser specifikt.
Avatar billede windcape Praktikant
29. december 2006 - 19:28 #12
Jeg har allerede spist hele min pizza desværre, men vil gerne dele points :-)
Avatar billede mclemens Nybegynder
29. december 2006 - 19:43 #13
Tak for point :)
Avatar billede simplus Nybegynder
29. december 2006 - 19:44 #14
Det var så lidt, jeg takker mange gange for jeres hjælp!
Avatar billede net-base.dk Nybegynder
30. december 2006 - 21:48 #15
En ide ville nok være at teste på om der var postet til siden i stedet for at tjekke om en af felterne i posten var sat.


PHP koden sådan her:
<?php
if( $_SERVER["REQUEST_METHOD"] == "POST" ) {
    echo "<pre>";
    print_r($_POST);
    echo "</pre>";
}
?>

og formen sådan her.
<form action="makemappe.php" method="POST">
Angiv mappens navn: <input type="text" name="path">
<input type="submit" value="Opret mappe">
</form>
Avatar billede olebole Juniormester
02. januar 2007 - 14:52 #16
<ole>

Naturligvis kan man ikke have noget med ID eller NAME, der er 'do'. 'do' er jo et reserveret ord i de fleste programmeringssprog  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
02. januar 2007 - 14:54 #17
- og en submitknap bør kun betragtes som 'successfull', hvis der klikkes på den. Sendes formen på anden vis, må knappen ikke være at finde på serveren  =)
Avatar billede net-base.dk Nybegynder
02. januar 2007 - 15:39 #18
Nej hvis man trykker [ENTER]/[RETURN] i stedet for at trykke på knappen vil den ikke blive sendt med og man kan derfor ikke teste på om den er sat.
Avatar billede olebole Juniormester
02. januar 2007 - 15:41 #19
Det er heller ikke meningen, du skal teste på en knap. At det så er en af disse dårlige slamkodevaner, der har bredt sig, er en anden ting  :)

Lav et hidden-field og test på det ... det er den professionelle løsning  =)
Avatar billede net-base.dk Nybegynder
02. januar 2007 - 15:47 #20
Ja eller teste på om der er blevet postet til siden som jeg har vist i mit eksempel. Efter som siden kun bliver requestet med POST hvis der bliver POSTET til den.
Avatar billede olebole Juniormester
09. januar 2007 - 10:57 #21
net-base.dk >> Ja, men det kan jo være en socket fra en anden server - eller det kan være et eller andet VB-program - der har postet. Din metode siger ikke noget om, hvilken form (hvis nogen), der har postet mod det givne dokument ... blot at der modtages post-data.
Det, man normalt ønsker at teste, er fra hvilken form, requesten er sendt fra ... ikke om den er sendt post eller get  :)

- men vi er helt enige om, at siden kun bliver requested med post, hvis siden bliver requested med post  ;o)
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 11:08 #22
Olebole -> ja det har du self. ret i, havde ikke lige tænkt om at man self også kan lave en Socket forbindelse til serveren, så man bør nok teste på

if( ($_SERVER["REQUEST_METHOD == "POST") || ($_POST["formensnavn"]) ) {

}
Avatar billede olebole Juniormester
09. januar 2007 - 11:17 #23
Nej, hvorfor prøve en masse, der ikke virker, når nu man har så effektive og velafprøvede metoder:

<form ....................>
    <input type="hidden" name="contxt" value="noget">
... ... ... ...
</form>

- og så i PHP'en:

<?php
if (isset($_POST["contxt"]) && $_POST["contxt"]=="noget") {
    // Variablen 'contxt' er medsendt og har som forventet værdien 'noget'
}
?>
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 12:01 #24
Ja det giver det samme resultat i sidste de 2 eksempler...
Avatar billede olebole Juniormester
09. januar 2007 - 12:42 #25
Nej, netop ikke! Slet ikke ...!!  ;o)
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 12:46 #26
Jo det er da netop det de gør, for laver man en socket connection hvor man poster contxt med så opfanger din kode det som at der er postet og begynder at afvikle din kode, og laver man en post til min siden med formensnavn så vil koden også gå igang, det eneste er at det er 2 forskellige måde at teste på om der er blevet postet fra en bestemt form på...
Avatar billede olebole Juniormester
09. januar 2007 - 12:53 #27
Jamen, for det første må formens navn overhovedet ikke være at finde på serveren - hvis ellers standarderne overholdes. For det andet er der pokkers til forskel på de måder, vi spørger på.
Vores koder er komplet forskellige - og deres virkemåde endnu mere  =)
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 13:02 #28
er name en forbudt atribut i <form tacket så ja så dur min måde self ikke. Så ville din kode være den rigtige...
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 13:04 #29
Nej har lige testet det, nej name er ikke tilladt i <form> tacket troede jeg faktisk det var, men må bøje mig og give dig ret...
Avatar billede olebole Juniormester
09. januar 2007 - 13:18 #30
Det er kun 'successful controls', der må medsendes som request-variabler - så uanset om name er en valid attribut på en form, kan formen aldrig blive medsendt  ;o)
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