2010-03-30 3 views
0

좋아요. 난 무작위 곱셈 질문을하기 위해 무언가를 만들려고합니다. 이제는 질문을 잘 묻습니다. 무작위 질문을 잘 생성합니다. 하지만 페이지를 다시로드 할 때 난수가 달라집니다 ...PHP의 간단한 POST 난수 문제

어떻게 해결할 수 있습니까?

<?php 

$rndnum1 = rand(1, 12); 
$rndnum2 = rand(1, 12); 

echo "<h3>". $rndnum1 . " x "; 
echo $rndnum2 . "</h3>"; 

if($_SERVER["REQUEST_METHOD"] == "GET") { 

$answer=0; 

} 
else if($_SERVER["REQUEST_METHOD"] == "POST") { 

$answer=trim($_POST["answerInput"]); 
$check=$rndnum1*$rndnum2; 

if($answer==$check) { 

    echo "Correct!"; 

} 
else { 

    echo "Wrong!"; 

} 


} 

?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" > 
<table> 
    <tr> 
    <td> 
    First Name:&nbsp; 
    </td> 
    <td> 
    <input type="text" name="answerInput" value="<?php echo $answer; ?>" size="20"/> 
    </td> 
    <td> 
    <?php echo $answerError; ?> 
    </td> 
    </tr> 
    <tr> 
    <td class="signupTd" colspan="2"> 
    <input type="submit" name="submit" value="Submit"/> 
    </td> 
    </tr> 
</table> 
</form> 

답변

2

부터 srand()에 그것을 통과 할 수 있습니다에() 함수를 호출합니다. 그래서 그들은 같은 곳에 머물러 있지 않습니다. POST와 함께 원래의 임의의 숫자를 전달하고 응답이 올바른지 확인하기 전에 $ _POST에서 숫자를 계산하십시오. 응답 양식이 제출 한 후 번호를 얻을 페이지의 다음로드,

<input type="hidden" name="rndnum1" value="<?php echo $rndnum1 ?>" /> 

다음 :

당신이 당신의 제출 양식의 확률 변수 모두에 대해 다음 줄을 포함해야합니다,이 작업을 수행하려면 $_POST['rndnum1']

+0

문제는 제가 그 작업을하는 방법을 모릅니다 ... 지금 바로 시도하고 있습니다. 알아낼 수는 없습니다 = [ – MrEnder

+0

어떻게 답을 제출하고 있습니까? ? 나는 양식을 통해 추측하고 있습니까? 이 경우 두 난수 모두에 대해 '을 양식에 추가 한 다음 그 숫자를' $ _POST [ 'rndnum1']'등을 사용하여 답변을 비교할 수 있습니다. –

+0

감사합니다.^ – MrEnder

0

코드 상단에 srand (0)을 추가하십시오.

실제로 당신이 무작위로 초기화되는 쿠키를 사용하고 페이지를 다시로드 할 때, $의 rndnum1와는 $ rndnum2는 랜드를 통해 새로운 임의의 숫자로 설정

+0

그는 페이지가로드 될 때마다 임의의 숫자를 동일하게 만들려고하지 않는다고 생각합니다. 나는 그가 페이지의 현재 부하에서 게시 된 답변에 대한 페이지의 이전 부하에서 두 난수의 곱셈을 비교하려고 노력하고 있다고 생각합니다. 나는 틀릴 수있다. ... –

+0

그 does not는 전혀 작동한다 = [ – MrEnder

+0

나는 매번 새로운 질문을 해보려고 노력하고있다. 그래서 나중에 – MrEnder

1

숨겨진 양식 필드에 생성 된 임의의 숫자를 포함하여 서버에 제출합니다. 예를 들어

, 단지> <form 내부 : 양식을 처리 할 때 그리고 PHP에서

<input type="hidden" name="rand1" value="<?=$rndnum1?>"> 
<input type="hidden" name="rand2" value="<?=$rndnum2?>"> 

, 원래 번호를 retreive 곱하면, 다음 사용자의 주어진 답을 비교하는 $_POST['rand1']$_POST['rand2']를 사용 .

+0

감사합니다.^ – MrEnder

0

이와 비슷한 기능이 작동합니다.

<?php 
@session_start(); 

if($_SERVER["REQUEST_METHOD"] == "GET") 
{ 
    $answer=0; 
} 

if (!$_POST['submit']) 
{ 
    $_SESSION['rndnum1'] = rand(1, 12); 
    $_SESSION['rndnum2'] = rand(1, 12); 
} 
else 
if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    $answer = trim($_POST["answerInput"]); 
    $check = $_SESSION['rndnum1']*$_SESSION['rndnum2']; 
    if($answer == $check) 
    { 
     $msg = "Correct!"; 
    } 
    else 
    { 
     $msg = "Wrong!"; 
    } 
} 
echo "<h3>". $_SESSION['rndnum1'] . " x " . $_SESSION['rndnum2'] . "</h3>"; 
if ($_POST['submit']) 
{ 
    echo $msg; 
} 





?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" > 
<table> 
    <tr> 
    <td> 
    First Name:&nbsp; 
    </td> 
    <td> 
    <input type="text" name="answerInput" value="<?php echo $answer; ?>" size="20"/> 
    </td> 
    <td> 
    <?php echo $answerError; ?> 
    </td> 
    </tr> 
    <tr> 
    <td class="signupTd" colspan="2"> 
    <input type="submit" name="submit" value="Submit"/> 
    </td> 
    </tr> 
</table> 
</form> 
+0

모든 것을 세션에 저장합니다. POST 인 경우 결과를 확인하고 그렇지 않은 경우 숫자를 재생성합니다. –