Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Ciastka i formularz


unbreak

Rekomendowane odpowiedzi

Yop, w tym temacie niestety jestem kiepski a jest mi to potrzebne...

Mam sobie dwa formularze, ale nie ważne, powiedzmy że jest jeden i teraz potrzebuję prostego acz skutecznego rozwiązania, aby z jednego komputera nie można było dwa razy go wypełnić...

Może być po IP, może być zapisywane w ciastkach, cokolwiek :]

Z góry dzięki za przynajmniej chęć niesienia pomocy ^_^

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Zapisz w ciastkach unikalny klucz, czy cokolwiek pod jakąkolwiek nazwą. Potem przed wysłaniem formularza, lub lepiej przed jego wyświetleniem sprawdź, czy owe ciasteczko istnieje. Jak istnieje, to nie dopuść do wyświetlenia formularza.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak tworzę cooka przy dodawaniu wpisu:

setcookie("CookieForForm", $value);

A jak go sprawdzić przed wyświetleniem formularza? :>

if (isset($_COOKIE['CookieForForm']))
 if($_COOKIE['CookieForForm']=="$value")
   drukuje form
 else
   wartość jest zła
else
 error

?

Bo jak napisałem, z cookami to ja lewy jestem xD

Edytowane przez unbreak

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

Dostaje taki błąd jak chce setcookie:

Warning: Cannot modify header information - headers already sent by (output started at index.php:5) in index.php on line 16

Dałem go praktycznie na samym początku dokmunetu:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
<?php
$dir="/perfumy-magazyn";
$pg=$_GET['p'];

include 'ver.php';
require_once 'includes/database.php';
require_once 'includes/functions.php';
require_once 'includes/slugs.inc.php';

if($pg=='rate' && $_POST['rated'] && $_POST['product_id']){
	$cook = "id-nowy-glos-dodany-666utf-8-ip127-0-0-1";
	setcookie('CookNewRatePerfumyMagazynPl', $cook);
}	
?>


<head>
<title>Maj Pejdż</title>
...

Edytowane przez unbreak

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, przerzuciłem to na sam początek <?

Nie ma błędu ale nie działa mi sprawdzanie, tzn tak jakby nie było tego cooka, sprawdzam tak:

<?php if(isset($_COOKIE['CookNewRatePerfumyMagazynPl'])):?>
Głosowałeś już dzisiaj.
<?php else: ?>
zrób form
<?php endif; ?>

ciągle robi form

Edytowane przez unbreak

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

w index.php jest tak:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
<?php
      if($pg=='rate' && $_POST['rated'] && $_POST['product_id']){
               $cook = "id-nowy-glos-dodany-666utf-8-ip127-0-0-1";
               setcookie('CookNewRatePerfumyMagazynPl', $cook);
       }
       $dir="/perfumy-magazyn";
       $pg=$_GET['p'];

       include 'ver.php';
       require_once 'includes/database.php';
       require_once 'includes/functions.php';
       require_once 'includes/slugs.inc.php';
?>


<head>
       <title>Maj Pejdż</title>
...

Ten if służy do tego żeby sprawdzić czy jest podstrona dodania komentarza (nie formularza) i czy zostały wysłane wymagane rzeczy (czyli głosowanie powiodło się)

W pliku gdzie wyświetlany jest formularz:

           <?php if(isset($_COOKIE['CookNewRatePerfumyMagazynPl'])):?>
                   Głosowałeś już na ten produkt dzisiaj.
		<?php else: ?>
           	<form method="post" action="rate.html">
                  .....
               </form>
           <?php endif; ?>

Jedno i drugie nie występuje nigdy w jednym czasie, rozumiem że setcookie zapisuje gdzieś cooka na dysku i później można na dowolnych podstronach sprawdzać czy isset?

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Tak, ale nie podajesz parametru expire, więc:

If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes). 

Dodaj ten parametr ( w formacie czasu UNIX ).

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

No zobaczymy, bo to nie działa nawet bez wyłączenia przeglądarki...

Mamy form po wypełnieniu przekierowuje na skrypt sprawdzenia poprawności, dodania do bazy, zapisania cooka, etc, ten po zrobieniu wszystkiego przekierowuje z powrotem na form gdzie jest sprawdzane czy jest cook no i pokazuje tak jakby go nie było...

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.