Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: php, keksi tallentumaan lomakkeessa

Sivun loppuun

ottis [23.03.2003 11:59:23]

#

Kuinka saan php:n tallentamaan keksin lomakkeen lähettämisen yhteydessä?

Veltto [23.03.2003 12:27:26]

#

http://www.silmukka.net/php/30

ottis [23.03.2003 12:34:05]

#

Tuo on minulle tuttua, mutta en ole keksinyt kuinka saan keksin tallentumaan kun lähettää lomakkeen, eli painaa lähetä nappulaa.

Antti Laaksonen [23.03.2003 14:19:01]

#

Eikö evästettä voi tallentaa heti aluksi siinä skriptissä, johon lomake kohdistuu?

ottis [23.03.2003 15:37:29]

#

Ehei, koska keksin perusteella tiedetään myöhemmin onko kävijä lähettänyt lomakkeen.

trinit [23.03.2003 15:50:32]

#

Ei sitä evästeen asetusta saa sen submit-painikkeen kautta toimimaan muutakuin asettamalla eväste siinä skriptissä mihin lomakkeen ACTION-määrite osoittaa. Voithan sen tarkistuksen tehdä näinkin:

<?php
    if ($_COOKIE['lomakelahetetty'] == "kylla")
    {
        header("Location: sivu_jolle_ohjataan");
    }

    // Tästä sitten alkaa koodi joka suoritetaan
    // jos lomaketta ei oltu lähetetty vielä
    // ...
    // ...
    // Kun em. koodi on suoritettu asetetaan eväste
    // lomakelahetetty ja sen arvoksi tulee "kylla"

    setcookie("lomakelahetetty", "kylla", time() + 3600);
?>

edit: Tuo koodi siis laitetaan sille sivulle jossa lomakkeen tietoja käsitellään (eli ACTION:n osoittama sivu)

ottis [23.03.2003 15:59:14]

#

Kiitos, mutta kun lomake suoritetaan samalla sivulla josta lähetetään :/

green [23.03.2003 16:01:28]

#

Tee niistä 2 eri tiedostoa?

trinit [23.03.2003 16:13:42]

#

lainaus:

Kiitos, mutta kun lomake suoritetaan samalla sivulla josta lähetetään :/

Onnistuu ihan samalla koodilla, lisäät vain yhden muuttujan ja pari tarkistusta lisää. Katso alla olevaa esimerkki lomaketta (lomake.php):

<?php

    if (isset($_GET['tila']) and $_GET['tila'] == "tarkista")
    {
        // Jos lomake oli jo lähettetty aiemmin
      	if ($_COOKIE['lomakelahetetty'] == "kylla")
        {
            header("Location: sivu_jolle_ohjataan");
        }
        else
        {
            // Tästä sitten alkaa koodi joka suoritetaan
            // jos lomaketta ei oltu lähetetty vielä
            // ...
            // ...
            // ...
            // Kun em. koodi on suoritettu asetetaan eväste
            // lomakelahetetty ja sen arvoksi tulee "kylla"

            setcookie("lomakelahetetty", "kylla", time() + 3600);
        }

        exit;    // Poistutaan...
    }

    echo "<html><head><title></title></head><body>\n";
    echo "<form action='lomake.php?tila=tarkista' method='POST'>\n";
    echo "Etunimi: <input type='text' name='etunimi'><br>\n";
    echo "Sukunimi: <input type='text' name='sukunimi'><br>\n";
    echo "<input type='submit' value='Lähetä'>\n";
    echo "</form>\n";
    echo "</body></html>";

?>

ottis [23.03.2003 16:30:31]

#

Ongelma ongelman päälle :/
Sivun osoite alunperin on: sivu/jotain.php?kaikkea=muuta
ja kun tuo "muuta" vielä määritetään muuttujasta niin tarkista osoitteesta tulee tälläinen:

sivu/jotain.php?kaikkea=muuta?tila=tarkista

ja totahan ei php ymmärrä :(

trinit [23.03.2003 17:19:30]

#

lainaus:

sivu/jotain.php?kaikkea=muuta?tila=tarkista

ja totahan ei php ymmärrä :(

Ei tietenkään ymmärrä koska se on väärin :) - muuta tuo muotoon

sivu/jotain.php?kaikkea=muuta&tila=tarkista

Eli vaihdat sen viimeisen ? -merkin & -merkiksi. Samalla tavalla voi lisätä muitakin muuttujia osoitteeseen.

Ensimmäinen muuttuja erotellaan aina ? -merkillä ja loput & -merkillä

ottis [23.03.2003 17:24:31]

#

Kiitos, tuonkin kun olisin tiennyt niin olisin säästänyt niin paljon aikaa että huhhuh...
jokatapauksessa, nyt toimii :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta