Toon posts:

login met flash/mysql/php

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een website gemaakt, of beter nog ben er nog mee bezig. en heb daar een members area in zitten. waar men op moet inloggen.

http://www.riccy.tk

Vervolgens heb ik daar scripts voor gemaakt. namelijk deze

main timebar layer script.

stop();

userinput.restrict="a-zA-Z0-9";
passinput.restrict="a-zA-Z0-9";

Selection.setFocus(userinput);

status="Please fill in your usename and password.";

this.onEnterFrame = function () {
if(_root.checklog == 1){
_root.gotoAndPlay(149);
}
if(_root.checklog == 2){
_root.gotoAndPlay(120);
}
}


Script op de submit button.

on (release, keyPress "<Enter>") {
if (user != "icericcy" && pass != "flashadmin") {

status = "loading stuff!";
loadVariablesNum("http://members.lycos.nl/icericcy/Login.php", 0, "POST");
}
}

php script:

http://members.lycos.nl/icericcy/Login.php (geen webpagina alleen script, save as doen dus, openen in notepad ofzo.) vervolgens een database met nu 3 usernames en passwords.

maar wat ik ook probeer. flash gaat maar niet het mysql database checken via het php vorm omzo tot de conclusie te komen dat het correct is en dan door te gaan naar het betrefrende timeframe in flash.

hoe komt dit?

[ Voor 7% gewijzigd door Verwijderd op 02-09-2004 02:13 ]


Verwijderd

//probeer dit is ff
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function loginreactie(ok)
{
    if(ok)
    {
        trace(login.een_variable_uit_php)//in php moet je wel ff echo('&een_variable_uit_php=blabla&');
        trace(login.nog_een_variable_uit_php)//in php moet je wel ff echo('&nog_een_variable_uit_php=blabla&');
        //en daar kan je wat mee doen, bijvoorbeeld...
        if(login.een_variable_uit_php == "true")
        {
            een_movieclip.loadMovie(nog_een_variable_uit_php);
        }else{
            trace("uw login gegevens zijn ongeldig!")
        }
    }else{
        //load error
        trace("error: kon de server niet vinden")
    }
}
submitbutton.onRelease = function()
{
    this._parent.login = new LoadVars();//this._parent is misschien niet nodig.
    login.onLoad = loginreactie;
    login.user = userinput.text;
    login.pass = passinput.text;
    login.sendAndLoad("http://members.lycos.nl/icericcy/Login.php",login,"POST");
}

//groetjes v. G. (digitalgroover.com)

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 23-05 12:27

krvabo

MATERIALISE!

Een username en password plaintext er in zetten is sowieso al niet slim.

Geetje: flash is ook te 'kraken', dus als dit in de flash file komt te staan, is het niet veilig. (Dat bedoelde ik dus :) )

[ Voor 47% gewijzigd door krvabo op 02-09-2004 15:39 ]

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Verwijderd

@ krvabo

Dat kan hij/zij met mijn scriptje hierboven toch lekker server-side doen ?
En eventueel (als in het voorbeeld) een variable url meezenden, kan ie ook nog
een sessie aanplakken... e.d.

Mijn excuses voor de vreselijke layout-mishandeling :?

groetjes,
Geetje

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 20-05 08:42

XangadiX

trepanatie is zóó kinderachtig

Argh... wat is dat voor een raar stukje script in dat login.php (php hoort trouwens eigenlijk bij de buren, maar goed het gaat ook om flash) Ik krijg dat script iig niet te lezen (heb het idee dat ik naar lycos meuk zit te kijken) dus ik kan je eigenlijk alleen wat algemeenheden aan de hand doen.

je loadvariables stuurt geen variablen naar het php script; moet dat niet iets zijn als loadVariablesNum ("login.php?naam=" add var1 add "&pass=" add var2, 0, "Post") en nee dat is niet lekker veilig nee ;), maar controleer dus even of je variablen aankomen in het php script. Desnoods met een echo $myflashvar in een nieuw window.

Let op dat je wacht tot flash variablen terugkrijgt. Het wil met php nog wel eens gebeuren dat het enige tijd duurt voordat je een bericht terugkrijgt, flash wacht daar niet altijd op. Ik zelf schrijf meestal een response functie die op een bepaalde interval checked of er al php info terugkomt. Let op; dit kan soms goed 2 a 3 seconden duren.
Als je dat allemaal niet wil moet je flash comm server gebruiken die heeft namelijk zoiets als een callback functie waarmee je zoiets als on result = function() {} kunt doen (wauw). Er schijnt een open source (gratis) php based flash communication server te zijn, maar weet het linkje niet en geen zin om te zoeken. Vraag dat anders ow when even, die kent namelijk iedere flash-link known to man ;)

[ Voor 19% gewijzigd door XangadiX op 02-09-2004 12:54 ]

Stoer; Marduq


Verwijderd

Topicstarter
Hoe werkt dat script van jouw nou eigenlijk geetje. moet ik soms iets invullen bij deze gedeeltes login.een_variable_uit_php enzo. en waar moet deze script geplaatst worden. gewoon als php. of in de timeline en submit button van het flash gedeelte ?.

Verwijderd

@krvabo
Daar heb je gelijk in, flash is te kraken... daarom gebruiken we enkel flash om het te versturen, de validatie gebeurt in php, die komt dan met een boolean waarde, de url waar we dan heengaan en misschien nog een sessionID ofzo.

@XangadiX
Een open source (gratis) php based flash communication server bestaat nog niet, er is wel een gratis flash-remoting gateway. Maar das een beetje overdreven voor deze toepassing :)

Hi IceRiccy,

Het is allemaal een beetje moeilijk uit te leggen, daarom heb ik je maar ff een werkend voorbeeldje gemaakt. Je moet wel een server hebben die PHP heeft lopen (ik weet niet of dat bij lycos het geval is.)
De username(icericcy) en password(icericcy) heb ik maar ff statisch in php geschreven voor het gemak.

Iniedergeval knikker je dit beetje actionscript in een nieuwe FLA op het eerste en enige keyframe.
(let op.. het is voor FlashMX dus versie 6 geschreven)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
    visuele ongein (kan je vervangen met statische objecten e.d.)
*/
this.createTextField("userinput",11,10,10,200,20);
userinput.type = "input";
userinput.border = true;
this.createTextField("passinput",12,10,40,200,20);
passinput.type = "input";
passinput.border = true;
passinput.password = true;
this.createTextField("serveroutput",13,10,70,200,60);
serveroutput.type = "dynamic";
serveroutput.multiline = true;
serveroutput.border = true;
this.createEmptyMovieClip("submitbutton",14);
submitbutton._x = 220;
submitbutton._y = 40;
with(submitbutton)
{
    beginFill(0xCCCCCC,80);
    moveTo(0,0);
    lineTo(40,0);
    lineTo(40,20);
    lineTo(0,20);
    lineTo(0,0);
    endFill();
}
Stage.align = "TL";
Stage.scaleMode = "noScale";

/*
    hier begint de gezelligheid
*/
function loginreactie(ok)
{
    if(ok)
    {
        //en daar kan je wat mee doen, bijvoorbeeld...
        if(login.loginstatus == "true")
        {
            serveroutput.text = "welkom "+login.user+", je bent ingelogd!";
            serveroutput.text += "\n"+login.misschien_een_redirect_variable;
        }else if(login.loginstatus == "false")
        {
            serveroutput.text = "sorry, uw login gegevens zijn ongeldig!";
        }else{
            serveroutput.text = "daar ging iets niet goed \n \n misschien geen PHP?";
        }
    }else{
        //load error
        serveroutput.text = "error: kon de server niet vinden";
    }
}
submitbutton.onRelease = function()
{
    this._parent.login = new LoadVars();//this._parent is misschien niet nodig.
    login.onLoad = loginreactie;
    login.user = userinput.text;
    login.pass = passinput.text;
    login.sendAndLoad("login.php",login,"POST");
}


En het volgende stukje PHP ff copy and paste in login.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
        $version = join(explode(".",PHP_VERSION));
        if($version >= 410)
        {
            $user = $_REQUEST['user'];
            $pass = $_REQUEST['pass'];
        }else{
            $user = $HTTP_POST_VARS['user'];
            $pass = $HTTP_POST_VARS['pass'];
        }
        $output2flash = '&';// voor de onderscheiding van variablen in flash
        if($user=='icericcy' && $pass=='icericcy')// << deze IF() moet je dan vervangen met een SQL routine
        {
            $output2flash.= 'loginstatus=true&';
            $output2flash.= 'misschien_een_redirect_variable=http://ok.com/ok.swf&';
        }else{
            $output2flash.= 'loginstatus=false&';
        }
        echo $output2flash;//nu sturen we de boel naar flash terug :)
?>


ik hoop dat het je een beetje opweg helpt :)

groetjes,
Geetje (digitalgroover.com)

Verwijderd

Topicstarter
evve kijken of ik het goed begrijp. code kopieren na flash. waar alleen deze dingen mij onduidelijk zijn.
serveroutput.text += "\n"+login.misschien_een_redirect_variable;

en hoe zorg ik ervoor wanneer de gegevens correct zijn dat ie dan naar een andere frame ga, waar plaats ik die code in dit script?

en de rest simpel weg gewoon dei php script kopieren en plakken in notepad en dan bij de IF verwijzen naar de database ?

if($user=='icericcy' && $pass=='icericcy')// << deze IF() moet je dan vervangen met een SQL routine


alleen dit stukje snap ik nie helemaal :)

serveroutput.text += "\n"+login.misschien_een_redirect_variable; wat voor variable hoort daar dan? echo ofzo ?


Verder nog dat create login field aan het begin, hoe kan ik die in het midden van dit scherm krijgen ?

Afbeeldingslocatie: http://img.photobucket.com/albums/v312/icericcy/flashlgin.jpg
verder nog harstikke bedankt :)

ben nog redelijk noob in flash en php dus sorry als ik zoveel vraag :)

[ Voor 50% gewijzigd door Verwijderd op 02-09-2004 23:50 ]


Verwijderd

Hi IceRiccy,

Die if() statement moet je niet vervangen (zoals ik schreef, sorry), maar je kan 'em
vervangen. Als je maar één of twee users gebruikt kan je het ook gewoon zo laten.
(wel ff je password en username veranderen natuurlijk.)

Het is misschien goed om es ff rustig de boel door te lezen en te begrijpen, wat je
dan niet helemaal begrijpt.. kan je dan in de PHP documentatie opzoeken:
http://www.php.net/manual/nl/
en hoe zorg ik ervoor wanneer de gegevens correct zijn dat ie dan naar een andere frame ga, waar plaats ik die code in dit script?
Dat kan, en wel zo:
code:
1
2
3
4
if(login.loginstatus == "true")
        {
               _root.myMovieClip.gotoAndPlay("myFrameLabel");
        }
Dit is echter af te raden aan gezien je op verschillende manieren kunt manipuleren, het is dus onveilig. Veiliger is een loadMovie() via een php-file met een referrer-check die een SWF laadt dat weer checkt of die _url van _root klopt.
(maar dat is momenteel misschien iets te hoog gegrepen)
alleen dit stukje snap ik nie helemaal

serveroutput.text += "\n"+login.misschien_een_redirect_variable; wat voor variable hoort daar dan? echo ofzo ?
Tja, dat was eigenlijk alleen bedoelt om je te laten zien wat er gebeurt, en om je een beetje inspiratie te geven ;)Bij "login.misschien_een_redirect_variable" is "login" het loadVars Object en "misschien_een_redirect_variable" is een variable naam in dat Object die op zijn beurt weer z'n naam en value in dit geval van login.php krijgt.
(zie de flashMX documentatie voor meer uitleg)
Verder nog dat create login field aan het begin, hoe kan ik die in het midden van dit scherm krijgen
Het lijkt me beter dat je al het actionscript boven "hier begint de gezelligheid" gewoon eruit knikkert en gewoon zelf die input-TextFields en de submitbutton in flash maakt (met de hand). Je moet wel de juiste namen overnemen natuurlijk.

groetjes,
Geetje
Pagina: 1