2016-08-23 3 views
0

Я хочу, когда CAPTCHA код завершения от пользователя запрос, отправленный на страницу и сравнить строку ввода пользователем со значением капчи изображения (это значение сохраняется в стоимости сеанса)сравнения переменной сеанса с последующей переменной с помощью запроса Ajax

Это страница содержит АЯКС запроса (здесь не IMG тега, но это не важно!):

<html> 
<body> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<input id="captcha" maxlength="5" onkeyup="myFunction()" value=""> 
<script> 
function myFunction() { 
    var x = document.getElementById("captcha"); 
    if(x.value.length==5){ 
     $(document).ready(function(){ 
     $.get("test.php", 
      function(data, status){ 
      alert("Data: " + data + "\nStatus: " + status); 
      }); 
     }); 
    } 
} 
</script> 
</body> 
</html> 

и эта страница является то, что получает сообщение запрос:

<?php 
session_start(); 
$c=$_POST['captcha']; echo $c;echo gettype($c); 
$s=$_SESSION['captcha']; echo $s;echo gettype($s); 
if($c==$s) { 
    echo 'correct'; 
} else { 
    echo 'incorrect'; 
} 
?> 

но в ответ: тип переменной сеанса NULL! Зачем?!

Но тип переменной post является строкой, но я уверен, что сессия и пост равны.

А теперь, как сравнить вместе?

+0

Вам необходимо обновить функцию под названием «myFunction» и необходимо выполнить фактическую систему запроса ajax ... –

ответ

0

Эта проблема подвижная! но я не понимаю, как именно!

Я работаю над serach ajax и, конечно же, снова начинаю сеансы.

, но у него нет проблем до и после работы над этим.

но я думал, что лучше на странице, которая отправляет запрос, сессия началась.

и это сработало!

затем я удалил session_start() заявление, но он все еще работал: D

я думаю, что код не в настроении :))

код запроса страницы отправки:

<html dir="rtl"> 
<body> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<img id="captcha" src="captcha.php" width="160" height="45" border="1" alt="CAPTCHA"> 
<small><a href="#" onclick=" 
document.getElementById('captcha').src = 'captcha.php?' + Math.random(); 
document.getElementById('captcha_code').value = ''; 
return false; 
">refresh</a></small> 
<input id="fname" type="text" name="captcha" size="6" maxlength="5" onkeyup="myFunction()" value=""> 
<small id="massage-captcha">input number show on the image.</small> 
<script> 
function myFunction() { 
var x = document.getElementById("fname"); 
if(x.value.length==5){ 
    document.getElementById("massage-captcha").innerHTML = "please wait!"; 
    $(document).ready(function(){ 
     $.post("test.php", 
     { 
     captcha: x.value 
     }, 
     function(data,status){ 
      if(data=="correct"){ 
       document.getElementById("massage-captcha").innerHTML = "correct";}else{ 
       document.getElementById("massage-captcha").innerHTML = "incorrect"; 
      } 
     }); 
    }); 
} 
else{ 
    b.value=""; 
} 

} 
</script> 

и запрос на получение файла:

<?php 
session_start(); 
if($_POST['captcha']==$_SESSION['captcha']){echo 'correct';} 
else{echo 'incorrect';} 
?> 

моя последняя идея: сеанс на сервере удален после прошлого дня и теперь отлично работает!

Смежные вопросы