Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.10.2012, 23:15
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 1  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
По умолчанию интерграция капчи в АС3

Была задача интергрирвать капчу с PHP. Долго рабирался, и вот на финишной прямой. Загвоздка в том, что я не могу придумать как запустить процесс обработки скрипта PHP без самой формы PHP. в той форме есть кнопка Submit, по которой начинается обработка. Как же мне её "заменить" через флэш? может каким то особым способом? Обычные переменные я засылаю так:
Код AS3:
function ValidateAndSend (event:MouseEvent):void {
 
		variables.security_code = input_txt.text;
		variables.personalDataName = name_txt.text;
а вот код запуска обработчика скрипта PHP.
PHP код:
<?php 
session_start
();

if( isset(
$_POST['submit'])) {
   if( 
$_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
        
// Insert you code for processing the form here, e.g emailing the submission, entering it into a database. 
        
$correctAnswer =  "Thank you. Your message said "'.$_POST['message'].';
        echo 
$correctAnswer;
        unset(
$_SESSION['security_code']);
   } else {
        
// Insert your code for showing an error message here
        
$wrongAnswer "Вы ввели неверный код. введите повторно";
        echo 
$wrongAnswer;
   }
} else {}
?>
ребята, очень нужна помощь... завис на этом моменте и ни туда ни сюда

Старый 12.10.2012, 23:36
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Как же мне её "заменить" через флэш? может каким то особым способом? Обычные переменные я засылаю так:
Все так же как в html по сути. Посылать пост запрос к php сприпту через URLRequest
http://www.hardcode.nl/archives_9/ar...ata-in-as3.htm

Старый 12.10.2012, 23:56
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 3  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
ну так функция ValidateAndSend все так и делает методом POST. Я просто весь код не копировал сюда. но тем не менее скрипт не запускается.
правильно ли я понял что получив переменную, PHP её сразу воспримет как POST? то есть не надо дополнять код
PHP код:
$security_code   $_POST['security_code']; 
Не понятно главное- какое значение мне надо приписать переменной submit?
что я только не пробовал, даже абсурдные идеи
Код AS3:
variables.submit = true;
variables.submit = "submit";
разбирал тут 1 пример ответа PHP в AS3. попробовал изменить как было и там
добавил в АС
Код AS3:
variables.sub = "parse";
а PHP изменил
PHP код:
if ($_POST['sub'] == "parse") {
   if( 
$_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) { 
но опять ничего не работает (( не возвращает мне ничего


Последний раз редактировалось pomuс; 13.10.2012 в 00:25.
Старый 13.10.2012, 06:53
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 4  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Код AS3:
 
public function SenderToPhp() {
 
        var sendVariables:URLVariables = new URLVariables();
 
	sendVariables.var1 = "var1";
 
	      // Отправляем данные php - скрипту
	var req:URLRequest = new URLRequest("php_file_path"); //тут пишем путь к пхп скрипту
 	req.method = URLRequestMethod.POST;
 	req.data = sendVariables; 
 
	var loader:URLLoader = new URLLoader();
	loader.addEventListener(Event.COMPLETE, onComplete );
	loader.load(req);
 
 
    function onComplete(e:Event):void
   {
	try
	{
		//e.target.data;
		trace(e.target.data); //здесь выведется то, что пхп скрипт вернет, через echo
	}
	catch (e:TypeError)
	{
		trace("Не могу получить ответ от сервера.");
	}
 
    }
}
в пхп пишем
PHP код:
echo ($_POST["var1"]);  //если доходит значит дело уже в ваших if -операторах
//проверяйте таким образом что вам возвращает php скрипт 

Старый 13.10.2012, 11:23
goWalk вне форума Посмотреть профиль Найти все сообщения от goWalk
  № 5  
Ответить с цитированием
goWalk
Banned

Регистрация: Aug 2012
Адрес: Mars: -333; -333;
Сообщений: 87
Записей в блоге: 2
Оффтоп: капча на флеш - ужасная идея

Старый 13.10.2012, 12:17
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Капча вообще ужасная идея, не только на флеше. Лично меня капчи всегда бесят ). Но суть не в этом, здесь, она не флешевая, а просто должна отображаться средствами флеша.
Цитата:
правильно ли я понял что получив переменную, PHP её сразу воспримет как POST? то есть не надо дополнять код
Не правильно. В PHP все ключи и значения будут представлены в виде ассоциативного массива, это либо $_GET, либо $_POST, как в данном случае. Ему нужно указать из какого массива дергать данные. И какие данные.

Старый 13.10.2012, 13:23
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 7  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
Isfet я совсем запутался. Вы предлагаете задать в АС3 переменную, и просто заслать её в php и озвучить. Тут я хочу разъяснить: созданный SWF файл с вашим кодом внутри я подключаю к index.html. А отсылаю в PHP ну напрмиер в test.php. так как же я увижу, отобразится переменная или нет?

caseyryan понятно, но приводить отдельной строкой эти переменные ен надо ,если дальше будет и так указываться метод. То есть не надо писать $var = $_POST['var']; если дальше и так будет $_POST['var']

и кстати почему капча плохая идея? а как же защитить форму от спама тогда...

Старый 13.10.2012, 14:07
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 8  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
если дальше и так будет $_POST['var']
Это дыра в безопасности. Где гарантия, что вместо капчи туда не будет выслан вредоносный код?

Старый 13.10.2012, 14:08
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 9  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
может сначала сделать чтобы она заработала в локальном варианте? прежде чем пихать в html - тег?
Цитата:
так как же я увижу, отобразится переменная или нет?
в локальном варианте она будет писаться в окне "вывод".
чтобы увидеть это в сгенерированной swf можно создавать TextField и в него писать то , что пришло из php скрипта.
но еще раз повторюсь, я бы отладил сначало локально.
Цитата:
если дальше и так будет $_POST['var']
вообще текст капчи в php лучше проверять на допустимые символы и их количество.

Старый 13.10.2012, 14:14
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 10  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Это дыра в безопасности. Где гарантия, что вместо капчи туда не будет выслан вредоносный код?
так все таки, указать дополнительно эту строку стоит, хуже не будет да?
Цитата:
Сообщение от Isfet Посмотреть сообщение
может сначала сделать чтобы она заработала в локальном варианте? прежде чем пихать в html - тег?

в локальном варианте она будет писаться в окне "вывод".
не знал что так можно, думал PHP считываться будет только на серез сервер.. Получается флеш уже на моем компьютере может взаимодействовать с PHP? сейчас попробую

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:19.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:19.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.