PDA

View Full Version : مشکل در کد امنیتی



imohammad
چهارشنبه 27 مهر 1390, 09:43 صبح
با سلام
من یه قطعه کد برای ایجاد و دریافت کد امنیتی نوشتم:
<form method="post">
<input type="text" name="txt" />
<input type="submit" />
</form>
<?php
$var1 = rand(1,9);
$var2 = rand(1,9);
$sum = $var1 + $var2;
echo($var1 .' + '. $var2 .'<br>');
if(isset($_POST['txt'])) {
$txt = $_POST['txt'];
if($txt == $sum) {
echo('true');
} else {
echo('false');
}
}
?>
ولی مشکل اینه که تو دستور شرتی چه پاسخ صحیح باشه چه غلط مقدار false رو بر میگردونه!
دوستان یه نگاه بندازین ببینین مشکل از کجاست
ممنون

Reza1607
چهارشنبه 27 مهر 1390, 23:13 عصر
دليلش اينه كه شما نتيجه رو ذخيره نمي كنين
شما زماني كه يك مقدار جديد ايجاد كردين بايد اون رو داخل سشن ذخيره كنيد و وقتي كاربر نتيجه رو وارد كرد بايد با مقدار داخل سشن مقايسه كنيد نه با نتيجه جديد

imohammad
پنج شنبه 28 مهر 1390, 07:21 صبح
ممنون از راهنمایتون،ممکنه یه قطعه کد برام بنویسیدتا بهتر متوجه بشم ! با تشکر !

Reza1607
پنج شنبه 28 مهر 1390, 10:31 صبح
<?php
session_start();
$var1 = rand(1,9);
$var2 = rand(1,9);
$_SESSION["code"] = $var1 + $var2;
?>

<form method="post">
<?php
echo($var1 .' + '. $var2 .'<br>');
?>
<input type="text" name="txt" />
<input type="submit" />
</form>

<?php
if(isset($_POST['txt'])) {
$txt = $_POST['txt'];
if(isset($_SESSION["code"]) && $txt == $_SESSION["code"]) {
echo('true');
} else {
echo('false');
}
}
?>

imohammad
پنج شنبه 28 مهر 1390, 11:44 صبح
متاسفانه مشکل پابرجاست با کد شما
دقیقا همینو کپی کردم ولی باز داستان همون بود

Reza1607
پنج شنبه 28 مهر 1390, 11:55 صبح
خط 4 رو حذف كن و به انتهاي كد ببر




<?php
session_start();
$var1 = rand(1,9);
$var2 = rand(1,9);
?>
<form method="post">
<?php
echo($var1 .' + '. $var2 .'<br>');
?>
<input type="text" name="txt" />
<input type="submit" />
</form>
<?php
if(isset($_POST['txt'])) {
$txt = $_POST['txt'];
if(isset($_SESSION["code"]) && $txt == $_SESSION["code"]) {
echo('true');
} else {
echo('false');
}
}
$_SESSION["code"] = $var1 + $var2;
?>