Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как сравнить сессию и то, что введено в поле (https://javascript.ru/forum/misc/39127-kak-sravnit-sessiyu-i-chto-vvedeno-v-pole.html)

ruslan_mart 17.06.2013 16:45

Цитата:

Сообщение от Nailya
этот не помогает, у меня все перестает работать

В оснувную страницу (page.php) тоже необходимо прописать session_start().

Nailya 17.06.2013 16:54

я решила методом ajax делать, этот вариант более подходящий, просто не пойму как вытаскивать из php значение сессии для ajax

zebra 17.06.2013 16:57

Вы отправляете цифры или что там у вас, которое ввел пользователь. пхп скрипт проверяет это значение с сессией, если они совпадают верните например echo 'ok', если нет echo 'no'
В функции которая принимает ajax ответ проверьте это значение, и от него уже дальше пляшите. :dance:

ruslan_mart 17.06.2013 17:13

captcha_image.php:
session_start(); 
header('Content-Type: image/png');
$alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
for($i=0; $i<5; $i++) $secret.= $alpha[rand(0,strlen($alpha)-1)];
$_SESSION['secret'] = $secret;
$image = imagecreate(80,31);
$grey = imagecolorallocate($image, 246,246,246);
$red = imagecolorallocate($image, 255, 0, 0);
$color = imagecolorallocate($image, 0, 0, 255);
imagestring($image,5,10,7,$secret,$color);
imageline ($image, 20,0,80,3, $red);
imageline ($image, 0,10,50,0, $red);
imageline ($image, 90,5,40,31, $red);
imageline ($image, 0,31,70,0, $red);
imagepng($image);
imagedestroy($image);


test_ajax.php:
session_start();
if($_POST['secret'] && $_POST['secret'] == $_SESSION['secret']) echo 1;


page.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Документ без названия</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.0.1.min.js"></script>
</head>

<body>
<img alt="" src="captha_image.php" />
<input id="secret" maxlength="5" type="text" />
<input onclick="test()" type="button" value="Проверить" />

<script type="text/javascript">
function test()
{
   $.post('test_ajax.php', {secret: $('#secret').val()}, function(a)
   {
      alert(a ? 'Всё верно!' : 'Неправильный код безопасности!');
   });
}
</script>
</body>
</html>

Nailya 17.06.2013 17:23

1) вот в otzyvy.php я проверила это условие,только при загрузки страницы, он мне сразу выдает, что "Введено неправильное число!"

if($_POST['secret'] == $_SESSION['secret']) {
			echo "OK";
			
			}
		else if($_POST['secret'] != $_SESSION['secret'])
			{
			echo "Введено неправильное число!";
			}


2)функции, которая принимает ajax ответ, выдает мне полную страницу php, а как мне получить только значение сессии

ruslan_mart 17.06.2013 17:26

Nailya, второй if не нужен. session_start() указан?

Nailya 17.06.2013 17:43

да указан

zebra 17.06.2013 17:49

Цитата:

Сообщение от Nailya
2)функции, которая принимает ajax ответ, выдает мне полную страницу php, а как мне получить только значение сессии

Сделайте отдельный файл, который будет только проверять капчу. Или пропишите die после условий.

Nailya 17.06.2013 17:57

я вас уже всех замучила, ничего у меня не получается, остается только с горя напиться(

ruslan_mart 17.06.2013 18:04

Nailya, я уже дал выше рабочий вариант с ajax.


Часовой пояс GMT +3, время: 10:52.