[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужна консультация по скрипту
TOK
Нужна ваша консультация по этому коду:
PHP
<?php
 session_start
();
 include_once(
"include/connectdb.php");
 include(
'include/user_register/uni-auth.php');
 
?>
 <html>
 <meta http-equiv="refresh" content="2; url=http://www.test1.ru/sigrannost.php">
 <?php
 
if (USER_LOGGED){
 if (empty(
$_POST ['namekomand']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['namekomand']))
 {echo 
'<h1 align="center">Имя команды не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
     else if (empty(
$_POST['2Gk']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST['2Gk']))
     {echo 
'<h1 align="center">id 1-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
         else if (empty(
$_POST['2Ld']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['2Ld']))
       {echo 
'<h1 align="center">id 2-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
           else if (empty(
$_POST['2Cd1']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['Cd1']))
           {echo 
'<h1 align="center">id 3-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
             else if (empty(
$_POST['2Cd2']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['2Cd2']))
             {echo 
'<h1 align="center">id 4-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
                 else if (empty(
$_POST['2Rd']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['2Rd']))
                 {echo 
'<h1 align="center">id 5-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
                     else if (empty(
$_POST['2Lm']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['2Lm']))
                     {echo 
'<h1 align="center">id 6-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
                         else if (empty(
$_POST['2Cm1']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['2Cm1']))
                         {echo 
'<h1 align="center">id 7-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
                             else if (empty(
$_POST['2Cm2']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['2Cm2']))
                             {echo 
'<h1 align="center">id 8-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
                                 else if (empty(
$_POST['2Rm']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['2Rm']))
                                 {echo 
'<h1 align="center">id 9-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
                                     else if (empty(
$_POST['2Cf1']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['2Cf1']))
                                     {echo 
'<h1 align="center">id 10-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
                                         else if (empty(
$_POST['2Cf2']) || preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/"$_POST ['2Cf2']))
                                         { echo 
'<h1 align="center">id 11-го игрока не задано или ЗАДАНО НЕВЕРНО!!!</h1>';}
                                             else {
 
$NameKomand substr(htmlspecialchars($_POST ['namekomand']),0,20);
 
$Gk htmlspecialchars($_POST ['2Gk']);
 
$Ld htmlspecialchars($_POST ['2Ld']);
 
$Cd1 htmlspecialchars($_POST ['2Cd1']);
 
$Cd2 htmlspecialchars($_POST ['2Cd2']);
 
$Rd htmlspecialchars($_POST ['2Rd']);
 
$Lm htmlspecialchars($_POST ['2Lm']);
 
$Cm1 htmlspecialchars($_POST ['2Cm1']);
 
$Cm2 htmlspecialchars($_POST ['2Cm2']);
 
$Rm htmlspecialchars($_POST ['2Rm']);
 
$Cf1 htmlspecialchars($_POST ['2Cf1']);
 
$Cf2 htmlspecialchars($_POST ['2Cf2']);
 
$S1 htmlspecialchars($_POST ['2S1']);
 
$S2 htmlspecialchars($_POST ['2S2']);
 
$S3 htmlspecialchars($_POST ['2S3']);
 
$S4 htmlspecialchars($_POST ['2S4']);
 
$S5 htmlspecialchars($_POST ['2S5']);
 
//задаём уникальное имя для таблицы с матчами: имя пользователя + имя его команды
 
$USER_TABLE_KOMAND $UserName.$NameKomand;
 
// создаём таблицу 
 
$CT_UTK="CREATE TABLE IF NOT EXISTS `$USER_TABLE_KOMAND` (id INT NOT NULL AUTO_INCREMENT, id1 TEXT, id2 TEXT, id3 TEXT, id4 TEXT, id5 TEXT, id6 TEXT, id7 TEXT, id8 TEXT, id9 TEXT, id10 TEXT, id11 TEXT, id12 TEXT, id13 TEXT, id14 TEXT, id15 TEXT, id16 TEXT, PRIMARY KEY ( `id` ))";
 
mysql_query ($CT_UTK) or die (mysql_error());
 
// добавляем запись в таблицу
 
$II_UTK "INSERT INTO `$USER_TABLE_KOMAND` (id1, id2, id3, id4, id5, id6, id7, id8, id9, id10, id11, id12, id13, id14, id15, id16) 
 VALUES("
.$Gk.", ".$Ld.", ".$Cd1.", ".$Cd2.", ".$Rd.", ".$Lm.",".$Cm1.", ".$Cm2.",".$Rm.",".$Cf1.", ".$Cf2.", .$S1."".$S2.",".$S3."".$S4.",".$S5.")";
 mysql_query ($II_UTK) or die (mysql_error());
 mysql_close($dbcnx);
 echo '<h1 align="
center">Ваш состав сохранён!</h1>';}}
  
 else{
 echo '<h1 align="
center">Вы не авторизованы!</h1><br>
         <h2 align="
center">Зарегистрируйтесь или войдите в систему под своим Логином!!!</h2>';
 }

1. Обязательно ли обрабатывать каждый элемент массива $_POST[] функциями htmlspecialchars и preg_match или можно сразу весь массив?
2. У меня есть 5-ть необязательных полей $_POST[2S1] $_POST[2S2] $_POST[2S3] $_POST[2S4] $_POST[2S5]
Как их внести в таблицу, если они пустые?
3. Надо ли ещё как-то усиливать защиту?
4. Есть ли варианты укоротить код?




Спустя 5 минут, 41 секунда (16.10.2009 - 18:27) Gabriel написал(а):
еммм а разве перед занесением в базу ненужно использовать mysql_real_escape_string() вместо htmlspeialchars() ?
и в запросе кавычку потерял

Спустя 1 минута, 41 секунда (16.10.2009 - 18:29) Kuliev написал(а):
TOK
Код просто поражает (смесь индусского с китайским)!
Цитата

1. Обязательно ли обрабатывать каждый элемент массива $_POST[] функциями htmlspecialchars и preg_match или можно сразу весь массив?


Нет
Цитата

2. У меня есть 5-ть необязательных полей $_POST[2S1] $_POST[2S2] $_POST[2S3] $_POST[2S4] $_POST[2S5]
Как их внести в таблицу, если они пустые?


Так же как и заносите только не забывайте защищаться от SQL инъекций
Цитата
4. Есть ли варианты укоротить код?

Есть!

Спустя 1 час, 30 минут, 24 секунды (16.10.2009 - 19:59) TOK написал(а):
Цитата (Gabriel @ 16.10.2009 - 15:27)
еммм а разве перед занесением в базу ненужно использовать mysql_real_escape_string() вместо htmlspeialchars() ?
и в запросе кавычку потерял

Изменил код на
PHP
<?php
$NameKomand 
substr(iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['namekomand'])),0,20);
$Gk iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Gk']));
$Ld iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Ld']));
$Cd1 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Cd1']));
$Cd2 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Cd2']));
$Rd iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Rd']));
$Lm iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Lm']));
$Cm1 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Cm1']));
$Cm2 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Cm2']));
$Rm iconv("UTF-8""WINDOWS-1251",  mysql_real_escape_string($_POST ['2Rm']));
$Cf1 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Cf1']));
$Cf2 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2Cf2']));
$S1 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2S1']));
$S2 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2S2']));
$S3 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2S3']));
$S4 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2S4']));
$S5 iconv("UTF-8""WINDOWS-1251"mysql_real_escape_string($_POST ['2S5']));


to Kuliev

Ваш ответ просто поражает (смесь индусского с китайским)!

1. Что нет?
а)нет необязательно обрабатывать каждый элемент
cool.gif нет нельзя весь массив сразу

2. Пустая переменная в мою таблицу не заносится, SQL выдаёт ошибку и ругается, поэтому я и спрашиваю как решить эту проблемму.

3. Если есть варианты, назовите пожалуйста. Я не прошу за меня писать код, вы скажите направление


Спустя 48 минут, 21 секунда (16.10.2009 - 20:47) Kuliev написал(а):
TOK
Цитата

2. Пустая переменная в мою таблицу не заносится, SQL выдаёт ошибку и ругается, поэтому я и спрашиваю как решить эту проблему.


PHP
$sql = ("INSERT INTO `table` VALUE ('','".mysql_real_escape_string($_POST['a'])."','".mysql_real_escape_string($_POST['b'])."')");
$result mysql_query($sql) or die (mysql_error() ."<br/>"$sql);


Вот так попробуй!

Спустя 1 час, 2 минуты, 36 секунд (16.10.2009 - 21:50) sergeiss написал(а):
Следующий код и есть "китайский", т.е. когда делаются однотипные действия smile.gif
Цитата (TOK @ 16.10.2009 - 20:59)
$Gk = iconv("UTF-8", "WINDOWS-1251", mysql_real_escape_string($_POST ['2Gk']));
$Ld = iconv("UTF-8", "WINDOWS-1251", mysql_real_escape_string($_POST ['2Ld']));
$Cd1 = iconv("UTF-8", "WINDOWS-1251", mysql_real_escape_string($_POST ['2Cd1']));
$Cd2 = iconv("UTF-8", "WINDOWS-1251", mysql_real_escape_string($_POST ['2Cd2']));
$Rd = iconv("UTF-8", "WINDOWS-1251", mysql_real_escape_string($_POST ['2Rd']));
$Lm = iconv("UTF-8", "WINDOWS-1251", mysql_real_escape_string($_POST ['2Lm']));


Вот для всей этой лабуды можно сделать одну функцию smile.gif
Типа такого чтоб получилось:

PHP
$Ld=convert_str'2Ld' );
$Cd1=convert_str'2Cd1' );

А уже в функции convert_str делаем все нужные преобразования. Тогда, в случае изменения алгоритма обработки, это делается только в одном месте, не надо искать и модифицировать все строки.

Спустя 10 минут, 11 секунд (16.10.2009 - 22:00) twin написал(а):
За одну только перекодировку из нормального стандарта в местечковую WINDOWS-1251 уже расстреливать надо. biggrin.gif

Спустя 1 час, 1 минута, 22 секунды (16.10.2009 - 23:01) TOK написал(а):
Цитата (twin @ 16.10.2009 - 19:00)
За одну только перекодировку из нормального стандарта в местечковую WINDOWS-1251 уже расстреливать надо. biggrin.gif

Так Ajax требует за что меня то растреливать:)

Спустя 2 минуты, 35 секунд (16.10.2009 - 23:04) Kuliev написал(а):
Цитата (TOK @ 17.10.2009 - 01:01)
Цитата (twin @ 16.10.2009 - 19:00)
За одну только перекодировку из нормального стандарта в местечковую WINDOWS-1251 уже расстреливать надо.  biggrin.gif

Так Ajax требует за что меня то растреливать:)

blink.gif

Спустя 11 минут, 37 секунд (16.10.2009 - 23:16) sergeiss написал(а):
Цитата (TOK @ 17.10.2009 - 00:01)
Так Ajax требует за что меня то растреливать:)

Так ты и страницы сделай в UTF-8. Тогда не потребуется преобразований "туды-сюды".
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.