- 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!=''))
{
.... Ну и дальше добавение и все такое))
ммм.. альтернативные способы защиты от инъекций в запросах???)))
И зачем делать всю выборку, а после шерстить массив?
Нечем процессор занять?
Достаточно сделать SELECT COUNT(*)
Это намного быстрее будет.
В сам запрос в базу не поступает никакой информации из вне, а после просматривается массив средствами пхп, но зато 100% гарантия от sql-инъекции)))
Ну, понятно что говнокод в чистом виде, и все должно организовываться по другому, с этим никто и не спорит)
Это код не мой,а у автора спрашивать бессмысленно, так автор плохо знаком и с PHP и с SQL..., и делалось это ради того что бы "курсовик хоть как либо работал", и курсовая работа была зачтена, код при проверки не смотрелся, в базе было не более 10 записей на каждую таблицу, сервер в универе мощный, итог: "нам похрен какие ресурсы мы тратим, это не наши проблемы!", вот как то так все печально...
1) выбираем безопасно все логины из базы
2) проверяем, нет ли среди выбранного желаемого
3) если есть, запрещаем
4) ???
5) ПРОФИТ
то его бы было критически важно правильно дополнить в месте создания логина. На кой такие титанические старания насмарку, если будет неэкранированный инсерт?
Итак, доработка.
И никакой злобный хакер не зарегистрируется под ником с иньекцией!
И еще: цикл лучше оформить так
Иначе count будет пересчитываться каждую итерацию и в конце концов начнутся проблемы с быcтродействием.
Кроме того, есть еще функция in_array().
Вы бы ещё сказали, что ветвь if ($id_login) не нужна, агрегируется else, или вообще безо всего, потому что в предыдущей строке уже exit;
И что die; exit в данном случае излишне.
Это таки была шутка юмора, тэйк ит изи.