- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
$s_name=$_POST['s_name'];
$f_name=$_POST['f_name'];
$m_name=$_POST['m_name'];
$login=$_POST['login'];
$password1=$_POST['password1'];
$password2=$_POST['password2'];
$post_id=$_POST['post'];
$query="SELECT person.login as login FROM person ORDER BY ID";
$res=Select($query);
$flag=false;
While(OCIFetch($res))
{
$login_base=text($res,'LOGIN');
if ($login==$login_base)
{
$flag=true;
break;
}
}
If($flag)
{
echo "</br><center><h3>Такой логин уже существует...придумайте еще что-нибудь!</center></h3></br>";
?>
<center><h4><a href="index.php?menu=reg">Назад</a></h4><center>
<?
}
if (!$flag)
{
if ($password1==$password2)
{
If (($login!='') and ($password1!='') and ($s_name!='') and ($f_name!='') and ($m_name!=''))
{
.... Ну и дальше добавение и все такое))
ммм.. альтернативные способы защиты от инъекций в запросах???)))
mrbig66 12.02.2010 22:55 # 0
И зачем делать всю выборку, а после шерстить массив?
Нечем процессор занять?
Достаточно сделать SELECT COUNT(*)
Это намного быстрее будет.
1_and_0 13.02.2010 00:02 # +1
В сам запрос в базу не поступает никакой информации из вне, а после просматривается массив средствами пхп, но зато 100% гарантия от sql-инъекции)))
Ну, понятно что говнокод в чистом виде, и все должно организовываться по другому, с этим никто и не спорит)
Это код не мой,а у автора спрашивать бессмысленно, так автор плохо знаком и с PHP и с SQL..., и делалось это ради того что бы "курсовик хоть как либо работал", и курсовая работа была зачтена, код при проверки не смотрелся, в базе было не более 10 записей на каждую таблицу, сервер в универе мощный, итог: "нам похрен какие ресурсы мы тратим, это не наши проблемы!", вот как то так все печально...
xXx_totalwar 13.02.2010 06:04 # 0
1_and_0 13.02.2010 10:18 # 0
guest 13.02.2010 18:40 # 0
guest 13.02.2010 18:58 # +0.2
1) выбираем безопасно все логины из базы
2) проверяем, нет ли среди выбранного желаемого
3) если есть, запрещаем
4) ???
5) ПРОФИТ
то его бы было критически важно правильно дополнить в месте создания логина. На кой такие титанические старания насмарку, если будет неэкранированный инсерт?
Итак, доработка.
И никакой злобный хакер не зарегистрируется под ником с иньекцией!
mrbig66 13.02.2010 23:43 # 0
И еще: цикл лучше оформить так
Иначе count будет пересчитываться каждую итерацию и в конце концов начнутся проблемы с быcтродействием.
Кроме того, есть еще функция in_array().
1_and_0 14.02.2010 00:00 # 0
guest 14.02.2010 11:24 # 0
Вы бы ещё сказали, что ветвь if ($id_login) не нужна, агрегируется else, или вообще безо всего, потому что в предыдущей строке уже exit;
И что die; exit в данном случае излишне.
Это таки была шутка юмора, тэйк ит изи.