Witam
Chciałbym Wam przedstawić bardzo prosty Token, który zrobiłem do swojego skryptu. Nie jest do końca taki jak inne gdzie przepisujemy kod. Do tego naszego wymagana jest znajomość dodawania
Zaczynamy. Przypuśćmy, że mamy 2 strony. Jedna z formularzem, a druga z działaniem skryptu np. dodanie danych z formularza do bazy danych.
Nazwijmy je formularz.php i dodaj.php. jak zatem będzie wyglądal formularz? (oczywiście nie cały. uwzględniam tu tylko kod tokena ):
formularz.php
$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
$first = $numbers[array_rand($numbers)];
$second = $numbers[array_rand($numbers)];
$third = $first + $second;
$_SESSION['numbers'] = $third;
?>
<form method=post action="dodaj.php">
// pola formularza i nasze ostatnie:
<?php echo "$first + $second = ";?><input type="text" name="token" size=40 maxlength=150>
<p><input type="submit" name="submit" value="Dodaj"></p>
Natomiast plik dodaj.php
session_start();
if ($_POST['token'] == $_SESSION['numbers']) {
//jakaś treść skryptu, działającego w oparciu o dane z formularza
} else {
echo "Zła liczba";
}
?>
To wszystko! Teraz krótko opiszę każdy z elementów:
Ten kod, to tablica zawierająca zbiór liczb, ktore posłużą nam do losowania.
Tutaj losowana jest pierwsz ($first) i druga ($second) liczba, spośród wcześniej wypisanych.
Ten kod, to suma pierwszej i drugiej liczby.
Tutaj rozpoczynamy sesję o nazwie numbers i wartości trzeciej liczby (czyli sumy 2 poprzednich)
Tutaj znajduje się nasze pole w formularzu do wpisania liczby (która jest sumą dwóch wylosowanych liczb)
Krótki kod jest podpowiedzią dla wypelniającego formularz użytkownika.
W następnym pliku rozpoczynamy sesje (dzięki temu caly czas "trzymamy" sesję utworzoną w pierwszym pliku).
if ($_POST['token'] == $_SESSION['numbers']) {
Tutaj porównujemy wpis użytkownika z sesją. Liczba, którą ma wpisac użytkownik to suma dwoch wylosowanych liczb. Ta sama liczba jest też wartością sesji. Ten kod sprawdza czy wartość sesji jest taka sama jak liczba wpisana przez użytkownika. Jeśli tak, to wykonywany jest jakiś kod, jeśli nie, to wyświetlany jest komunikat "Zła liczba"
Listing