PDA

Просмотр полной версии : Нужна помощь в связке FLASH+PHP+MYSQL


Weather
08.05.2009, 22:44
Доброе время господа!
Помогите пожалуйста найти ошибку, всю голову сломал уже. Есть флэш в которой есть 2 input поля: логин (value: log) и пароль (value: psw), и button кнопка: submit. На кнопке висит такой вот скрипт
on (release) {
loadVariables("http://www.mYsite.ru/login.php", "_root", "POST");
}
Так теперь к PHP. Вот код в login.php
<?
session_start();
foreach ($_POST as $var => $value)
{
if ($var=="amp;log"){$log=$value;}
if ($var=="amp;psw"){$psw=$value;}
}
$log = htmlentities($log);
$psw = htmlentities($psw);
if(isset($submit) )
{
include ("../setup.php");
$log2=$log;
$result=mysql_query("select * from users where login='$log2'");
$row=mysql_fetch_array($result);
$base_login=$row[1];
$base_psw=$row[2];
if($log==$base_login && $psw==$base_psw && $log<>"")
{
$HTTP_SESSION_VARS['l']=$base_login;
Header("Location: index.php");
exit;
}
else
{
Header("Location: ../index.php");
exit;
}
}
?>


вроде бы все сделал по правилам, но не работает!

Что здесь не так, где накосячил? Может тогда кто-нибудь очень приближенный пример кинет? Очень наболевший вопрос во всем инете, но ничего похожего не нашел.
Спасибо.

Gradus0
08.05.2009, 23:32
А в чём ошибка то?
в php коде чё-то столько лишнего....

Weather
08.05.2009, 23:35
Ошибка в том что не работат все это! Тоесть мне надо во флэше в поля вписать пароль и имя, и если все это дело в базе числится (тоесть все ОК) то открыть новое окно!

wvxvw
08.05.2009, 23:45
if (isset($submit))
это условие никогда не выполнится... а вообще, что ПХП, что АС какие-то ископаемые из кунсткамеры... где вы это "чудо" отыскали?

Weather
09.05.2009, 00:00
Тогда может покажете как надо? Задача проста: вводим имя пароль, проверяем в базе, если ок то открываем новую страницу, если нет то просто сообщение типа НИФИГА

wvxvw
09.05.2009, 01:19
Ну... я даже не знаю... это самая банальная задача которая решается на ПХП, туториалов на эту тему ну просто очень много
http://www.google.com/#hl=en&q=php+login+script

Weather
09.05.2009, 01:42
просто странно почему мне не удается получить такое вот таким вот способом!
вообще было сделано изначально так: index.php в нем внутри встроен flash. Далее во флэше жму вход открывается новая страница (login.php), в которой поля ввода логина и пароля ну и кнопка отправки, типа могу код кинуть
<BODY bgColor=#000000 background="../image/bg3.gif" text=ea7500 >
<HTML><HEAD><TITLE>Index</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<LINK href="/image/style.css" type=text/css rel=stylesheet>
</HEAD>

<FORM name=form action=login_proc.php method=post>

<TBODY>
<TR><center><br><br><br><br>
<TD align=middle height=50><B><font color="#CCCCCC">Вход :</font></B></TD></TR>
<TR>
<TD vAlign=top align=middle>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR><br>
<TD align=middle>
<DIV>Для входа вы должны<br><A
href="../reg.php">Пройти регистрацию!</A></DIV></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=5 border=0>
<TBODY>
<TR>
<TD align=right><B>Логин</B></TD>
<TD><INPUT maxLength=16 size=17 name=log style=" border: 1px solid rgb(0,0,0)"></TD></TR>
<TR>
<TD align=right><B>Пароль</B></TD>
<TD><INPUT type=password maxLength=16 size=17 name=psw style=" border: 1px solid rgb(0,0,0)"></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD><INPUT type=hidden value=1 name=send><INPUT type=submit value=Войти name=submit></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD><A href="../lostpass.php">Забыли пароль?</A></TD></TR></TBODY></TABLE><BR></TD></TR>
<TR>
<TD align=middle height=25>
<A href="/index.php">Вернуться на главную!</A>
</TD></TR></TBODY></TABLE></FORM></BODY></HTML>



все очень просто!
тобишь когда вводим имя и пароль то попадаем на новую страницу, тоже в index.php, только в другой папке.

и из login.php как я понял принимаются данные тута login_proc.php
вот код его
<?
session_start();
foreach ($_POST as $var => $value)
{
if ($var=="amp;log"){$log=$value;}
if ($var=="amp;psw"){$psw=$value;}
}
$log = htmlentities($log);
$psw = htmlentities($psw);
if(isset($submit) )
{
include ("../setup.php");
$log2=$log;
$result=mysql_query("select * from users where login='$log2'");
$row=mysql_fetch_array($result);
$base_login=$row[1];
$base_psw=$row[2];
if($log==$base_login && $psw==$base_psw && $log<>"")
{
$HTTP_SESSION_VARS['l']=$base_login;
Header("Location: index.php");
exit;
}
else
{
Header("Location: ../index.php");
exit;
}
}
?>

я решил что было бы круче сделать все ето только во ak'ti без всяких там лишних открываний страниц!
Так вот как всетаки осуществить идею то?
Может поможете (если дело во времени, так может тогда скажете какое вознаграждение? :) )

wvxvw
09.05.2009, 18:55
Вы никогда не посылаете переменные с именами:
"amp;log" и "amp;psw" скорее всего вы этот код откуда-то плохо скопировали и "amp;" - это отвалившаяся часть от &amp;
но вообще более дурацкий способ проверить существование переменных в $_POST придумать сложно...
if (isset($_POST['psw'] && isset($_POST['log']))
{
# ваши действия
}
И, еще раз,
if (isset($submit))
никогда не выполнится, вы никогда не определяете эту переменную, поэтому в тело if'a вообще никогда не зайдет.
$HTTP_SESSION_VARS - сто лет назад deprecated
Header - аналогично, сейчас пишется со строчной буквы.
Зачем нужно это: $log2 = $log; - никому не понятно.
$result=mysql_query("select * from users where login='$log2'");
так делать нельзя ни в коем случае, это просто подарок для того, кто захочит сломать чего-нибудь в вашей базе данных. Для этого в глобальном плане существует mysql_real_escape(), но а вообще, короткие тексты лучше проверять регекспом на наличие нелегитимных символов.

Да и еще в придачу ко всему сверстать 2 строчки таблицами на кривом HTML1 (и то сомнительно как-то) и влепить туда AS1 флешку :)
Скажите, где вы такую гадость находите? Ну просто ведь поискать в гугле готовые решения - конечно, тоже много хлама, но все ж не на столько древнего...

Vas717
09.05.2009, 20:57
А вы уверены что у вас флэш отправляет и получает HTTP запросы ?)


var send_lv:LoadVars = new LoadVars();
var recive_lv:LoadVars = new LoadVars();

send_lv.login = 'userlogin';
send_lv.password = 'userpassword';
send_lv.sendAndLoad( httpUrl , recive_lv , 'POST' );

// ответ сервера если ок - то "response=true" / "response=false" если неудача

recive_lv.onLoad = function(success)
{
if (recive_lv.response == "true")
{
getURL ( gotoURL, "_self" );
// если проверка пройдена, переадресовывем на gotoURL
}
}



Добавлено через 16 минут
А уже далее на ПХП все просто

<?
$result_true = "response=true";
$result_false = "response=false";

$login = htmlstripslashes( htmlentities ( $_POST["login"] ) );
$password = htmlstripslashes( htmlentities ( $_POST["password"] ) );
// здесь за точность написания всторенных пхп методов не ручаюсь

if ( isset( $login ) && $login != "" && isset( $password ) && $password != "" )
{
include ("../setup.php");
// а надо ?

$result=mysql_query("select * from users where login='$login' && password='$password' LIMIT 0,1");
$row=mysql_fetch_array($result);
if ( is_array($row) )
{
print_r( result_true);
}
else
{
print_r( result_false);
}
}
else
{
print_r( result_false);
}
?>

Weather
10.05.2009, 00:33
getURL ( gotoURL, "_self" );
// если проверка пройдена, переадресовывем на gotoURL - это значит путь к моей странице?

Vas717
10.05.2009, 22:18
именно