В общем сначала это был вопрос — что флэшка передает на сервер вместе с запросом.
Покопавшись, выяснил, что она передает cookies

Например, имеем сайт http://pavelk.ru

1. Пользователь на него заходит и в стандартной форме ввода имени/пароля входит на сайт. Приэтом в кукисы занесём SessionId
И имеем флэшку, напирмер для просмотра видео только зарегистрированным на нашем сайте пользователям.

2. Чтобы узнать зареген юзверь или нет, флэшка запрашиват скрипт php, к примеру login.php на нашем хосте.

Приэтом в скрипт флэшка передает кукисы хоста, который она запрашивает.

А мы уже получим из кукисов идентификатор сессии, а из нее имя пользователя и пароль. Если всё ОК, то вернем положительный ответ флэшке.

Если даже флэшка будет на другом хосте, то пользватель должен будет зарегистрироваться на нашем что бы просмотреть.

Так же можно запретить загрузку со других хостов, или разрешить только с доверенных.
Флэшка так же передает Referer т.е. откуд она посылает запрос. В php получить его можно так: $_SERVER[‘HTTP_REFERER’] и уже сравнивать с идеалом.

Рабочий пример:

1. для начала идем по этой ссылке, Обидно?
2. поэтому следует залогинится тутЛогин: user Пароль: pass
3. и снова попытайтесь пройти по первой ссылке. Пустили?)
4. можно еще сходить по этой ссылке. Это пример на другом хосте можно нажать кнопку выход по ссылке из второго пункта и снова попробовать открыть флэшки

Меньше слов, ближе к делу:

[cc lang=»actionscript3″]

package {
import flash.text.TextFieldAutoSize;
import flash.text.TextField;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.display.MovieClip;

/**
* @author Pavelk
*/
public class Main extends MovieClip {
//—CONST—//
private const host:String=’http://pavelk.ru/projects/flashautorization/login.php?islogin’; //—параметр запроса islogin говорит что мы у серверного скрипта спрашиваем залогинен чел или нет
//—VARS—//
private var tf:TextField=new TextField();
//—BTGIN—//

public function Main() {
addChild(tf);
tf.border=true;
tf.autoSize= TextFieldAutoSize.LEFT;
status(‘Ждёмс…’);
//—запрашиваем серверный скрипт—//
var req:URLLoader=new URLLoader();
req.load(new URLRequest(host));
req.addEventListener(Event.COMPLETE, onLoginAnswer);
}

private function status(s:String):void {
tf.text=s;
tf.x=stage.stageWidth/2-tf.textWidth/2;
tf.y=stage.stageHeight/2-tf.textHeight/2;
}

private function onLoginAnswer(e:Event):void {
if (e.target.data==»yes») {
status(‘Я залогинен.Могу почитать анекдот: \r\r’+
‘Она: ответь мне, только честно, да или нет, хорошо? \r’+
‘Он: спрашивай \r’+
‘Она: почему мужчины смеются над блондинками? \r’+
‘Он: да’);
} else {
status(‘Обидно, я не залогинен.’+e.target.data);
}
}

}
}[/cc]

А вот уже серверный:

[cc escaped=»true» lang=»php»]

<?php

$login=»user»;
$password=»pass»;

if (isset($_GET[‘islogin’])) { //—если параметр запроса islogin есть, флэшка спрашивает, проверяем залогинены мы или нет
$sid=$_COOKIE[‘sid’]; //—попытаемся из печенюшек узнать значение sid
if (isset($sid)) { //—если оно действительно есть, то
session_id($sid); //—устанавливаем идентификатор сессии
session_start(); //—стартуем сессию
//—теперь можно и сравнить логин/пароль—//
if (($login==$_SESSION[‘login’])&&($password==$_SESSION[‘password’])) {
echo ‘yes’;
}
}
die(0); //—завершим работу скрипта
}

if (isset($_GET[‘tologin’])) { //—если параметр tologin значит пользователь хочет залогинится на сайте
if (($_GET[‘login’]==$login)&&($_GET[‘password’]==$password)) { //—если пришедший логин и пароль правильны, то
session_start(); //—стартуем сессию
setcookie («sid», session_id());
$_SESSION[‘login’]=$_GET[‘login’];
$_SESSION[‘password’]=$_GET[‘password’];
echo ‘<b>ЗАЛОГИНИЛИСЬ!<b>’;
echo «<meta http-equiv=’refresh’; content=’5; url=http://pavelk.ru/projects/flashautorization/login.php’> «; //—перенаправление
die(0); //—завершим работу скрипта
} else {
echo ‘<b>НЕПРАВИЛЬНОЕ ИМЯ ПОЛЬЗОВАТЕЛЯ ИЛИ ПАРОЛЬ</b>’;
}
}

session_start();

if (isset($_GET[‘exit’])) { //—если пользователь хочет разлогинится
session_unset();
echo «<meta http-equiv=’refresh’; content=’0; url=http://pavelk.ru/projects/flashautorization/login.php’> «; //—перенаправление
}

//—проверим заодно, вдруг пользователь уже залогинен…

if (($_SESSION[‘login’]==$login)&&($_SESSION[‘password’]==$password)) {
echo ‘
<form id=»formlogin» action=»http://pavelk.ru/projects/flashautorization/login.php» method=»GET»>
<input type=»submit» id=»exit» name=»exit» value=»Может разлогинится?» ></input>
</form>
<b>’;
die(0); //—завершим работу скрипта
}

//—выведем форму ввода логина и пароля

?>

<html>
<head>
<title>Флешевая авторизация</title>
<style>
#formlogin {
position: absolute;
width: 150px;
height: 120px;
left:50%;
top:50%;
margin-left: -75px;
magin-top: -60px;
}
</style>
</head>
<body>

<form id=»formlogin» action=»http://pavelk.ru/projects/flashautorization/login.php» method=»GET»>
<center>
<b>Логин:</b><br>
<input type=»text» id=»login» name=»login»></input> <br>
<b>Пароль:</b><br>
<input type=»text» name=»password» id=»password»></input> <br><br>
<input type=»submit» name=»tologin» id=»tologin» value=»Залогинится»></input>
</center>
</form>

</body>
</html>[/cc]