Aktív témák

  • fordfairlane

    veterán

    válasz Bici #1480 üzenetére

    Mutatok egy egymezős skeleton modellt, én így csinálnám:

    <?
    if($_SERVER["REQUEST_METHOD"] == "POST") {
    if(!$_POST["nev"]) {
    $error["nev"] = "A név üres";
    } else {
    $res = mysql_query('SELECT COUNT(*) FROM felhasznalok WHERE nev="'.mysql_escape_string($_POST["nev"]).'"');
    if($res && mysql_num_rows($res)) {
    list($no) = mysql_fetch_row($res);
    if($no) $error["nev"] = "Ez a felhasználónév már foglalt!";
    }
    }
    // további ellenőrzések

    if(!$error) {
    $query = 'INSERT INTO felhasznalok SET ';
    $query .= 'nev="'.mysql_escape_string($_POST["nev"].'"';
    // további mezők queryhez fűzése

    mysql_query($query);
    header("Location:".$_SERVER["SCRIPT_NAME"]."?ok=1");
    exit;
    // ez az átirányítás azért kell, hogyha az oké üzenetre refresht nyom,
    // ne kapjon hibaüzenetet, miszerint ez a felhasználónév már foglalt.
    // felhasználók lassú reagálású oldalnál hajlamosak refreshelni
    }
    } elseif($_GET["ok"]) {
    include("fejlec.php");
    ?><p>Minden oké</p><?
    include("lablec.php");
    } else {
    include("fejlec.php");
    ?>
    <form method="post">
    <input type="text" name="nev" value="<?=htmlspecialchars($_POST["nev"])?>" /> <?=$error["nev"]?><br />
    <input type="submit" value="Regisztráció" />
    </form>
    <?
    include("lablec.php");
    }
    ?>

    Remélem nem maradt ki semmi, nem próbáltam ki. 19 mezőnél persze nem biztos, hogy célszerű így ömlesztve, de a vezérlési szerkezetet ebben a formában szoktam csinálni. Így egy oldalban benne van:

    1. form kirakása, hiba esetén a mező tartalma megmarad, és a mező mellett megjelenik a hibaüzenet.
    2. Ha minden oké, kirakja az oké szöveget, meg ami kell.
    3. refresh esetén nem produkál mást, mint első betöltődésnél, ez a sikeres submit után okozhat problémát, a felhasználó megzavarodhat a nem várt üzenetektől.

    Fejlécet és láblécet külön fájlból szedi be, ez ízlés szerint változtatható (include("fejlec.php") és include("lablec.php"));

Aktív témák