Avatar billede crazy-monkey Nybegynder
17. januar 2009 - 16:29 Der er 14 kommentarer

IE vil ikke submitte form. (method = post)

Vær hilset.
Jeg arbejder på et lille system i HTML/PHP (med MySQL).
Men jeg er stødt på det problem, at en simpel form (bruger post) ikke vil submitte under Internet Explorer. Der er umiddelbart absolut ingen problemer under Firefox eller Safari.
Formen er bygget op som i resten af systemet, men det er kun denne specifikke, der ikke vil submitte.

Det virker ikke som om det er under behandlingen af de indtastede data der er et problem, men allerede når de skal postes.

Koden kan ses her:
http://pastebin.com/f4eec441d
(Der er nok en masse andre fejl, da jeg er temmelig uerfaren, og har lavet en milliard forskellige ændringer frem og tilbage i håb om at få det til at virke).
Avatar billede erikjacobsen Ekspert
17. januar 2009 - 16:40 #1
Er der forskel på reaktionen hvis du trykker på din submit knap, eller hvis du trykker retur i dit tekstfelt?
Avatar billede crazy-monkey Nybegynder
17. januar 2009 - 16:57 #2
Nej, samme reaktion, altså ingen.
Avatar billede erikjacobsen Ekspert
17. januar 2009 - 17:07 #3
Umiddelbart vil jeg tro du tager fejl - uden at have prøvet din kode:

1) I IE vil det virke hvis du trykker på knappen, men ikke hvis du trykker retur
2) I Firefox vil det virke både hvis du trykker på knappen, og hvis du trykker retur

Een af dem overholder sikkert standarden, men vi skal kunne klare begge. Derfor skal man ikke spørge på et felt, der måske og måske ikke er der. Derfor kan du med fordel erstatte

  if(isset($_POST['send']))

med

  if(isset($_POST['passengers']))
Avatar billede crazy-monkey Nybegynder
17. januar 2009 - 18:50 #4
Desværre, gør ingen forskel.

Systemet er prøvet i Firefox under Linux (intet problem), Safari og Firefox på en Mac (intet problem) og i IE6 og 7 på 2 maskiner med henholdsvis XP og Vista.

Det er kun IE der giver problemer, og det virker ikke til at have noget med computerne at gøre.
Avatar billede crazy-monkey Nybegynder
17. januar 2009 - 18:51 #5
Jeg har nu prøvet at tilføje ... <form ... name="blabla">
og senere i dokumentet et link:
<a href="java script:document.blabla.submit();">Submit</a>

Igen virker det perfekt i Firefox, mens IE giver mig fejlen:
"document.blabla er null eller ikke et objekt."
Avatar billede erikjacobsen Ekspert
17. januar 2009 - 20:22 #6
http://n0p.com/860162.php indeholder nu nedenstående kode. Kan du forklare mig hvad der ikke virker - jeg bruger så ikke din database, men det bør være ligemeget.


<html>
<head>
    <link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'].'?table='.$_GET['table'].'&name='.$name; ?>">
Kommer?&nbsp;&nbsp;&nbsp;
<select name="status">
<option value="1">Ja</option>
<option value="2">Nej</option>
</select><br />
Kan k&oslash;re?&nbsp;&nbsp;
<select name="drive">
<option value="2">Nej</option>
<option value="1">Ja</option>
</select><br />
Passagerer:
<input name="passengers" type="text" size="2" value="0"></input>
<br />
<input type="submit" name="send" value="Opdater"></input>
</form>

<?php
if(isset($_POST['send']))
{
  print "Submitted: ".$_POST['passengers']."<br>";
}
?>

</body>
</html>
Avatar billede erikjacobsen Ekspert
17. januar 2009 - 20:54 #7
Iøvrigt forstår jeg heller ikke din SELECT-sætning i starten. Den henter en værdi fra den "første" række, som du senere opdaterer. Er der kun een række i tabellen? Og hvis der er, hvorfor så hente navnet?
Avatar billede crazy-monkey Nybegynder
17. januar 2009 - 21:11 #8
Pudsigt.
Koden du har uploadet virker helt fint.
Når jeg trykker Submit opdaterer den og tallet står forneden.
Umiddelbart er det jo stort set samme kode.

Den henter en kamp (table) (systemet er til en ishockey klub). I hver kamp er en række navne (name) der har 3 værdier:
Om de kommer, om de kører i bil, og hvor mange de så kan have med.
Hvilken kamp og hvem det drejer sig om henter den med get fra adressen. (Disse to kommer fra en anden side, dette er kun en brøkdel af systmet.)
Avatar billede crazy-monkey Nybegynder
17. januar 2009 - 21:17 #9
Jeg har endelig fundet kilden til problemet:
echo "Opdatering af status for <b>".$name."</b><br";

Det sidste <br>-tag var ikke lukket.
Sikke en idiotisk fejl.

Men mange tusind tak for din indsats erikjacobsen.
Det er stærkt værdsat.
Avatar billede erikjacobsen Ekspert
17. januar 2009 - 21:20 #10
Nå ja - det kunne jo være derfor. Men stadigvæk giver din select ingen mening.

Og så er sikkerheden i dit script ikke eksisterende - du lægger det vel ikke ud til fri afbenyttelse.
Avatar billede crazy-monkey Nybegynder
17. januar 2009 - 21:37 #11
Nej, nu du siger det er der ingen grund til den henter noget fra databasen, de bliver ikke brugt der alligevel. Det blev bare brugt tidligere og havde ikke fået fjernet det.

Nej, jeg tror næppe der er nogen form for sikkerhed. Det er det første jeg nogensinde laver i PHP/MySQL, så man kan roligt kalde mig uerfaren.

Hvis ud har nogle enkelte kritiske sikkerhedstips jeg kan få med på vejen, så kom endelig med dem.
Alt kan bruges. :)
Avatar billede erikjacobsen Ekspert
17. januar 2009 - 21:40 #12
Alt hvad der kommer fra brugeren, inkl url ($_GET) og ($_FORM) og cookies, skal betragtes med stor mistro, og kun anvendes når man er sikker på det er i orden. Der skal fx ringe en stor alarmklokke, når en værdi bruges direkte i en SQL-sætning, som du gør med tabelnavnet - en lækkerbisken for hackere.
Avatar billede crazy-monkey Nybegynder
17. januar 2009 - 21:44 #13
Hmm, det kan der være noget om.

Men jeg skal jo på en eller anden måde fortælle side2.php hvilken kamp/spiller jeg har valgt i side1.php.

Umiddelbart kender jeg ikke til andre måder?
Avatar billede erikjacobsen Ekspert
17. januar 2009 - 21:53 #14
Du har en tabel for hver kamp?? Det er prisværdigt at du eksperimenterer, men der er vist meget du skal lære endnu.
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