Kuinka saan php:n tallentamaan keksin lomakkeen lähettämisen yhteydessä?
Tuo on minulle tuttua, mutta en ole keksinyt kuinka saan keksin tallentumaan kun lähettää lomakkeen, eli painaa lähetä nappulaa.
Eikö evästettä voi tallentaa heti aluksi siinä skriptissä, johon lomake kohdistuu?
Ehei, koska keksin perusteella tiedetään myöhemmin onko kävijä lähettänyt lomakkeen.
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)
Kiitos, mutta kun lomake suoritetaan samalla sivulla josta lähetetään :/
Tee niistä 2 eri tiedostoa?
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>"; ?>
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ä :(
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ä
Kiitos, tuonkin kun olisin tiennyt niin olisin säästänyt niin paljon aikaa että huhhuh...
jokatapauksessa, nyt toimii :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.