Последнее обновление:
November 28, 2017

Есть мысль... Жми, напиши!
Что имеем: Постов : 171 Авторов: 1 Категорий: 38

Проверка авторизации пользователя, через сайт

В общем сначала это был вопрос — что флэшка передает на сервер вместе с запросом.
Покопавшись, выяснил, что она передает 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]

Views :

2822

Проверка авторизации пользователя на сайте из ActionScript

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

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

1. Пользователь на него заходит и в стандартной форме ввода имени/пароля входит на сайт. Приэтом в кукисы заносится SessionId — чтобы потом проверить можно было.

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

2. Чтобы узнать зареген юзверь или нет, флэшка запрашиват скрипт php, к примеру login.php
Приэтом в скрипт флэшка передает кукисы с хоста, с которого ее просматривает пользователь.
Т.е. если она загружена с http://pavelk.ru то она передаст кукисы установленные им. А в кукисах у нас SessionId и уже login.php проверяем залогинен или нет и возвращает результат.
Если флэшка будет на другом хосте, то SessionId там уже не будет, а подделать его сложновато.

Здесь тока изложил идею. Если кому нужно могу написать готовым кодом. Сейчас времени мало.
Реализация идеи.

Views :

896

Изменение размеров swf из кода.

[SWF(backgroundColor=»#21211F», frameRate=»35″, width=960, height=750)]

Писать перед объявлением главного класса.

Views :

1011

Письмо Пьера Безухова Наташе Ростовой. 1807 г.

Дорогая Наташа, в тот великолепный летний вечер,
когда я встретил вас на балу у императора,
я понял, что всю жизнь хотел иметь
жену, такую же прекрасную, как и вы. Я глядел на
вас весь вечер, не отрываясь ни на минуту,
всматривался в малейшее движения,пытался заглянуть
в каждое, пусть самое маленькое, отверстие
вашей души. Я ни на секунду не отводил глаз от
вашего великолепного тела. Но увы, все мои усилия,
привлечь ваше внимание были безуспешны.Я думаю,что
будут лишь пустой тратой времени
все мольбы и обещания с моей стороны.
Ибо я знаю, что у меня слишком маленький
статус.Достоен вас лишь королевскогого двора постоянный
член. Но все же хочу вас заверить, что
вы самое прекрасное существо на свете.
Я никогда, никогда не встречал такой у-
дивительной женщины,сделавшей так много для нашей
родины. И лишь ваша преогромнейшая
скромность скрывает это. Моё сердце разрывает
грудь, заставляет желать вас!

Наташа, я люблю вас!

Пьер Безухов
21.X.1807

А теперь читаем с самого начала и через строчку.

Views :

1929