Witam wszystkich. Udało mi się coś tam zmotać z tokenem, ale mam problem, za każdym razem otrzymuje komunikat, że token jest zły, nawet gdy przepiszę go dobrze.
Mój kod wygląda tak:
<?php
function sprawdz()
{
$token = $_POST['token'];
if($token == $_SESSION['token'])
{
$_SESSION['token'] = 0;
return 1;
}
else
{
$_SESSION['token'] = 0;
return 0;
}
}
include('functions/bbc.php');
include('include/db.php');
echo '<h2>Kontakt</h2>';
$zapytanie = "SELECT * FROM `kontakt` WHERE `id`='1'";
$idzapytania = mysql_query($zapytanie);
while ($wiersz = mysql_fetch_array($idzapytania))
{
echo ''.stripslashes(bbc($wiersz['tresc'])).'<br />';
}
if(!isset($_COOKIE['kontakt']))
{
if(isset($_POST['tresc']))
{
echo '<div align="center"><form action="/kontakt.html" method="post"><br />
Nick:<br /><input type="text" name="nick" value="'.$_POST['nick'].'" /><br />
Twój email:<br /><input type="text" name="email" value="'.$_POST['email'].'" /><br />
Temat:<br /><input type="text" name="temat" value="'.$_POST['temat'].'" /><br />
Treść:<br /><textarea name="tresc" cols="30" rows="10">'.$_POST['tresc'].'</textarea><br />';
switch(rand(0,1))
{
case 0:
echo 'Podaj pierwsza i ostatnia cyfre: ';
$rand = rand(100, 9999);
echo $rand;
$_SESSION['token'] = substr($rand,0,1).substr($rand,-1);
echo '<br /><input type="text" name="token" /><br /><br />';
break;
case 1:
echo 'Podaj wynik dzialania: ';
$r1 = rand(1,10);
$r2 = rand(1,10);
switch(rand(0,1))
{
case 0:
echo $r1 .'-'. $r2. '=';
$_SESSION['token'] = $r1-$r2;
break;
case 1:
echo $r1 .'+'. $r2. '=';
$_SESSION['token'] = $r1+$r2;
break;
}
echo '<br /><input type="text" name="token" /><br /><br />';
break;
}
echo '<input class="przycisk_kontakt" name="wyslij" type="submit" value="Wyślij" />
<input class="przycisk_kontakt" name="wyczysc" type="reset" value="Wyczyść" /></form><br /><br /></div>';
}
else
{
echo '<div align="center"><form action="/kontakt.html" method="post"><br />
Nick:<br /><input type="text" name="nick" /><br />
Twój email:<br /><input type="text" name="email" /><br />
Temat:<br /><input type="text" name="temat" /><br />
Treść:<br /><textarea name="tresc" cols="30" rows="10"></textarea><br />';
switch(rand(0,1))
{
case 0:
echo 'Podaj pierwsza i ostatnia cyfre: ';
$rand = rand(100, 9999);
echo $rand;
$_SESSION['token'] = substr($rand,0,1).substr($rand,-1);
echo '<br /><input type="text" name="token" /><br /><br />';
break;
case 1:
echo 'Podaj wynik dzialania: ';
$r1 = rand(1,10);
$r2 = rand(1,10);
switch(rand(0,1))
{
case 0:
echo $r1 .'-'. $r2. '=';
$_SESSION['token'] = $r1-$r2;
break;
case 1:
echo $r1 .'+'. $r2. '=';
$_SESSION['token'] = $r1+$r2;
break;
}
echo '<br /><input type="text" name="token" /><br /><br />';
break;
}
echo '<input class="przycisk_kontakt" name="wyslij" type="submit" value="Wyślij" />
<input class="przycisk_kontakt" name="wyczysc" type="reset" value="Wyczyść" /></form><br /><br /></div>';
}
if(isset($_POST['wyslij']))
{
if(empty($_POST['nick']) or empty($_POST['email']) or empty($_POST['temat']) or empty($_POST['tresc']) or empty($_POST['token']))
{
echo '<div align="center"><font color="red"><b>Wypełnij wszystkie pola formularza!</b></font></div><br />';
}
elseif(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
{
echo '<div align="center"><font color="red"><b>Podany email jest nieprawidłowy!</b></font></div><br />';
}
elseif(sprawdz() != 1)
{
echo '<div align="center"><font color="red"><b>Podany kod weryfikujący jest nieprawidłowy!</b></font></div><br />';
}
else
{
setcookie("kontakt", 1, time()+10*60);
setcookie('waznosc_ciasteczka', time(), time()+10*60);
$message = 'Nick: '.$_POST['nick'].'<br /> email: '.$_POST['email'].'<br /> Temat: '.$_POST['temat'].'<br /> Treść: '.$_POST['tresc'].'';
$naglowki = 'From: '.$_POST['email'].''.PHP_EOL.'Reply-To: '.$_POST['nick'].''.PHP_EOL.'Content-type: text/html; charset=utf-8';
mail('[email protected]', 'Wiadomość ze strony WWW', $message, $naglowki);
echo '<div align="center"><font color="green"><b>Wiadomość została wysłana poprawnie!</b></font></div><meta http-equiv="Refresh" content="3; url=/kontakt.html" /><br />';
}
}
}
else
{
$waznosc_ciasteczka = ceil(10-(($_COOKIE['waznosc_ciasteczka']-time())/60)*(-1));
echo '<div align="center"><font color="green"><br /><b>Nie można wysłać ponownie wiadomości.<br />Prosimy spróbować za ';
if($waznosc_ciasteczka>4)
{
echo ''.$waznosc_ciasteczka.' minut.</b></font></div>';
}
elseif($waznosc_ciasteczka==1)
{
echo 'minutę.</b></font></div>';
}
elseif($waznosc_ciasteczka<=4)
{
echo ''.$waznosc_ciasteczka.' minuty.</b></font></div>';
}
}
mysql_close($connect);
?>
Wyświetlając na ekran zmienne: $_SESSION['token'] oraz $token otrzymuje od $_SESSION['token'] to co mam wpisać teraz, a od zmiennej $token to co wpisałem przed przeładowaniem strony.
Proszę o pomoc :)
Z góry dziękuje :)
Pozdrawiam.