Witam, jak mogę stworzyć sesję która po 5 minutach zniknie?
http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes
Kurcze, nie potrafię tego stworzyć, dokładniej chodzi mi o to że w jednym pliku po wykonaniu ifa zapisuje sesję a w drugim pliku odpytuję, jesli sesja jest aktywna to wysiwetlam to a jesli nie to cos innego.
No to w pierwszym pliku w ifie tworzysz
$_SESSION['expireTime'] = 12344566789; //unixowy czas wygaśnięcia
if(http://www.php.net/isset($_SESSION['expireTime']) && $_SESSION['expireTime'] <= http://www.php.net/time()){ //ok }
Okej, dziekuje, jeszcze jakbyś mi mógł podpowiedzieć jak wyglądało by 5 minut w czasie unixowym. Chcę zrobić tak aby po każdym wysłaniu formularza (jesli bedzie zabita sesja) aktywowało sesję na 5 minut.
time() zwraca aktualny czas w formacie unixowym. Dodajesz do tego 60*5=300 (czyli 60sekund * 5 co daje 5 minut)
Niestety nie zabija sesji, jeśli coś źle napisałem, proszę o poprawienie.
Pierwszy plik:
$_SESSION['expireTime'] = 300;
if(isset($_SESSION['expireTime']) && $_SESSION['expireTime'] <= time()){ echo "<span><img src='img/succes_icon.png'></img>"; echo "<br>"; echo "<p>Wiadomosc została wysłana!<br></p>"; echo "<p style='color:red;'>* Dozwolona tylko jedna wiadomosc na 5 minut!</p>"; }else{ ?> formularz <?php }
Napisałem, że do time() masz dodać 300...
Dziekuję. Ostatni myślę że już problem mam.
Sesja zapisuję się dla wszystkich komputerów a chce aby zapisała się tylko dla tego z którego jest wysyłany formularz. Dodam że strona bez logowania więc, nie wiem jak to zrobić.
musiałbyś pokombinować coś z geolokacja http://us3.php.net/manual/en/book.geoip.php
Kurczę, nie ma jakiegoś prostszego sposobu na to? może na ciasteczkach? pomógłby ktoś?
możesz na cookie ale te można oszukać
no to w sesji zapisuj informacje że wysłany został formularz
i tak jak powiedział Turson
Ustawiłem stały czas 2 minut dla każdego usera lecz znów uwczesny problem. Sesja nie znika. Czasem znika czasem nie, ktoś wie czemu tak jest? , poniżej kod:
PLIK 1
if(http://www.php.net/isset($_SESSION['expireTime']) && $_SESSION['expireTime'] <= http://www.php.net/time()){ http://www.php.net/echo '<div style="position: relative; top: -17px;"> <form action="kontakt.php" method="POST"> <input type="text" maxlength="45" placeholder="email@strona.pl" name="email" id="email"> <br width="50%"> <textarea style="width: 309px; height: 105px;resize: none;" name="opis" id="opis" placeholder="Tresc wiadomosci..." maxlength="225"></textarea> <br><br> <input type="submit" value="" id="przycisk" name="przycisk" /> </form> </div> <p style="position: relative;top: -54px;font-size: 12px;left: -7px;width: 267px;display: inline;">*Piszac wiadomosc postaraj sie zachowac poprawnosc jezykowa.</p> <p style="position: relative;top: -64px;right: -147px;font-size: 12px;width: 150px;">(info) Odpiszemy w czasie 48h.</p>'; }else{ http://www.php.net/echo "<span><img src='img/succes_icon.png'></img>"; http://www.php.net/echo "<br>"; http://www.php.net/echo "<p>Doreczanie wiadomosci!<br></p>"; http://www.php.net/echo "<p style='color:red;'>* Wiadomość dozwolona raz na 2 minuty!</p>"; } ?>
if($dalej){ $emailTo = "l"; $subject = 'y.'; $body .= " bla bla"; $headers = "Content-type: text/html; charset=utf8"; http://www.php.net/mail($emailTo, $subject, $body, $headers); $_SESSION['expireTime'] = http://www.php.net/time() + 120; $_POST = http://www.php.net/array(); http://www.php.net/header("Location: index.php"); http://www.php.net/exit; }
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)