PDA

Просмотр полной версии : помогите сделать конкурс


Doom123
20.04.2007, 14:44
Привет... я не програмист но хочу создать конкурс на сайте

вот написал самую простейшию логин форму помогите сделать её более безопасной но также чтоб могли узнать логин и пароль


<?php
if ($cook > 3) {echo "<center><h1>ОШИБИТСЯ МОЖНО ТОЛЬКО 4 РАЗА!!!</h1></center>";} else {
$eror = 0;
$cook = 0;
$b = "Проверка ваших знаний";
if (isset($_REQUEST['do'])) do {
if ($_REQUEST['nm'] != "somename") { $eror = 1; break; }
if ($_REQUEST['ps'] != "somepass") { $eror = 1; break; }
header( 'refresh: 3; url=/Troy.php' );
echo '<h1>Редирект на строницу с трояном через 3 секунды...</h1>';
exit();
}
while (0);
if ($eror) {
$b = "Вы ниче не знаете блин";
if (isset($_COOKIE['cook'])) $cook = $_COOKIE['cook'];
$cook++;
setcookie("cook", $cook, 0x7fffffff, "/"); }
?>
<html>
<center><font color="red" size=4><b><? echo $b; ?></b></font><br>
<form action="<?=$_SERVER['REQUEST_URI']?>" method=post>
Имя: <input type=text name="nm"><br>
пароль: <input type=password name="ps"><BR>
<input type=submit name="do" value="Давай">
</form></center>
</html>
<?}?>


если говорю глупости пните меня по бошке))

Rebz
20.04.2007, 14:49
чтобы могли узнать логин и пароль.. юзай JavaScript
quest.antichat.net - 20 levels
возможно то, что тебе нужно ;)

je0n
20.04.2007, 14:55
короче вот скрипт, который я сам все время для таких целей юзаю. Пароль и логин хранятся в БД. Подключаюсь к БД я через

require("db.php"); //просто подключение к БД и все


а куки ставлю и убираю через JavaScript. Пароли в БД храняться в md5. Корочь вот весь код:

<?php
require("db.php");
if((isset($_POST['login']))&&($_POST['login']!="")&&(isset($_POST['password']))&&($_POST['password']!=""))
{
$login=mysql_escape_string($_POST['login']);
$password=md5(mysql_escape_string($_POST['password']));
$query="select * from users where (login='$login' && password='$password');";
$db=mysql_query($query);
if(($db) && (mysql_num_rows($db)==1))
{
$val=mysql_fetch_assoc($db);
if($val['activate']!="activated")
{
echo "
<script language='JavaScript'>
alert('Ожидается подтверждение регистрации');
document.location='index.php?r';
</script>
";
}
else
{
echo "
<script language='JavaScript'>
document.cookie='uid=$val[uid]';
document.cookie='pass=$val[password]';
alert('Вы успешно вошли в систему аукциона');
document.location='index.php?r';
</script>
";
}
}
else
{
echo "
<script language='JavaScript'>
alert('Неправильное имя пользователя или пароль');
document.location='index.php?r';
</script>
";
}
}
?>


Ну а чтобы юзер видел что он активировался в системе проверяй вот такой функцией стоят куки или нет:

require("db.php");

function IsLoged()
{
if((isset($_COOKIE['uid']))&&($_COOKIE['uid']!="")&&(isset($_COOKIE['pass']))&&($_COOKIE['pass']!=""))
{
$uid=$_COOKIE['uid'];
$password=$_COOKIE['pass'];
$query="select * from users where (uid=$uid && password='$password');";
$db=mysql_query($query);
if(mysql_num_rows($db)==1)
{
$val=mysql_fetch_assoc($db);
if($val['activate']==="activated")return "YES";else return "WAIT_FOR_ACTIVATION";
}
else return "NO";
}
else return "NO";
}



ну а дальше уже сам лезешь в свою БД и отображаешь инфу о юзере

Doom123
20.04.2007, 14:59
Спасибо!

DRON-ANARCHY
20.04.2007, 15:07
require("db.php"); //просто подключение к БД и всеопять же... а ниче, если я зарегаюсь как system($_GET['cmd']) или вроде того?

SMiX
20.04.2007, 15:46
Дык в том файле просто код подключения к базе - это не база, а просто mysql_connect/pconnect с данными для логина в бд.

je0n
20.04.2007, 16:06
ну да, вот что там в db.php:

<?php
$db_user="root";
$db_host="localhost";
$db_pass="";
$db_name="auction";
if(!mysql_connect($db_host,$db_user,$db_pass))
{
echo "Не могу подключиться к базе данных. Обратитесь к администратору.";
exit;
}
mysql_select_db($db_name);
?>


Извиняюсь, что там везде про аукцион написано :)... Просто сейчас именно его пишу и куски оттуда выдираю :)

nc.STRIEM
20.04.2007, 20:10
while (0);

жесть! это типа попытка обфускации кода?

>>je0n

$password=md5(mysql_escape_string($_POST['password']));

здесь mysql_escape_string() впринципе не нужна))

а вот тут:

function IsLoged()
{
if((isset($_COOKIE['uid']))&&($_COOKIE['uid']!="")&&(isset($_COOKIE['pass']))&&($_COOKIE['pass']!=""))
{
$uid=$_COOKIE['uid'];
$password=$_COOKIE['pass'];
$query="select * from users where (uid=$uid && password='$password');";
$db=mysql_query($query);
if(mysql_num_rows($db)==1)
{
$val=mysql_fetch_assoc($db);
if($val['activate']==="activated")return "YES";else return "WAIT_FOR_ACTIVATION";
}
else return "NO";
}
else return "NO";
}

какраз надо! sql-inj

je0n
20.04.2007, 20:46
спасибо ;) !!!большое!!!

вот бл*ть!!! Почти каждый скрипт был уязвим через куки!

Doom123
21.04.2007, 17:02
жесть! это типа попытка обфускации кода?


ну эту часть примера я брал с книжки по программированию на пхп5 написаной создателем проекта денвер...