You should use tokens to prevent some "quick" spamming of your forms and requests in general. But actually the hacker can see the request with the whole query and notice that there is a token used. Once he got it he can build a spam bot using the random token your form is using.
A better way to be secure would be to use, lets say 3 (or more) tokens and a session value with a random number between the amount of tokens you use. So you can use the session value as a random pick for the token and validate it anywhere you want. So it is unpredictable because the $_SESSION data is hidden in the frontend.
Something like:
// Setting tokens
$_SESSION['token_1'] = "ocdja45d6"; // Any random value
$_SESSION['token_2'] = "62d5sas9f";
$_SESSION['token_3'] = "d8o9fhd5ds";
$_SESSION['random_token'] = mt_rand(1, 3);
// Getting Token
$randToken = 'token_' . $_SESSION['random_token'];
$token = $_SESSION[$randToken];
// Validating Token
if($token == $postTokenFromHackerOrUser)
{
// Is okay or not?
}
HTH