Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

AndreAndradeBarbosa

Enviar dados em AS3 para um formulário de login PHP

Recommended Posts

Boa tarde!

 

Sou novato em AS e tenho um problema para resolver, por favor, tenho uma tela de login que funciona em PHP normalmente, agora preciso enviar os dados de login e senha através de AS3 para o PHP e ter o mesmo resultado.

 

Segue abaixo o código em PHP (com dados de exemplo) junto com o HTML:

 

<?php

session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {


   /*
    * Conecta ao Banco de Dados
    */

   $link = mysql_connect('mysql.site.com.br', 'usuario', 'senha');

   if (!$link) die ('Conexão inválida' . mysql_error());

   /*
    * Seleciona o Banco de Dados
    */

   $selection = mysql_select_db('bancodedados', $link);

   if (!$selection) die ('Falha em selecionar o BD' . mysql_error());


   /*
    * Filtra todos os dados recebidos do formulário, retirando espaços extras
    * no início e fim dos campos, tags html, barras e excluindo a possibilidade
    * de haver ataque por SQL Injection
    */

   $username = $_POST['username'];
   $username = trim($username);
   $username = stripcslashes($username);
$username = strip_tags($username);
$username = mysql_real_escape_string($username);

   $password = $_POST['password'];
   $password = trim($password);
   $password = mysql_real_escape_string($password);

   /*
    * A senha será guardada no Banco de Dados usando o algoritmo de hash SHA-1
    */

   $password = sha1($password);

   /*
    * Seleciona todos os dados da tabela 'usuarios' e tenta encontrar um 
    * registro que tenha os dados de username e senha iguais aos que vieram 
    * do formulário 
    */

   $sql = "SELECT * FROM `usuarios` 
               WHERE `usr_username` = '$username' 
               AND `usr_password` = '$password'";
   $query = mysql_query($sql, $link);

   if (!$query) die ('Falha em fazer a consulta' . mysql_error());

   /*
    * Se ele encontrou um registro, quer dizer que o usuário existe. Portanto,
    * o usuário passa a estar logado e a variável "fezLogin" será usada para
    * exibir a notificação a esse usuário que ele completou o login com sucesso,
    * mas somente a primeira vez que a página for exibida.
    */

   if ($row = mysql_fetch_assoc($query)) {
       $_SESSION['logado'] = true;
       $_SESSION['fezLogin'] = true;
       header ('Location: /');
   } else {

       /*
        * Se ele não encontrou um registro, então o usuário ou a senha estão
        * inválidos
        */
       $error = 'Nome de usuário ou senha inválida';
   }

}

?>
<!doctype html>
<html>
   <head>
       <title>Login - Administração</title>
       <link rel="stylesheet" type="text/css" href="css/styles.css" />
   </head>
   <body>
       <div id="login">
           <h1>Login</h1>

           <?php 

               /*
                * Exibe os erros, se existirem
                */

               if(isset($error)) {
                   echo '<ul class="error">';
                   echo    '<li>';
                   echo $error;
                   echo    '</li>';
                   echo '</ul>';
               } 
           ?>

           <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
               <label for="username">Nome de Usuário:</label>
               <input type="text" name="username" id="username" required />

               <label for="senha">Senha:</label>
               <input type="password" name="password" id="password" required />

               <button type="submit">Logar</button>
           </form>
       </div>
   </body>
</html>

 

Agora tenho um arquivo um arquivo em flash com três campos: Nome, senha e alerta.

O "nome" para preencher com o nome de usuário, "senha" para preencher a senha e "alerta" para mostrar o retorno do PHP caso os dados estejam errados.

 

Depois de logado preciso que aconteça como no PHP, seja redirecionado para outra página.

 

Desde já, muito obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui tem um tutorial,http://www.alvoweb.com/formulario-email-as3-com-php/

 

Fazendo parecido com ele da para fazer o mesmo que faz esse formulario. Mas acho que você vai ter que usar o navigateToURL para enviar o formulario abrindo a pagina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui tem um tutorial,http://www.alvoweb.com/formulario-email-as3-com-php/

 

Fazendo parecido com ele da para fazer o mesmo que faz esse formulario. Mas acho que você vai ter que usar o navigateToURL para enviar o formulario abrindo a pagina

 

Obrigado pela resposta. Encontrei esses códigos:

 

AS3

var variables:URLVariables;
var urlPhp:URLRequest; 
var retorno:URLLoader;
botao.addEventListener(MouseEvent.CLICK, sendDados);
senha_txt.displayAsPassword = true;
function sendDados(e:MouseEvent):void{
       if(login_txt.text == "" || senha_txt.text == ""){
               alert.text = "Preencha corretamente os campos acima"
       }else{




               variables = new URLVariables();
               variables.login = login_txt.text;
               variables.senha = senha_txt.text;

               urlPhp = new URLRequest("login.php");
               urlPhp.method = URLRequestMethod.POST;
               urlPhp.data = variables;

               retorno = new URLLoader();
               retorno.dataFormat = URLLoaderDataFormat.VARIABLES; 

               retorno.addEventListener(Event.COMPLETE, retornoCompleto); 
               retorno.load(urlPhp);
               alert.text = "Aguarde conectando ao servidor..."
       }
}

function retornoCompleto(e:Event):void {
       var validate:String = e.target.data.validate;

       if(validate == "0"){
               alert.text = "Erro ao fazer o Login...";
       }else{
               alert.text = "Login realizado com Sucesso!";
       }

} 

 

PHP

 

<?php

       require_once('conexao.php');
       $user = utf8_decode (@$_POST['login']);
       $pass = utf8_decode (@$_POST['senha']);
       $sql = "select * from usuario where user = '".$user."' and senha='".$pass."'";
       $query = mysql_query($sql);

       $very = mysql_fetch_row($query);
       $tot = mysql_num_rows($query);

       $validate = "";

       if($tot > 0){
               $validate = "1";
       }else{
               $validate = "0";
       }

       echo "validate=$validate";

?>

 

O problema é que não sei como encaixar a parte do código PHP que preciso, esse:

 

   if ($row = mysql_fetch_assoc($query)) {
       $_SESSION['logado'] = true;
       $_SESSION['fezLogin'] = true;
       header ('Location: /');
   }

 

E também realizar o direcionamento caso o login seja efetuado.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho quase tudo resolvido, dessa forma:

 

AS3

var variables:URLVariables;
var urlPhp:URLRequest; 
var retorno:URLLoader;
botao.addEventListener(MouseEvent.CLICK, sendDados);
botao.addEventListener(MouseEvent.MOUSE_OVER, overBotao);
botao.addEventListener(MouseEvent.MOUSE_OUT, outBotao);
senha_txt.displayAsPassword = true;

function overBotao (e:MouseEvent):void{
botao.gotoAndPlay(2);
}

function outBotao (e:MouseEvent):void{
botao.gotoAndPlay(11);
}

function sendDados(e:MouseEvent):void{
       if(login_txt.text == "" || senha_txt.text == ""){
               alert.text = "Preencha corretamente os campos acima"
       }else{

               variables = new URLVariables();
               variables.login = login_txt.text;
               variables.senha = senha_txt.text;

               urlPhp = new URLRequest("login2.php");
               urlPhp.method = URLRequestMethod.POST;
               urlPhp.data = variables;

               retorno = new URLLoader();
               retorno.dataFormat = URLLoaderDataFormat.VARIABLES; 

               retorno.addEventListener(Event.COMPLETE, retornoCompleto); 
               retorno.load(urlPhp);
               alert.text = "Aguarde conectando ao servidor..."
       }
}

function retornoCompleto(e:Event):void {
       var validate:String = e.target.data.validate;

       if(validate == "0"){
               alert.text = "Erro ao fazer o Login...";
       }else{
               alert.text = "Login realizado com Sucesso!";
			var link:URLRequest = new URLRequest("http://www.site.com.br/");
			navigateToURL(link, '_parent');
       }

}

 

PHP

 

<?php
       require_once 'conexao.php';
   	$username = $_POST['login'];
   	$username = trim($username);
   	$username = stripcslashes($username);
$username = strip_tags($username);
$username = mysql_real_escape_string($username);

   	$password = $_POST['senha'];
   	$password = trim($password);
   	$password = mysql_real_escape_string($password);
$password = sha1($password);

$sql = "SELECT * FROM `usuarios` WHERE `usr_username` = '$username' AND `usr_password` = '$password'";
$query = mysql_query($sql, $link);

       $very = mysql_fetch_row($query);
       $tot = mysql_num_rows($query);

       $validate = "";

       if ($row = mysql_fetch_assoc($query)) {
       	$_SESSION['logado'] = true;
       	$_SESSION['fezLogin'] = true;
       	header ('Location: /');
}

if($tot > 0){
          $validate = "1";

       }

else{
          $validate = "0";
       }

       echo "validate=$validate";

?>

 

O problema é que o código:

if ($row = mysql_fetch_assoc($query)) {
       	$_SESSION['logado'] = true;
       	$_SESSION['fezLogin'] = true;
       	header ('Location: /');
}

 

Não está funcionando, não está gravando.

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.