Operacje na sesji

0

Witam,
mam taki kod:

session_start(); 
if(!isset($_SESSION['koszyk']))    //jezeli sesja po raz pierwszy otwarta
    {
        $_SESSION['koszyk']=array();   
    }
    if(!isset($_SESSION['idd']))
    {
        $_SESSION['idd']=0; 
    }
    if(isset($_POST['nazwa'])) //zapis
    {
        $_SESSION['koszyk'][$_SESSION['idd']]=$_POST['nazwa']."|".$_POST['ilosc']."|";
        $_SESSION['idd']++; 
    }
    
   if(isset($_SESSION['idd'])){    
      foreach($_SESSION['koszyk'] as $value) {
         $wynik = explode("|", $value);
         echo"$wynik[0] i $wynik[1] <br/>";
      }
   }

<form id="zaloguj_form" action = "" method = "post" >
            <fieldset>
              <ul>
                <li>
                  <label>nazwa:</label>
                  <input class="required"  type="text" value=""  name="nazwa" id="nazwa"/>
                </li><br/>
                <li>
                  <label>ilosc:</label>
                  
                  <input class="required" type="text" value="" name="ilosc"  id="ilosc" />
                </li>
                <li>
                 <input type="submit" class="button" id="add" name="add" value="zapisz" />
                </li>
              </ul>
            </fieldset>         
          </form>

Mam taki problem, chciałbym zrobić jakąś blokadę dublujących postów (tak żeby zmienne ilosc i nazwa nie mogły powtarzać się sesji).

Wiecie może jak to zrobić?
Northwest

0

Sam sobie odpowiedziałeś - wrzucić te dane do sesji.
Pierwsze co mi przychodzi do głowy:

Tam gdzie dostajesz wartości $_POST['ilosc'] i $_POST['nazwa'] daj coś takiego:

$checksum = MD5($_POST['ilosc'] . $_POST['nazwa']);

Potem zrób w sesji tablicę i zapisz w nowej pozycji wartość $checksum.

$_SESSION['sent'][] = $checksum;

Przy wysyłaniu kolejnych postów:

if (in_array($checksum, $_SESSION['sent'])) {
 exit('juz byl taki post');
}

W PHP manualu polecam poczytać o:

Tablicach, MD5

0

nie pomogło :(

0

Wklejenie na pałę kodu nie pomaga ;/

0

zrobiłem troszkę inaczej :) dzięki za pomoc :)

<form id="zaloguj_form" action = "" method = "post" >
            <fieldset>
              <ul>
                  <label>Usuń</label>			
                  <input class="required" type="text" value="" name="usun"  id="usun" />
                </li>
              </ul>
            </fieldset>         
          </form>

Mam jeszcze takie pytanie, załóżmy że dorobiłem sobie taki formularz jak wyżej i chciałbym po wysłaniu usunąć z sesji daną wartość/rekord (na podstawie zmiennej usuń).

Wiecie może jak to zrobić? :)

0
$_SESSION['costam'][0] = null;

Usuwa pierwszy rekord.

0

tylko jak mam w sesji duuuużo rekordów, to nie wiem którą pozycję zajmuje rekord który chce usunąć :/

0

No to przy każdym rekordzie zrób sobie przycisk skasuj:

foreach($_SESSION['rekordy'] as $index => $value) {
   echo('Rekord: ' . $value . ' (<a href="skasuj.php?id='.$index.'">skasuj</a>)');
}

W pętli foreach $index to numer pod którym jest rekord, a $value to jego zawartość.

1 użytkowników online, w tym zalogowanych: 0, gości: 1