klein bugje

Status
Niet open voor verdere reacties.

l.degroot01

Gebruiker
Lid geworden
18 jan 2003
Berichten
161
Hallo, ik ben al enkele dagen van alles en nog wat aan het maken met php om te oefenen voor de aankomende toets.

Ik heb alleen een klein bugje in mijn elektronische dobbelsteen zitten.
Je moet namelijk echt perse op dobbelen! klikken (submit button) en het werkt niet met een simpele ENTER, want dan refreshed hij gewoon de pagina.

Ik had met andere programmaatjes wel dat het werkte met een enter in het formulier, maar kan niet echt vinden waarom daar wel en hier niet.

Anyway dit is de volledige code:

Code:
<!--
Programmer: Leslie de Groot
Date: 06-11-2010
Goal: Electronische Dobbelsteen

**CHANGELOG**
07-11-2010 - Beveiligd tegen meer worpen als 5000.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Dobbelsteen</title>
    </head>
    <body>
        <div align="center">
            <h2>Welkom</h2><br />
            Dit is een electronische dobbelsteen, geprogrammeerd met PHP.<br/>
            U kunt maximaal 5000 worpen gooien, anders kan uw browser vastlopen.<br/>
            <form action="index5.php" method="post">
                <table>
                    <tr>
                        <td>
                            Aantal keer dobbelen:
                        </td>
                        <td>
                            <input type="text" name="aantal" maxlength="4" />
                        </td>
                        <td>
                            <input type="submit" name="submit" value="Dobbelen!" />
                        </td>
                    </tr>
                </table>
            </form>
        </div>
        <?php
        if (isset($_POST["submit"])) {
            print("<hr />");
            if ($_POST["aantal"] > 5000) {
                print("<font color='red'><b>Maximaal aantal keer dobbelen is 5000!</b></font>");
            } else {
                for ($aantal = 1; $aantal <= $_POST["aantal"]; $aantal++) {
                    print("<div align='center'><table border='1'>");
                    print("<tr><td>Worp " . $aantal . " = </td>");
                    print("<td> " . rand(1, 6) . " </td></tr>");
                }
                print("</div></table>");
            }
        }
        ?>
    </body>
</html>
 
PHP:
if (isset($_POST["submit"]))
Dit is geen betrouwbare manier om te controleren of het formulier is verzonden. Niet alle browsers sturen dit in alle gevallen mee. Een betrouwbare manier is:
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST")
 
PHP:
if (isset($_POST["submit"]))
Dit is geen betrouwbare manier om te controleren of het formulier is verzonden. Niet alle browsers sturen dit in alle gevallen mee. Een betrouwbare manier is:
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST")


Precies, zullen we dit topic gelijk bookmarken?

Toen ik een hele tijd terug hier met deze oplossing kwam, wilde men niet geloven dat die knop niet altijd wordt meegestuurd. Zie hier. :thumb:
 
bedankt voor de tip.
Nu werkt het idd perfect.

Wel raar dat ze ons op school die isset aanleren dan:p
 
vanaf php 4.1 is $_POST een erkende superglobal dus het is denk ik gewoon een persoonlijke keuze...

ik zelf gebruik ook de $_POST methode omdat ik alleen maar op php 5.0 servers werk
 
vanaf php 4.1 is $_POST een erkende superglobal dus het is denk ik gewoon een persoonlijke keuze...

ik zelf gebruik ook de $_POST methode omdat ik alleen maar op php 5.0 servers werk

Daar gaat het niet om, $_POST['submit'] bestaat gewoon niet altijd. Daar heeft je PHP-versie helemaal niets mee te maken.
 
Volgensmij doet Firefox het bijv. niet als je een textveld invult en in dat text veld op enter drukt ipv op de knop klikt. En er zijn best veel mensen die op die manier hun form invullen, en voor hen zou een $_POST['submit'] dus niet werken.
 
Correct, is browser-afhankelijk en Firefox is het beste voorbeeld. Volgens mij doet IE het wel altijd, maar ik zou het niet gokken.
 
Zullen we anders gewoon allemaal switchen naar IE? ;) Dan hoeft de TS zich er niet meer druk over te maken...
 
Erik ik vind je een hele aardige kerel maar als je nog een keer zoiets zegt kom ik je persoonlijk opzoeken en je mond met zeep wassen ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan